Notification of JMS Enabled Queue

I have successfully managed to issue a callback when a queue is set up with a
payload of type Message_typ as object ( subject VARCHAR2(30), text
VARCHAR2(80)). However i need to issue a callback whenever a message is
received by a jms enabled queues with payload types of
a) sys.aq$_jms_text_message
b) sys.aq$_jms_bytes_message
Is this possible using dbms_aq.register and if so could you please give me an
example.
Thanks in advance

Destinations can be created dynamically.
check:
http://edocs.bea.com/wls/docs61/jms/implement.html#1189112
viswa
"Rakesh Jaiswal" <[email protected]> wrote:
>
I want to knwo whether runtime binding the JMS Objects(Connection Factory
& Destinations)
is possible in WebLogic server?
According to Weblogic it only binds JMS Object at the startup of the server
using
a Startup class?
Thanks a million

Similar Messages

  • Programming for Using JMS Distributed Queues

    Hi,
    Does anyone know specifically how your meant to write java code in order to fully make use of JMS Distributed queues. At the moment we have a 3rd party app, which I don't think is written correctly, as it always locks up after using a distributed queue, or a consumer is at 0 on one of the members of the distributed queue, when it should always should be constant and uniform.
    Its as if their code hasn't been written correctly.

    Distributed queue applications are encouraged to leverage WebLogic MDBs, which automatically ensure that consumers are attached to each distributed queue member, and to write applications in a way that has no dependency on which JVM a particular message is processed.
    At a guess, the third party product is setting up a consumer on one member of the distributed Q, while messages are being produced to the other member. If this assumption is true, here are some thoughts:
    * Consider using a single Q for the third party product's usage instead of a distributed queue. Configuring a distributed queue is not adding any high availability, as the product is expecting all messages to pin to the same Q instance.
    * Producers and consumers load-balance independently, but, when "affinity" and "load balance" are both configured to false on a Producer's connection factory, producers will have a tendency to load balance to the member that hosts more than one consumer. This might help somewhat, but my guess is that it won't help in all cases -- for example, after a restart I'm not sure that there's a guarantee that the consumer won't load balance to the "wrong" member (the member that has no messages).
    * It might help to enable "queue forwarding" on the distributed queue configuration. This feature automatically forwards messages trapped in a destination that has no consumers to a queue that has consumers. "Queue forwarding" is not compatible with WebLogic's "unit-of-order" feature, but it's likely the third party product isn't using this feature. Queue forwarding also imposes a performance penalty - but whether you notice the difference depends on whether you have high performance requirements.
    Hope this helps,
    Tom
    Edited by: TomB on Mar 9, 2011 6:28 PM

  • Get data from a JMS XML queue and save it in a file

    Hi,
    Here I come with my issue again.
    I'm trying to test a JMS XML implementation with ODI 10.1.3.4.0 and my target is a single delimited file.
    I made simple things, my XML contains the following code :
    +<?xml version="1.0" encoding="UTF-8"?>+
    +<test><id>456</id><value>789</value></test>+
    In the target file, I specified that I wanted a header line, the id and the value, separated by a tab.
    I send only one message, before executing the ODI interface or package. The queue is persistant. There's no problem from the queue, I manage to read JMS messages with a little program I made.
    The result is also simple : there's no data in the file (not even the header), though it's well created by ODI, and there's no error in the opertor, it's as everything went well.
    Here is the settings I did in ODI :
    Topology : JMS XML Queue config
    Name : JMSXML_TEST
    Technology : JMS XML Queue
    I've a user and password set.
    JNDI Auth : simple
    The user and password are the same as above.
    JNDI protocole : not defined
    JNDI Driver : org.jnp.interfaces.NamingContextFactory
    JNDI URL : jnp://localhost:1099/?re=test&d=<DTD_FILE>&s=JMSXML_TEST_SCH&JMS_DESTINATION=queue/TestQueue1
    The connection test is OK.
    Model
    The JMS XML model is reversed from the DTD.
    There is only one datastore named TEST with an ID and VALUE columns, and other columns usefull to ODI.
    The target is a file represented by a datastore also named TEST with ID and VALUE columns.
    Project
    I created an interface with the following configurations :
    - The staging area is the sunopsis engine,
    - The source datastore and target datastore are the two described above,
    - The LKM is JMS XML to SQL, the IKM is SQL to File Append
    - The JMS_COMMIT option is set to yes
    - The SYNCHRO_JMS_TO_XML is set to yes
    - I added manually a NEXTMESSAGETIMEOUT in the options list because it was missing
    - The IKM settings are all set to yes (INSERT, TRUNCATE, GENERATE_HEADER).
    I also created a package containing this interface.
    Everything is done in the global context.
    Everything is installed locally on my computer : the program sending the messages, the JMS provider and ODI.
    The problem is I don't know where the problem is and neither ODI.
    In the operator, there is 0 insert and the error code is 0.
    Thanks in advance for any insights.
    Marie
    Edited by: Marie123456 on 21 août 2012 10:36

    Hi,
    Since I still have problems on this subject, I would like to share on how it progresses.
    Currently I have a problem of timeout in step "Truncate XML Schema" with the URL that I mentioned above.
    The exact error is the following : 7000 : null : com.sunopsis.sql.l: Oracle Data Integrator TimeOut : connection with URL [...]
    The connection test is still OK.
    I tried to increase the value in the user's pref but there's no change.

  • Flex with JMS Topic/Queue for Asynchronous messaging

    I have been working on Flex and JMS integration using Data
    Services for Asynchronous messaging. I am able to do this
    successfuly. Now I am in need to do the same without using the Data
    Services piece.
    For doing this I have done the following ......
    I have created a JMS Webservice in the Oracle JDeveloper 10G
    along with Webservice Client.I am able to Listen to JMS Topic/Queue
    ( this has been created in the Oracle AS ) using this Webservice
    and receive the messages from this JMS Topic/Queue
    Asynchronously.....
    But If I need to use the Flex Client , I am not able to
    Communicate with this Webservice to listen to the JMS Topic/Queue.
    Did any one in this forum tried to communicate with JMS
    Topic/Queue without using Flex Data Service.If so please share your
    inputs.

    Here is my confusion (I'm using J2EESDK1.3).
    On a local server I did the following
    j2eeadmin -addJmsFactory jms/RemoteTCF topic -props url=corbaname:iiop:mars#mars
    In the app client running on the local server I had the code
    ic = new InitialContext();
    // JNDI lookup. The resource factory ref points to the
    // Remote Connection Factory I registered
    tcf = (TopicConnectionFactory)ic.lookup("java:comp/env/jms/TopicConnectionFactory");
    // The env ref points to jms/Topic of the local server
    pTopic = (Topic)ic.lookup("java:comp/env/jms/PTopic");
    So I'm assuming that I'm using a connection factory that connect to mars and a Topic on the local box.
    On remote server mars, I deployed a MDB which use
    jms/TopicConnectionFactory and jms/Topic. But I'm thinking this jms/Topic and the one I used on the local box are not the same one. Right? Then how could the app client and the MDB share messages?
    Some of my explanation I don't if it makes sense or not.
    ConnectionFactory is a way to tell what kind of connection it could generate (Queue, Topic, Durable etc) and Where the connection would go to (local or remote).'
    As for as destination, I'm not sure. How could two server share one Topic?

  • JMS Queue Vs JMS replyTo Queue name for Receiver JMS channel.

    HI,
    I am working with receiver JMS adapter and using the protocol WbeSphereMQ JMS provider.
    Here I could not able to figure out the difference between the following parameter.
    Target tab JMS Queue  and Processing tab-JMS replyTo Queue name.
    I tries the find the same in help.sdn.com but here also not able to find correct information .
    for Processing tab -JMS replyTo Queue name Parameter it is written that "Specify the name of the queue to which the responses are to be sent."
    But what is the use of Target tab JMS Queue Parameter. No information is given against this parameter.
    http://help.sap.com/saphelp_nw04/helpdata/en/10/b1b4c8575a6e47954ad63438d303e4/frameset.htm
    regards,
    Navneet.

    the initial JMS Queue is the queue you will connect too.
    i guess SAP felt an explanation to that was not required....
    SAP does not even bother to explain it here in the specific link to JMS-Provider-Specific Settings (for Webshpere although it does for SonicMQ!).
    http://help.sap.com/saphelp_nw04/helpdata/en/c1/739c4186c2a409e10000000a155106/frameset.htm
    I do not use the "ReplyTo" in my current scenarios.

  • JMS ReplyTo Queue Name parameter in the receiver JMS communication channel

    Hi All,
    Can any please explain the use of JMS ReplyTo Queue Name parameter in the receiver JMS communication channel?
    Thanks
    Karthik.

    Hi karthik,
    JMS ReplyTo Queue Name parameter  is used for Specify the name of the queue to which the responses are to be sent.
    Thanks
    Govind.

  • JMS dynamic queue time out

    I need to create a JMS dynamic queue and wait to listen in that queue for say 5 secs. Can anyone explain how this works. i.e I want to know what will happen after 5 secs. Will I receive a JMS Message object which is null or it will throw some exception. How do I know that it has timed out.I need to implement some logic based on the fact that the message has timed out.

    Why can't use a timer whereby onTimeOut simply compare the present time and the time the listener starts listening to the dynamic queue. If this is above 5seconds then do what soever you intend doing
    Ivo

  • Examples for JMS Error Queue implementation in BPEL

    Hi ,
    Please anyone provide me examples for JMS error queue implementaion in BPEL.
    Regards
    Narsi p

    Hi Narsi p,
    Please remember to mark answers accordingly... Helpful or correct, following the forum rules
    https://forums.oracle.com/forums/ann.jspa?annID=330
    Can you tell us more about what are you trying to achieve here?
    If you are just trying to configure an error queue to put the messages that couldn't be delivered, you can do this in weblogic directly.
    Configuring an Error Destination for Undelivered Messages
    http://docs.oracle.com/cd/E17904_01/web.1111/e13727/manage_apps.htm#JMSPG254
    Cheers,
    Vlad

  • Oracle JMS Advanced Queuing

    Problems with Oracle JMS Advanced Queuing
    Hello,
    We have build an application using Advanced Queuing (database version 10.2.0.1.0). Everything works fine using PL/SQL. But when we try to send in messages through the Oracle JMS interface messages with less then 4000 bytes are stored in the queu table but the content of the message is not stored in one of the user data attributes.
    Messages larger then 4000 bytes result in the following error:
    oracle.jms.AQjmsException: JMS-204: Er is een fout opgetreden in de AQ JNI-laag.
    at oracle.jms.AQjmsError.throwEx(AQjmsError.java:311)
    at oracle.jms.AQjmsProducer.enqueue(AQjmsProducer.java:1323)
    at oracle.jms.AQjmsProducer.send(AQjmsProducer.java:692)
    at oracle.jms.AQjmsProducer.send(AQjmsProducer.java:465)
    at nl.detailresult.aqadapter.test.OracleQueueSendTextMsgTest.testOracleQueuePlus4000(OracleQueueSendTextMsgTest.java:125)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
    [Linked-exception]
    oracle.jms.AQjmsException: ORA-00942: table or view does not exist
    As far as I can see we have done everything according to the books but does anyone have a clue what we might have missed?

    Hi,
    Have you found a solution to this? I am running into similar issue with SOA Suite using OJMS queues.
    Regards,
    Rajesh

  • JMS Default queue not found

    I do not have any knowledge of JMS and I am getting couple of warnings of this kind . Can anyone please explain it to me.
    <WSEE>Warning: JMS queue 'weblogic.wee.DefaultQueue' is not found, as a result, Web Service async responses via jms transport is not supported. If the target service uses JMS transport, the responses will not be able to come back.<JmsQueueListener.connect:227>

    Hi,
    This WARNING can be ignored ... Or if you dont want to see any such message next time..then please apply "-Dweblogic.wsee.skip.async.response=true"
    Details:
    Async web service support is not fully configured. The async response web service uri for this server was not fully deployed because the JMS reliability queue was not defined/deployed: queueName. The server will periodically retry completing the deploy for the service. This message can usually be ignored unless there are async web service applications. To completely disable async web service support, thus avoiding this message, set -Dweblogic.wsee.skip.async.response=true.
    More Details:
    http://download.oracle.com/docs/cd/E15523_01/apirefs.1111/e14397/WebService.html
    Thanks
    Jay SenSharma
    http://jaysensharma.wordpress.com (WebLogic Wonders Are Here)

  • Jms problem - queue not found

    Hi
    I have a simple bpel process that's supposed to read a message from a queue and put a message back on the same queue using the JmsAdapter. When I deploy the process, the log says that java:comp/resource/ojmstest/Queues/demoQueue can not be found:
    <2006-05-28 18:36:56,751> <INFO> <default.collaxa.cube.activation> <JMSAdapter::Inbound> Created new managed connection for JMS user jmsuser
    <2006-05-28 18:36:57,011> <WARN> <default.collaxa.cube.activation> <JMSAdapter::Inbound> JMSMessageConsumer_init: Retrying connection; attempt #1
    <2006-05-28 18:38:57,785> <WARN> <default.collaxa.cube.activation> <JMSAdapter::Inbound>
    ORABPEL-12135
    ERRJMS_ERR_CR_QUEUE_CONS.
    Error while creating Queue consumer:.
    Please examine the log file to determine the problem.
         at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:346)
         at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.createConsumer(JMSMessageConsumer.java:214)
         at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.init(JMSMessageConsumer.java:158)
         at oracle.tip.adapter.jms.inbound.JmsConsumer.init(JmsConsumer.java:115)
         at oracle.tip.adapter.jms.JmsEndpoint.run(JmsEndpoint.java:113)
         at oracle.tip.adapter.fw.jca.work.WorkerJob.go(WorkerJob.java:51)
         at oracle.tip.adapter.fw.common.ThreadPool.run(ThreadPool.java:267)
         at java.lang.Thread.run(Thread.java:534)
    Caused by: oracle.jms.AQjmsException: JMS-190: Queue java:comp/resource/ojmstest/Queues/demoQueue not found
         at oracle.jms.AQjmsError.throwEx(AQjmsError.java:346)
         at oracle.jms.AQjmsSession.createQueue(AQjmsSession.java:1296)
         at oracle.tip.adapter.jms.JMS.JMSDestination.getQueue(JMSDestination.java:83)
         at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:330)
         ... 7 more
    In my global application.xml, I have:
    <resource-provider class="oracle.jms.OjmsContext" name="ojmstest">
    <description>OJMS/AQ</description>
    <property name="url" value="jdbc:oracle:thin:@eros.goldi.no:1521:orcl"/>
    <property name="username" value="jmsuser"/>
    <property name="password" value="jmsuser"/>          
    </resource-provider>
    In oc4j-ra.xml, I have:
    <connector-factory location="eis/aqjms/Queue" connector-name="Jms Adapter">
    <config-property name="connectionFactoryLocation" value="java:comp/resource/ojmstest/QueueConnectionFactories/myQCF"/>
    <config-property name="factoryProperties" value=""/>
    <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
    <config-property name="isTopic" value="false"/>
    <config-property name="isTransacted" value="true"/>
    <config-property name="username" value="jmsuser"/>
    <config-property name="password" value="jmsuser"/>
    </connector-factory>
    I have checked that demoQueue exists in the database.
    Any ideas?
    André

    Hi
    I managed to get it to work now on a different database.
    I probably didn't grant all the necessary rights to my jmsuser.
    Thanks,
    André

  • Monitoring jms distributed queue on WebLogic 8.1 via MBeans

    Good afternon,
    please do you have someone java code (only basic enough !) for jmx monitoring jms distributed queue on weblogic 8.1 (Monitor all Active JMS Destinations and there Consumers, Consumers High, Consumers Total and so on..). Think should be used JMSDestinationRuntimeMBean interface but have no idea how write the code.
    Thank you for any hint
    Lada Dvorak

    This is a simple jmx sample code based on WLS 8.x
    import javax.naming.Context;
    import java.util.Set;
    import java.util.Iterator;
    import java.io.PrintWriter;
    import java.io.FileOutputStream;
    import weblogic.jndi.Environment;
    import weblogic.management.MBeanHome;
    import weblogic.management.WebLogicMBean;
    import weblogic.management.WebLogicObjectName;
    public class ListAllMBeans{   
         public static void main(String args[]) {       
              String url = "t3://localhost:7001";
              String username = "weblogic";
              String password = "weblogic";
              PrintWriter pWriter = null; // print without buffering
    try {            //Obtaining an MBeanHome Using JNDI           
                   Environment env = new Environment();
                   env.setProviderUrl(url);
                   env.setSecurityPrincipal(username);
                   env.setSecurityCredentials(password);
                   Context ctx = env.getInitialContext();
                   MBeanHome home = (MBeanHome)ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
    Set allMBeans = home.getAllMBeans();
                   System.out.println("Size: " + allMBeans.size());
                   for (Iterator itr = allMBeans.iterator(); itr.hasNext(); ) {              
                        WebLogicMBean mbean = (WebLogicMBean)itr.next();
                        WebLogicObjectName objectName = mbean.getObjectName();
                        pWriter = new PrintWriter(new FileOutputStream("JMXType.txt", true), true);
                        pWriter.println(objectName.getName() + " is a(n) " + mbean.getType());
                        //System.out.println(objectName.getName() + " is a(n) " + mbean.getType());
              }catch(Exception e){           
                   System.out.println(e);
    I hope this will be helpful to you.

  • Does jms distributed queue support automatic service migration?

    As the migration document of Weblogic mentioned, the jms distributed queue can be manually migrated, but the document doesn't talk about automatic migration of jms distributed queue. Does jms distributed queue support automatic service migration? Anybody can help me? Thanks a lot.

    When you look at configuring JMS, you do something like:
    Create a JMS server that will contain one or more JMS destinations and will live on a particular server instance.
    Next you create a JMS module and target it to a cluster. Within the module you create a distributed queue (destination).
    Note that it is the JMS server which is the so-called pinned service. For pinned services you can configure migratable targets
    the way you want it (http://download.oracle.com/docs/cd/E13222_01/wls/docs81/jms/config.html#1056368)

  • JMS Message Queue - stuck in

    I am on SOA SUITE 11.1.17
    I have a jms queue set up and am able to successfully send messages to it using the SOA JMS Adapter.  I am able to succesfully listen to a queue using a JMS adapter in a different project.
    However, here when I try to "listen" to the queue using a java program, the message is "received" in my java program and processed as it should be.  The java program is running in a while loop, so it stays running.
    On the queue, when the java program reads it, the message is moved to the "Messages Pending" column.  When I kill the java program, the message is returned to the "Messages Current"
    Would anyone have any ideas about this?  We have an existing java based program isn't properly "closing" the message.
    I tried:
    1.  placing msg.acknowledge() in the code, since the documentation states that messages that are in "Messages Pending" have been read, but not acknowledged or committed -- but this does nothing.
    2.  Setting the expiration on the message to 1, but that is a hack.  I would rather fix the problem than use a hack.
    Anyone have any ideas what is wrong?
    Thank you,
    Stuart
    import java.io.IOException;
    import java.io.InputStreamReader;
    import javax.jms.Connection;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageListener;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    public class JMSListenAndRespond extends JMSQueueHandler implements MessageListener {
      private Session jmsSession = null;
      private MessageConsumer jmsMessageConsumer = null;
      private Connection jmsConnection = null;
      int counter = 1 ;
      public static void main(String[] args) throws Exception {
        InputStreamReader commandBuffer = null;
        char command = '\0';
          // first listen for any messages
          JmsDataObject q = new JmsDataObject();
          q.setJmsCF("jms/TestConnectionFactory");
          q.setJmsQueue("jms/TestJMSQueue");
          q.setServerPwd("welcome1");
          q.setServerLogin("weblogic");
          q.setUrl("t3://localhost:7101");
          q.setJmsMsg("na -- we are listinging...");
        JMSListenAndRespond lis = new JMSListenAndRespond();
         lis.consumeMessage(q);
        System.out.println("(type q to exit at any time...)\n");
        try {
          // Now just loop, waiting for messages until user types 'q' to quit
          commandBuffer = new InputStreamReader(System.in);
        while (!(command == 'q')) {
           try {
              command = (char)commandBuffer.read();
              System.out.println("Command: "+command);
              lis.stopListening();
            } catch (IOException e) {
              System.err.println("I/O Exception: ");
              e.printStackTrace();
           } //while
        } finally {
                lis.stopListening();
          lis.stopListening();
       public void stopListening() {
        try {
          if (jmsMessageConsumer != null) {
            jmsMessageConsumer.close();
          if (jmsSession != null) {
            jmsSession.close();
          if (jmsConnection != null) {
            jmsConnection.close();
        } catch (JMSException e) {
          System.err.println("Couldn't properly close all resources.\n");
          e.printStackTrace();
      private void prepareToConsumeMessage() {
        // create JMS connection, session, consumer and register listener - then start session
            try {
          // create connection
          jmsConnection = getJmsConnectionFactory().createConnection();
          // create session
          jmsSession =   jmsConnection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
          jmsMessageConsumer = jmsSession.createConsumer(getJmsDestination());
          // register a message listener (onMessage)
          jmsMessageConsumer.setMessageListener(this);
          // initiate connection - make sure to register your listener first or you might lose messages
          jmsConnection.start();
          System.out.println("\n...listening for message!\n");
        } catch (JMSException e) {
          System.err.println("Problem initializing JMS session");
          e.printStackTrace();
          System.exit(-1);
         * onMessage
         * The callback function invoked upon message reception
      public void onMessage(Message msg) {
        try {
          String msgText;
          if (msg instanceof TextMessage) {
            msgText = ((TextMessage)msg).getText();
            // this method expects a CSV string with the following makeup:
            // firstName,lastName,gender,birthdate,address,city,zipcode,state,insurancePolicyId
            String messageId = msg.getJMSMessageID();
          // code to process goes here.....
          } else {
            // if message is not a TextMessage, attempt a conversion to string
            System.out.println("\n** NEW MESSAGE (" + msg.getClass().getName() +
                               "):\n" +
                msg.toString());
        } catch (JMSException e) {
          e.printStackTrace();
      public void consumeMessage(JmsDataObject q ) {
        initializeJndiProperties(q);
        initializeJNDIandCF(q.getJmsQueue());
        prepareToConsumeMessage();
    import java.util.Properties;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    public abstract class JMSQueueHandler {
      protected void initializeJNDIandCF(String destinationQueueName) {
        // initialize JNDI context and lookup connection factory and destination
        try {
          // Initialize JNDI context
          jndiContext = new InitialContext(jndiProperties);
        } catch (NamingException e) {
          e.printStackTrace();
        try {
          // lookup JMS connection factory in JNDI
          jmsConnectionFactory =
              (ConnectionFactory)jndiContext.lookup(jndiProperties.getProperty("factory.name"));
          // lookup JMS destination in JNDI
          jmsDestination = (Destination)jndiContext.lookup(destinationQueueName);
        } catch (NamingException e) {
          System.err.println("Problem during the JNDI lookup\n");
          e.printStackTrace();
          System.exit(-1);
      public void initializeJndiProperties(JmsDataObject qdo ) {
        // set JNDI properties
        jndiProperties.put("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory");
        jndiProperties.put("java.naming.provider.url", qdo.getUrl() );
       // jndiProperties.put("java.naming.security.principal", NAMING_PRINCIPAL);
        jndiProperties.put("java.naming.security.principal", qdo.getServerLogin() ) ;
        //  jndiProperties.put("java.naming.security.credentials", NAMING_CREDENTIAL);
        jndiProperties.put("java.naming.security.credentials", qdo.getServerPwd() );
        //jndiProperties.put("factory.name", JMS_CONNECTION_FACTORY);
        jndiProperties.put("factory.name", qdo.getJmsCF() );
      //protected static final String NAMING_PROVIDER_URL = "t3://localhost:7101";
    //protected static final String NAMING_PRINCIPAL = "weblogic";
    // protected static final String NAMING_CREDENTIAL = "welcome1";
    // protected static final String JMS_CONNECTION_FACTORY = "jms/patientsJmsCF";
    // protected static final String JMS_CONNECTION_FACTORY = "jms/TestConnectionFactory";
      ConnectionFactory jmsConnectionFactory = null;
      Destination jmsDestination = null;
      InitialContext jndiContext = null;
      Properties jndiProperties = new Properties();
      public void setJmsConnectionFactory(ConnectionFactory jmsConnectionFactory) {
        this.jmsConnectionFactory = jmsConnectionFactory;
      public ConnectionFactory getJmsConnectionFactory() {
        return jmsConnectionFactory;
      public void setJmsDestination(Destination jmsDestination) {
        this.jmsDestination = jmsDestination;
      public Destination getJmsDestination() {
        return jmsDestination;

    Thanks for the reply. There are no errors what so ever regarding MDB issues. Not in the weblogic / console logging, nor in the logging of the component itself.
    The MDB itself is setup to have 16 concurrent beans per component deployment. The component is clustered over 4 server instances. So there are quite some concurrent MDBs running. However since the messages get stuck for weeks eventhough the component only has bursts of messages to process, one would think that the the stuck messages would be processed whenever the component has some spare time (which it has a lot between the bursts).
    Therefor i doubt it has anything to do with too little MDBs running. But frankly I have no idea what's wrong.

  • How  we handle JMS Ditributed queues in PI ....

    Hi
    i have a scenario where i have to pick up the message from distributed queues ...
    so how i configure the sender JMS adapter to pick up the message from the distributed queues...
    if its possible then Queues name should be the same in diffrent destinations..?
    S V

    Have you read thi blog?
    /people/roberto.viana/blog/2008/10/09/working-with-jms-distributed-destinations-in-sap-pi
    Regrds,
    Roberto

Maybe you are looking for