AQ - MDB on WebLogic

Hi,
I have written a java startup class to bind the AQ connection factory and AQ queue to the JNDI tree of a WebLogic server and have deployed an MDB on WebLogic to listen to the AQ. The MDB is working fine and is continuously listening to the Oracle AQ hosted on a Solaris box.
But, the problem is that no matter how many instances of the MDB are deployed in the pool, onMessage() method of just one MDB is called repeatedly i.e. only single instance of MDB consumes AQ messages no matter how many instance are in pool or how may threads are available in queue.
The MDB is deployed on WebLogic server 7 sp 4 on a Win 2000 box and has 5 inctances in the pool. I am using OCI driver for the connection to the AQ. Oracle 9.2.0 is on a Solaris box and the IP address and the machine name of the JMS client (i.e. windows machine) is included in the /etc/hosts of the Solaris box.
Any help towards achieving concurrency in consumption of messages from Oracle AQ would be great.
Regards,
Diptanshu

Using Message Bridge between AQ & WLS queue, and making the MDB listen to the WLS queue has solved this issue.
Regards,
Diptanshu

Similar Messages

  • Deploying EJB 3.0 MDB on Weblogic 10.3

    My MDB is as follows:
    package test;
    import javax.ejb.ActivationConfigProperty;
    import javax.ejb.MessageDriven;
    import javax.jms.Message;
    import javax.jms.MessageListener;
    @MessageDriven(mappedName = "mdb01/queue01",
              activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") })
    public class MDB implements MessageListener {
         public void onMessage(Message message) {
              System.out.println("Received Message: " + message);
    While deploying it on WebLogic 10.3 I get the below error:
    javax.naming.NameNotFoundException: While trying to lookup 'mdb01.queue01' didn't find subcontext 'mdb01'. Resolved ''; remaining name 'mdb01/queue01'
         at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
         at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:247)
         at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
         at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
         at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:393)
         at javax.naming.InitialContext.lookup(InitialContext.java:392)
    Please advise what configurations I should do in WebLogic in order to deploy this MDB.

    on WebLogic console, go to the "general" tab of your server's page, and click on "view JNDI tree". there you can see whether your queue has been deployed to the server.
    if not there, verify that the queue has been properly targeted. it can be tricky, and I suggest you to use subdeployments.

  • Deploying MDB on WebLogic server 8.1 (SP2) with Tibco JMS

    Hi,
              I am currently facing problems to deploy and run my MDB on weblogic connecting it to Tibco JMS as the foreign jms server.
              <br>
              <b>My ejb-jar.xml:</b>
              <br>
              <message-driven>
                        <ejb-name>DeAMMsgFactors</ejb-name>
                        <ejb-class>com.db.deam.mdb.DeAMMsgFactors</ejb-class>
                        <transaction-type>Container</transaction-type>
                        <message-driven-destination>
                             <destination-type>javax.jms.Topic</destination-type>
                        </message-driven-destination>
                   </message-driven>
                   </enterprise-beans>
                   <assembly-descriptor>
                        <security-role>
                                  <role-name>soiadmin</role-name>
                   </security-role>
                   </assembly-descriptor>
              <br>
              <b>weblogic-ejb-jar.xml:</b>
              <br>
              <weblogic-enterprise-bean>
              <ejb-name>DeAMMsgFactors</ejb-name>
              <message-driven-descriptor>
              <pool>
              <max-beans-in-free-pool>20</max-beans-in-free-pool>
              <initial-beans-in-free-pool>10</initial-beans-in-free-pool>
              </pool>
              <destination-jndi-name>WLFactorsTopic</destination-jndi-name>
              <connection-factory-jndi-name>WLFactorsCF</connection-factory-jndi-name>
              <jms-polling-interval-seconds>10</jms-polling-interval-seconds>
              </message-driven-descriptor>
              <transaction-descriptor>
              <trans-timeout-seconds>100000</trans-timeout-seconds>
              </transaction-descriptor>
                   </weblogic-enterprise-bean>
                   <security-role-assignment>
              <role-name>soiadmin</role-name>
              <principal-name>jmsusername</principal-name>
                   </security-role-assignment>
              <br>
              <b>Error:</b>
              weblogic.ejb20.WLDeploymentException: [EJB:011014]The Message-Driven EJB failed while creating a JMS Connection. The err
              or was:
              javax.jms.JMSSecurityException: invalid name or password.
              javax.jms.JMSSecurityException: invalid name or password
              at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:395)
              at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:581)
              at com.tibco.tibjms.TibjmsConnection.<init>(TibjmsConnection.java:1743)
              at com.tibco.tibjms.TibjmsTopicConnection.<init>(TibjmsTopicConnection.java:35)
              at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:92)
              at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:121)
              at com.tibco.tibjms.TibjmsTopicConnectionFactory.createTopicConnection(TibjmsTopicConnectionFactory.java:66)
              at weblogic.ejb20.internal.JMSConnectionPoller.getConnection(JMSConnectionPoller.java:607)
              at weblogic.ejb20.internal.JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:1783)
              at weblogic.ejb20.internal.JMSConnectionPoller.connectToJMS(JMSConnectionPoller.java:1087)
              at weblogic.ejb20.internal.JMSConnectionPoller.trigger(JMSConnectionPoller.java:970)
              at weblogic.time.common.internal.ScheduledTrigger.run(ScheduledTrigger.java:243)
              at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:229)
              at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:223)
              at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:50)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              at weblogic.ejb20.internal.JMSConnectionPoller.getConnection(JMSConnectionPoller.java:638)
              at weblogic.ejb20.internal.JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:1783)
              at weblogic.ejb20.internal.JMSConnectionPoller.connectToJMS(JMSConnectionPoller.java:1087)
              at weblogic.ejb20.internal.JMSConnectionPoller.trigger(JMSConnectionPoller.java:970)
              at weblogic.time.common.internal.ScheduledTrigger.run(ScheduledTrigger.java:243)
              at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:229)
              at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:223)
              at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:50)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              [JMSConnectionPoller] : ** Connect attempt for: WLFactorsTopic was: unsuccessful
              <br>
              <u><b>Any help would be appreciated.</b></u>
              <br>
              Thanks,<br>
              Kiran Kumar MV.

    I was able to use MDB to receive msg from a Tibco JMS queue. This is what you have to do: using WL console,
              - set up a foreign JMS Server. Make sure you specify the following correctly: jndi initial context factory (tibjms class), tibjms server url, username/password
              - create a foreign connection factory (if you are using CMT, make sure you create a XA compliant connection factory in Tibco JMS server). It seems that you have to specify URL again when creating XA connection factory in Tibjms.
              - create a foreign destination (queue/topic)
              In ejb-jar.xml and weblogic-ejb-jar.xml,
              - use resource-ref (wrapper) to specify the foreign connection factory
              - use resource-env-ref to specify the foreign destination.
              - In MDB ejb-jar.xml, specify destination-jndi-name and connection-factory-jndi-name.
              See Message Driven Beans chapter in Programming WebLogic EJB doc.
              Good luck.

  • Using Session EJB from MDB in Weblogic 11G

    I am having trouble with what should be a very simple operation. I have created an MDB and deployed it successfully on the Weblogic managed server. Then in a separate application, I created a Stateless session bean that I would also like to call from the MDB. My SSB deploys and works fine. I added an @EJB annotation to the MDB so I could instantiate and access the SSB from the MDB. In order to resolve the interface class in jDeveloper, I went to my MDB project properties under libraries and classpath and added the jar file for my ejb.
    When I try to redeploy the MDB, I get a java.lang.ClassNotFoundException on the SSB interface class.
    Is there an example somewhere of how to properly create and configure all of the deployment packages and refereneces I need on the weblogic server? The SSB is a common service that going to be called by a lot of other MDBs in my system. Optimally, what I would like to do is to deploy the ejb-client.jar as a shared library so all of my MDBs can use it.
    Thanks for any pointers!

    I am using jDeveloper 11g, so both my MDB and SLSB were built and deployed using the wizzards in the IDE.
    The MDB is inside of an ejb-jar and deployed to a managed server. I am doing my development on a box that is resource challenged so I setup my WLS on a different box. There is an admin server (AdminServer) and a separate soa server (soa_server1) on which I have installed all of the SOA Suite packages.
    The SLSB represents a primary service for the system I am building. Service1SessionBean is deployed targeted to soa_server1. The MDB is also deployed to soa_server1. At least it was until I tried to add the EJB reference. Now it won't deploy at all.
    I would like to avoid packaging the Service1SessionBean client jar in with the MDB because there are several other EJBs that will also need to call the service. I would like to deploy the client jar as a shared library on soa_server1 so that any EJB artifacts that need to call it may do so, I have tried to deploy the client jar as a shared library using jDeveloper but when it deploys, it seems to be under the name "j2ee-app" rather than Service1SessionBean.

  • Problems in startup class (MDB on Weblogic 7.0 / IBM MQ)

    Hello friends,
              I am trying to communicate with IBM MQ through Weblogic 7.0 SP2 and
              using MDB.
              This is a bit strange but I had to reinstall Weblogic and I tried to
              deploy the Startup class . However I am getting this error:
              The WebLogic Server did not start up properly.
              Exception raised:
              java.lang.NoSuchMethodError
              at com.ibm.mq.jms.services.ConfigEnvironment.<clinit>(ConfigEnvironment.java:173)
              at java.lang.Class.forName0(Native Method)
              I am totally at loss to understand this as it was working before I
              reinstalled the Weblogic. (Maybe I am skipping something which I had
              earlier done :-().
              All help appreciated.
              Thanks in advance,
              Milan Doshi
              

    Since your simply running an MQ client in a startup class, you should
              be able to reproduce the issue without WebLogic in the mix. Once
              that is done, contact IBM for support. I continue to suspect
              a command-line problem - IBM is expecting something on
              the java JVM command-line that is missing.
              Tom
              Milan Doshi wrote:
              > Hello Tom,
              >
              > Thanks for the reply. I did ensure that all the relevant IBM jars are
              > in the classpath but I still get that error.Infact the claspath was
              > allready in place.
              >
              > Please give me your suggestions as I am totally at sea.
              >
              >
              > <May 23, 2003 5:31:17 PM EDT> <Emergency> <WebLogicServer> <000342>
              > <Unable to initialize the server: Fatal initialization excepti
              > on
              > Throwable: java.lang.NoSuchMethodError
              > java.lang.NoSuchMethodError
              > at com.ibm.mq.jms.services.ConfigEnvironment.<clinit>(ConfigEnvironment.java:173)
              > at java.lang.Class.forName0(Native Method)
              > at java.lang.Class.forName(Class.java:115)
              > at com.ibm.mq.jms.MQConnection.<clinit>(MQConnection.java:149)
              > at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:142)
              > at com.jpmc.ivr.middle.util.MQJMSStartup.startup(MQJMSStartup.java:112)
              > at weblogic.t3.srvr.StartupClassService.invokeStartup(StartupClassService.java:158)
              > at weblogic.t3.srvr.StartupClassService.invokeClass(StartupClassService.java:139)
              > at weblogic.t3.srvr.StartupClassService.access$0(StartupClassService.java:130)
              > at weblogic.t3.srvr.StartupClassService$1.run(StartupClassService.java:102)
              > at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:780)
              > at weblogic.t3.srvr.StartupClassService.invokeStartupClass(StartupClassService.java:97)
              > at weblogic.t3.srvr.StartupClassService.initialize(StartupClassService.java:60)
              > at weblogic.t3.srvr.ServerLifeCycleList.initialize(ServerLifeCycleList.java:54)
              > at weblogic.t3.srvr.T3Srvr.initialize1(T3Srvr.java:782)
              > at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:594)
              > at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:282)
              > at weblogic.Server.main(Server.java:32)
              >
              > ***************************************************************************
              > The WebLogic Server did not start up properly.
              >
              > Thanks and regards,
              >
              > Milan Doshi
              >
              > Tom Barnes <[email protected]> wrote in message news:<[email protected]>...
              >
              >>Make sure that your MQ client classes are in
              >>the classpath used to boot the WL JVM. If you
              >>re-installed WL, and are using the installation's
              >>WL boot scripts rather than your own, the JVM
              >>will have a vanilla classpath - which, of course,
              >>won't include IBM classes.
              >>
              >>Tom
              >>
              >>Milan Doshi wrote:
              >>
              >>>Hello friends,
              >>>
              >>>I am trying to communicate with IBM MQ through Weblogic 7.0 SP2 and
              >>>using MDB.
              >>>
              >>>This is a bit strange but I had to reinstall Weblogic and I tried to
              >>>deploy the Startup class . However I am getting this error:
              >>>
              >>>
              >>>The WebLogic Server did not start up properly.
              >>>Exception raised:
              >>>java.lang.NoSuchMethodError
              >>> at com.ibm.mq.jms.services.ConfigEnvironment.<clinit>(ConfigEnvironment.java:173)
              >>> at java.lang.Class.forName0(Native Method)
              >>>
              >>>I am totally at loss to understand this as it was working before I
              >>>reinstalled the Weblogic. (Maybe I am skipping something which I had
              >>>earlier done :-().
              >>>
              >>>All help appreciated.
              >>>
              >>>Thanks in advance,
              >>>
              >>>Milan Doshi
              >>
              

  • Re: AQ/Referenceable Objects work with MDB on WebLogic

              Great work! So you don't have to touch any of Oracle's classes, correct?
              Do you have time to document the whole thing and post it here, including the source
              code of all your custom classes?
              Eric Ma
              "Diptanshu Parui" <[email protected]> wrote:
              >
              >Forgot to add an important point.
              >The extended classes have to in the oracle.jms package (not necessarily
              >in the
              >same jar) to extend the Oracle classes. And I have used aqapi13.jar.
              >
              >Dips
              >
              >"Diptanshu Parui" <[email protected]> wrote:
              >>
              >>Hi,
              >>
              >>After days of work on getting to integrate Oracle's AQ with WebLogic
              >>I have managed
              >>to get to a solution without making changes to the Oracle's AQ API.
              >>
              >>Eric Ma had managed to provide a solution about an year back changing
              >>Oracle's
              >>API and making the AQjmsConnection, AQjmsSession, AQjmsQueueConnectionFactory
              >>& AQjmsDestination NOT implement Referenceable. This solution worked
              >>with WebLogic
              >>but meant that this cannot be deployed on Production environment.
              >>
              >>There was a myth that WebLogic's JNDI didn't provide support to Referenceable
              >>objects like Oracle's AQjmsQueueConnectionFactory etc.
              >>
              >>This myth has been broken. Referenceable object CAN be bound and looked
              >>up from
              >>WebLogic's JNDI provided right Factory classes are written and the correct
              >>constructor
              >>for Reference is used in the getReference method of the Referenceable
              >>implementation.
              >>
              >>In case of Oracle's objects, I wrote classes extending AQjmsQueueConnectionFactory
              >>& AQjmsDestination. In the extended classes, I wrote toString method
              >>and set private
              >>String variable.
              >>This string variable is just special character separated concat of all
              >>parameters
              >>used to call the constructor of the extended class.
              >>Then, in the getReference method of the extended class, I used the following
              >>constructor
              >>of Reference.
              >>
              >>return new Reference( DipsAQQueueConnectionFactory.class.getName(),
              >new
              >>StringRefAddr("value",
              >>value), DipsAQConnectionFactory.class.getName(), null);
              >>
              >>DipsAQQueueConnectionFactory is my class extending AQjmsQueueConnectionFactory
              >>and DipsAQConnectionFactory is the factory class for DipsAQQueueConnectionFactory.
              >>The object value passed in the StringRefAddr above is nothing but the
              >>toString
              >>of the extended class which was stored in the private String variable.
              >>In the
              >>factory class, the string is taken out the StringRefAddr and stripped
              >>to get individual
              >>parameters which were separated by special characters. Once, the individual
              >>parameters
              >>are got back, the Factory class instantiates the Referenceable object
              >>and returns
              >>it back.
              >>
              >>Another important point is in the extended class DipsAQQueueConnectionFactory
              >>I wrote this method
              >> public QueueConnection createQueueConnection() throws JMSException
              >>
              >> {
              >>     return createQueueConnection("user","user");
              >> }     
              >>
              >>And then using a startup class I bound the DipsAQQueueConnectionFactory
              >>& DipsAQDestination
              >>Referenceable objects to WLS. The MDB deployed on WLS was made lookup
              >>for the
              >>bound QF & Q and it started reading AQ messages.
              >>
              >>Few other points to note.
              >>I have kept the user & pwd of WLS same as DB.
              >>I have used OCI driver.
              >>
              >>Please feel free to raise further queries/suggestions.
              >>
              >>Dips
              >
              

              Eric,
              This is the relevant part of the config.xml you were looking for.
                   <JMSDistributedQueue JNDIName="DQueue1" Name="DQueue1" Targets="ClusterTwo" Template="DQueue1">
                        <JMSDistributedQueueMember JMSQueue="Queue1" Name="DQM1"/>
                        <JMSDistributedQueueMember JMSQueue="Queue2" Name="DQM2"/>
                   </JMSDistributedQueue>
                   <JMSBridgeDestination
                        ConnectionFactoryJNDIName="AQJMSConnectionFactory" ConnectionURL="t3://ip:port"
                        DestinationJNDIName="AQJMSQueue" Name="AQJMSDest"/>
                   <JMSConnectionFactory JNDIName="ConnectionFactory" Name="ConnectionFactory"
                        ServerAffinityEnabled="false" Targets="IAServer,ClusterTwo" XAConnectionFactoryEnabled="true"/>
                   <JMSBridgeDestination ConnectionFactoryJNDIName="ConnectionFactory" ConnectionURL="t3://ip:port"
                        DestinationJNDIName="DQueue1" Name="Dest"/>
                   <MessagingBridge Name="MB1" QualityOfService="Duplicate-okay"
                        SourceDestination="AQJMSDest" TargetDestination="Dest"
                        Targets="IAServer,MS1 (migratable),MS2 (migratable),ClusterTwo"/>
              No, I haven't used Oracle's OC4J 10g's AQJMS XA TX support classes.
              cheers!
              Dips
              "Eric Ma" <[email protected]> wrote:
              >
              >Dips:
              >
              >Can you post your config.xml here to show how you set up WLS messaging
              >bridges?
              >
              >Also, have you played with OC4J 10g's AQJMS XA TX support classes?
              >
              >Eric
              >
              >"Diptanshu Parui" <[email protected]> wrote:
              >>
              >>The sample code is now available at
              >>http://dev2dev.bea.com/codelibrary/code/startupclass.jsp
              >>
              >>cheers,
              >>Dips
              >>
              >>
              >>"Diptanshu Parui" <[email protected]> wrote:
              >>>
              >>>Yes, no need to touch Oracle's code at all.
              >>>
              >>>I will post the whitepaper/code soon.
              >>>
              >>>
              >>>"Eric Ma" <[email protected]> wrote:
              >>>>
              >>>>Great work! So you don't have to touch any of Oracle's classes, correct?
              >>>>
              >>>>Do you have time to document the whole thing and post it here, including
              >>>>the source
              >>>>code of all your custom classes?
              >>>>
              >>>>Eric Ma
              >>>>
              >>>>
              >>>>"Diptanshu Parui" <[email protected]> wrote:
              >>>>>
              >>>>>Forgot to add an important point.
              >>>>>The extended classes have to in the oracle.jms package (not necessarily
              >>>>>in the
              >>>>>same jar) to extend the Oracle classes. And I have used aqapi13.jar.
              >>>>>
              >>>>>Dips
              >>>>>
              >>>>>"Diptanshu Parui" <[email protected]> wrote:
              >>>>>>
              >>>>>>Hi,
              >>>>>>
              >>>>>>After days of work on getting to integrate Oracle's AQ with WebLogic
              >>>>>>I have managed
              >>>>>>to get to a solution without making changes to the Oracle's AQ API.
              >>>>>>
              >>>>>>Eric Ma had managed to provide a solution about an year back changing
              >>>>>>Oracle's
              >>>>>>API and making the AQjmsConnection, AQjmsSession, AQjmsQueueConnectionFactory
              >>>>>>& AQjmsDestination NOT implement Referenceable. This solution worked
              >>>>>>with WebLogic
              >>>>>>but meant that this cannot be deployed on Production environment.
              >>>>>>
              >>>>>>There was a myth that WebLogic's JNDI didn't provide support to
              >Referenceable
              >>>>>>objects like Oracle's AQjmsQueueConnectionFactory etc.
              >>>>>>
              >>>>>>This myth has been broken. Referenceable object CAN be bound and
              >>looked
              >>>>>>up from
              >>>>>>WebLogic's JNDI provided right Factory classes are written and the
              >>>>correct
              >>>>>>constructor
              >>>>>>for Reference is used in the getReference method of the Referenceable
              >>>>>>implementation.
              >>>>>>
              >>>>>>In case of Oracle's objects, I wrote classes extending AQjmsQueueConnectionFactory
              >>>>>>& AQjmsDestination. In the extended classes, I wrote toString method
              >>>>>>and set private
              >>>>>>String variable.
              >>>>>>This string variable is just special character separated concat
              >of
              >>>>all
              >>>>>>parameters
              >>>>>>used to call the constructor of the extended class.
              >>>>>>Then, in the getReference method of the extended class, I used the
              >>>>following
              >>>>>>constructor
              >>>>>>of Reference.
              >>>>>>
              >>>>>>return new Reference( DipsAQQueueConnectionFactory.class.getName(),
              >>>>>new
              >>>>>>StringRefAddr("value",
              >>>>>>value), DipsAQConnectionFactory.class.getName(), null);
              >>>>>>
              >>>>>>DipsAQQueueConnectionFactory is my class extending AQjmsQueueConnectionFactory
              >>>>>>and DipsAQConnectionFactory is the factory class for DipsAQQueueConnectionFactory.
              >>>>>>The object value passed in the StringRefAddr above is nothing but
              >>>the
              >>>>>>toString
              >>>>>>of the extended class which was stored in the private String variable.
              >>>>>>In the
              >>>>>>factory class, the string is taken out the StringRefAddr and stripped
              >>>>>>to get individual
              >>>>>>parameters which were separated by special characters. Once, the
              >>individual
              >>>>>>parameters
              >>>>>>are got back, the Factory class instantiates the Referenceable object
              >>>>>>and returns
              >>>>>>it back.
              >>>>>>
              >>>>>>Another important point is in the extended class DipsAQQueueConnectionFactory
              >>>>>>I wrote this method
              >>>>>> public QueueConnection createQueueConnection() throws JMSException
              >>>>>>
              >>>>>> {
              >>>>>>     return createQueueConnection("user","user");
              >>>>>> }     
              >>>>>>
              >>>>>>And then using a startup class I bound the DipsAQQueueConnectionFactory
              >>>>>>& DipsAQDestination
              >>>>>>Referenceable objects to WLS. The MDB deployed on WLS was made lookup
              >>>>>>for the
              >>>>>>bound QF & Q and it started reading AQ messages.
              >>>>>>
              >>>>>>Few other points to note.
              >>>>>>I have kept the user & pwd of WLS same as DB.
              >>>>>>I have used OCI driver.
              >>>>>>
              >>>>>>Please feel free to raise further queries/suggestions.
              >>>>>>
              >>>>>>Dips
              >>>>>
              >>>>
              >>>
              >>
              >
              

  • Help ! Getting a MDB on Weblogic 8.1 to work with SonicMQ 6.1

    Hello all,
    Iam trying to get an MDB on WLS to listen to a Sonic MQ installation. Iam using Sonic's built in JNDI and have made the necessary setting under Foreign JMS server under Weblogic console (I followed the code share available on Sonic's site!). But the MDB always starts with the following warning and does not listen to the Q.
    <Jan 9, 2006 11:47:07 PM CST> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: SonicMDB is unable to connect to the JMS destination: jms/SampleQ1. The Error was:
    [EJB:011010]The JMS destination with the JNDI name: jms/SampleQ1 could not be found. Please ensure that the JNDI name in the weblogic-ejb-jar.xml is correct, and the JMS destination has been deployed.>
    This is my weblogic-ejb-jar.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" "http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">
    <weblogic-ejb-jar>
    <weblogic-enterprise-bean>
    <ejb-name>SonicMDB</ejb-name>
    <message-driven-descriptor>
    <pool>
    <max-beans-in-free-pool>2</max-beans-in-free-pool>
    <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
    </pool>
    <destination-jndi-name>jms/SampleQ1</destination-jndi-name>
    <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
    <provider-url>t3://localhost:7001</provider-url>
    <connection-factory-jndi-name>jms/QCF</connection-factory-jndi-name>
    </message-driven-descriptor>
    </weblogic-enterprise-bean>
    </weblogic-ejb-jar>
    I have configured the jndi name for the destination and connection factory correctly under the console.. Is there a bug with WLS 8.1 SP4?
    Iam not using the Sun's FSContext but the Sonic's jndi. I have added the following sonic jars to the wls classpath:
    ------------------------------------------------------=--------
    @rem Add the Sonic JMS Provider
    set SONICMQ_LIB=<SONIC_HOME>\lib
    set SONICMQ_CLASSPATH=%SONICMQ_LIB%\mfcontext.jar;%SONICMQ_LIB%\sonic_Client.jar;%SONICMQ_LIB%\sonic_ASPI.jar;%SONICMQ_LIB%\sonic_XA.jar;%SONICMQ_LIB%\sonic_Selector.jar;%SONICMQ_LIB%\sonic_Crypto.jar;%SONICMQ_LIB%\jndi.jar
    set WEBLOGIC_CLASSPATH=%WEBLOGIC_CLASSPATH%;%SONICMQ_CLASSPATH%
    This is my foreign JMS server configuration in WLS console
    Name: WLSSONIC
    JNDI Initial Context Factory: com.sonicsw.jndi.mfcontext.MFContextFactory
    JNDI Provider URL: tcp://localhost:2506
    JNDI Properties:
    com.sonicsw.jndi.mfcontext.idleTimeout=6000
    com.sonicsw.jndi.mfcontext.domain=Domain1
    java.naming.security.principal=Administrator
    java.naming.security.credentials=Administrator
    This is the snippet from WLS config.xml
    <ForeignJMSServer ConnectionURL="tcp://localhost:2506"
    InitialContextFactory="com.sonicsw.jndi.mfcontext.MFContextFactory"
    JNDIProperties="java.naming.provider.url=tcp://localhost:2506;java.naming.factory.initial=com.sonicsw.jndi.mfcontext.MFContextFactory;com.sonicsw.jndi.mfcontext.idleTimeout=6000;com.sonicsw.jndi.mfcontext.domain=Domain1 java.naming.security.principal=Administrator java.naming.security.credentials=Administrator" Name="WLSSONIC">
    <ForeignJMSConnectionFactory LocalJNDIName="jms/QCF"
    Name="SonicMQQueueConnectionFactory"
    PasswordEncrypted="{3DES}O26K63V7o0pOryfotUFNpA=="
    RemoteJNDIName="SonicMQQueueConnectionFactory" Username="Administrator"/>
    <ForeignJMSDestination LocalJNDIName="jms/SampleQ1"
    Name="SonicMQSampleQ1" RemoteJNDIName="SonicMQSampleQ1"/>
    </ForeignJMSServer>
    ---------------------------------------------------------------------

    good that you posted the SoniqMQ params.
    You have configured WLS to look for the Local JNDI names in the MQ params.
    You need to use
    "SonicMQSampleQ1" for destination-jndi-name
    AND
    "SonicMQQueueConnectionFactory" for connection-factory-jndi-name
    Hope this helps.
    Thanks and regards,
    Pazhanikanthan. P

  • How to stop reading foreign queue message from MDB using weblogic 6.1? thanks,

    Hi, I am using weblogic 6.1 to communicate with IBM MQseries foreign
    queue. I use the asychronous way "onMessage()"(properly the only
    known way) to listen the messages from the queue. I like to stop
    receiving messages if my south bound stream has problems and not able
    to process the message, I would like to stop fetching the message with
    my MDB(message driven bean) untill the down stream problem is cleared.
    As weblogic uses container to create the multiple session and
    connections internally, how can I efficiently stop the message
    delivery, do I have to locate all the connections and issue
    connection.stop()for each one, or there is better way to do this.
    Thanks in advance.

    If you never use FaceTime on your Mac, open the FaceTime app on it and sign out. Also, the following instructions are from Connect your iPhone, iPad, iPod touch, and Mac using Continuity - Apple Support
    Turn off iPhone cellular calls
    To turn off iPhone cellular calls on your iPad or iPod touch, go to Settings > FaceTime and turn off iPhone Cellular Calls.
    On your Mac, open the FaceTime app and go to FaceTime > Preferences. Click Settings and deselect the iPhone Cellular Calls option.

  • Deploying mdb in weblogic 9.0

    i have a simple mdb aplication ..
    i have deloyed it in weblogic 9.0..
    but it is showing error in connection factory
    JNDI Name..like replace the JNdi name ..
    pls hel me out to solve the problem
    thank u

    We discovered that BEA uses a directory named "autodeploy". By dropping our Jackrabbit 1.1 RAR file (resource adapter), BEA would auto-deploy it. No need to deal with the buggy WebLogic Admin console.
    Needed to add the weblogic-ra.xml file to the META-INF directory, and set it up properly. Re-jar it all up as a .rar file, then copy it to the autodeploy directory. The other step is to make sure that the target repository directory exists (I pre-created [bea_home]/jackrabbit/ directory), and that the repository.xml file is already there before you deploy your .rar. Then start up the sample portal server, and the rar file will deploy as a resource adapter. To see it, go into the main server console, click on Deployments > Monitoring > Resource Adapters > Outbound Connection Pools. Jackrabbit should show up there.
    This was the directory in which we dropped our RAR for testing:
    [bea_home]/weblogic92/samples/domains/portal/autodeploy
    Start the sample portal server at:
    Windows
    [bea_home]/weblogic92/samples/domains/portal/bin/startWebLogic.cmd
    UNIX
    [bea_home]/weblogic92/samples/domains/portal/bin/startWebLogic.sh
    NOTE: This didn't end our headaches. Now we're dealing with Jackrabbit creating connections and never releasing them. Hundreds and hundreds of connections, until it runs out of its connection pool. Hideous. But that's a problem for another thread.
    Message was edited by:
    LanceZechinato

  • Durable Subscription with MDB in Weblogic 7.0

    Hi,
              I am using WLS 7.0 as the JMS Provider and as the EJB Container(no
              clustering). My question is do I need MDB with durable subscription. I
              cannot think of a instance when the container will be down but JMS
              provider is still running if I am using WLS as both container and JMS
              provider.
              One instance i can think of is if the MDB is not deployed (upon a new
              release of our application, for some strange reason) but rest of the
              application is deployed then the producers will produce messages for
              the off-line subscriber.
              If I assume that the above is not likely to happen, can you think of
              any compelling reason for me to use MDB with durable subcription .
              Thanks for your input.
              ssahu
              

    1) The MDB should only specify "durable" if it is receiving from a
              topic. Durable does not apply to queues.
              2) If messages are non-persistent, then you likely don't need durable.
              As these messages don't survive the shutdown...
              3) Making it durable helps with race-conditions during shutdown or
              startup where messages are sent but the MDB isn't up. It also helps
              with the condition where shutdown occurs before the MDB finishes
              processing all of its messages. (So Durable ensures that the
              MDB does not miss a message. It may even help in the non-persistent
              case if is possible that the MDB is temporarily undeployed (by you)
              while the server is up.
              [email protected] wrote:
              > Hi,
              > I am using WLS 7.0 as the JMS Provider and as the EJB Container(no
              > clustering). My question is do I need MDB with durable subscription. I
              > cannot think of a instance when the container will be down but JMS
              > provider is still running if I am using WLS as both container and JMS
              > provider.
              > One instance i can think of is if the MDB is not deployed (upon a new
              > release of our application, for some strange reason) but rest of the
              > application is deployed then the producers will produce messages for
              > the off-line subscriber.
              >
              > If I assume that the above is not likely to happen, can you think of
              > any compelling reason for me to use MDB with durable subcription .
              >
              > Thanks for your input.
              >
              > ssahu
              

  • What are the steps involved in subscribing to an Oracle AQ via Weblogic MDB

    Hi,
    we are developing an event notification application and are planning to use Oracle AQ for message propagation, from Oracle DB(oracle 9i) to an application in WLS (Version 9.2). I couldn't find any tutorial or documentation on how to subscribe a MDB in weblogic to a Queue in AQ.
    if any available please kindly reply to this posting.
    thanks,
    prakash

    It is great news that Oracle WebLogic server will support AQ out-of-box in the near future. It is probably the top synergy to be achieved as part of ORCL's acquisition of BEAS, if you ask me :-)
    My curiosity of integrating WLS and AQ started in May of 2003, when I decompile and changed a few AQ-JMS internal Q and QCF classes to make them play nice in WLS. I uploaded my code at BEA's dev2dev JMS discussion forum. Subsequently Diptanshu Parui took it to another level when he published his enhancements in 2005, which is reference in Tom's post. However, I never was able to got my co-workers to buy into the concept though - until today we are still using a polling mechanism to turn records written in an event table by triggers into JMS messages. It works well, but adds another moving part. Native AQ support in WLS will make our lives so much easier.
    BTW Tom - glad to see you continue to help folks in this new forum!
    Eric Ma

  • Issue with MDB (jms Queue) in weblogic 8.1

              Hi all...
              I'm facing a strange kind of problem with MDB using weblogic 8.1.
              The code worked perfectly in weblogic 7.0.
              This is wht i'm trying to achieve..
              i'm having a MDB which implements a onMessage().
              I'm publishing message thru a standalone client. Publishing works fine..
              The problem is onMessage(javax.jms.Message msg) is never been called :-(.
              when i monitor it shows that messages are recieved..
              Am is missing something that is really important..
              here is my code
              package com.csxwt.zodiac.service.domain;
              import javax.ejb.*;
              import javax.jms.*;
              import javax.naming.*;
              import java.io.Serializable;
              //import com.csxwt.zodiac.service.domain.TestObject;
              public class MDBTestBean implements MessageDrivenBean, MessageListener {
              MessageDrivenContext messageDrivenContext;
              public void ejbCreate() throws CreateException {
              System.out.println("into the ejb create");
              /**@todo Complete this method*/
              public void ejbRemove() {
              /**@todo Complete this method*/
              public void onMessage(javax.jms.Message msg) {
              System.out.println("into the onMessage method 1 ");
              ObjectMessage objectMsg = null;
              String strObject = "Test";
              try
              System.out.println("into the onMessage method 2 ");
              if (msg instanceof ObjectMessage)
              System.out.println("into the onMessage method 3");
              objectMsg = (ObjectMessage) msg;
              Serializable serializableObj = objectMsg.getObject();
              String test = serializableObj.toString();
              System.out.println("value of the message sent " + test);
              TestObject test1 = null;
              if(serializableObj instanceof TestObject )
              test1 = (TestObject) serializableObj;
              System.out.println("after getting the test value ");
              System.out.println("getting the test object valuye " + test1.getName());
              else
              return;
              catch (Exception e)
              System.out.println("Message Bean:unexpected Exception thrown ");
              e.printStackTrace();
              public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext)
              System.out.println("into MDB context");
              this.messageDrivenContext = messageDrivenContext;
              here are the 2 xml files....
              <ejb-jar>
              <enterprise-beans>
              <message-driven>
              <display-name>MDBTest</display-name>
              <ejb-name>MDBTest</ejb-name>
              <ejb-class>com.csxwt.zodiac.service.domain.MDBTestBean</ejb-class>
              <transaction-type>Container</transaction-type>
              <message-selector>GATE_LANE</message-selector>
              <message-driven-destination>
              <destination-type>javax.jms.Queue</destination-type>
              </message-driven-destination>
              </message-driven>
              </enterprise-beans>
              <assembly-descriptor>
              <container-transaction>
              <method>
              <ejb-name>MDBTest</ejb-name>
              <method-name>*</method-name>
              </method>
              <trans-attribute>Required</trans-attribute>
              </container-transaction>
              </assembly-descriptor>
              </ejb-jar>
              <weblogic-ejb-jar>
              <weblogic-enterprise-bean>
              <ejb-name>MDBTest</ejb-name>
              <message-driven-descriptor>
              <pool>
              <max-beans-in-free-pool>200</max-beans-in-free-pool>
              <initial-beans-in-free-pool>20</initial-beans-in-free-pool>
              </pool>
              <destination-jndi-name>zodiac.jms.queue.HardWareOutMessageQueue</destination-jndi-name>
              </message-driven-descriptor>
              </weblogic-enterprise-bean>
              </weblogic-ejb-jar>
              Am i missing something somewhere?????
              any help in this is highly appreciated..
              thanks in advance.
              r
              sasi
              

    Check your log for error and warning messages. If there
              are some, they should help trace down the problem. If there
              aren't any, try confirm that your MDB is deploying in
              the first place.
              The MDB below is a Q MDB, but you write below that your client
              is a "publisher". "Publisher" implies a topic producer, not
              a queue producer, and topic producer can't publish to queues.
              Tom
              T. Sasii Dharma wrote:
              > Hi all...
              >
              > I'm facing a strange kind of problem with MDB using weblogic 8.1.
              > The code worked perfectly in weblogic 7.0.
              > This is wht i'm trying to achieve..
              > i'm having a MDB which implements a onMessage().
              > I'm publishing message thru a standalone client. Publishing works fine..
              > The problem is onMessage(javax.jms.Message msg) is never been called :-(.
              > when i monitor it shows that messages are recieved..
              > Am is missing something that is really important..
              >
              > here is my code
              >
              > package com.csxwt.zodiac.service.domain;
              >
              > import javax.ejb.*;
              > import javax.jms.*;
              > import javax.naming.*;
              > import java.io.Serializable;
              > //import com.csxwt.zodiac.service.domain.TestObject;
              >
              > public class MDBTestBean implements MessageDrivenBean, MessageListener {
              > MessageDrivenContext messageDrivenContext;
              > public void ejbCreate() throws CreateException {
              > System.out.println("into the ejb create");
              > /**@todo Complete this method*/
              > }
              > public void ejbRemove() {
              > /**@todo Complete this method*/
              > }
              > public void onMessage(javax.jms.Message msg) {
              > System.out.println("into the onMessage method 1 ");
              > ObjectMessage objectMsg = null;
              > String strObject = "Test";
              > try
              > {
              > System.out.println("into the onMessage method 2 ");
              > if (msg instanceof ObjectMessage)
              > {
              > System.out.println("into the onMessage method 3");
              > objectMsg = (ObjectMessage) msg;
              > Serializable serializableObj = objectMsg.getObject();
              > String test = serializableObj.toString();
              > System.out.println("value of the message sent " + test);
              > TestObject test1 = null;
              > if(serializableObj instanceof TestObject )
              > {
              > test1 = (TestObject) serializableObj;
              > System.out.println("after getting the test value ");
              > System.out.println("getting the test object valuye " + test1.getName());
              > }
              >
              > }
              > else
              > {
              > return;
              > }
              >
              > }
              > catch (Exception e)
              > {
              > System.out.println("Message Bean:unexpected Exception thrown ");
              > e.printStackTrace();
              > }
              >
              > }
              > public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext)
              > {
              > System.out.println("into MDB context");
              >
              > this.messageDrivenContext = messageDrivenContext;
              > }
              > }
              >
              >
              > here are the 2 xml files....
              >
              > <ejb-jar>
              > <enterprise-beans>
              > <message-driven>
              > <display-name>MDBTest</display-name>
              > <ejb-name>MDBTest</ejb-name>
              > <ejb-class>com.csxwt.zodiac.service.domain.MDBTestBean</ejb-class>
              > <transaction-type>Container</transaction-type>
              > <message-selector>GATE_LANE</message-selector>
              > <message-driven-destination>
              > <destination-type>javax.jms.Queue</destination-type>
              > </message-driven-destination>
              > </message-driven>
              > </enterprise-beans>
              > <assembly-descriptor>
              > <container-transaction>
              > <method>
              > <ejb-name>MDBTest</ejb-name>
              > <method-name>*</method-name>
              > </method>
              > <trans-attribute>Required</trans-attribute>
              > </container-transaction>
              > </assembly-descriptor>
              > </ejb-jar>
              >
              > <weblogic-ejb-jar>
              > <weblogic-enterprise-bean>
              > <ejb-name>MDBTest</ejb-name>
              > <message-driven-descriptor>
              > <pool>
              > <max-beans-in-free-pool>200</max-beans-in-free-pool>
              > <initial-beans-in-free-pool>20</initial-beans-in-free-pool>
              > </pool>
              > <destination-jndi-name>zodiac.jms.queue.HardWareOutMessageQueue</destination-jndi-name>
              > </message-driven-descriptor>
              > </weblogic-enterprise-bean>
              > </weblogic-ejb-jar>
              >
              > Am i missing something somewhere?????
              > any help in this is highly appreciated..
              >
              > thanks in advance.
              >
              > r
              > sasi
              

  • Info! required on  subscribing  a Weblogic MDB  to an Oracle AQ queue

    Hi,
    we are developing an event notification application and are planning to use Oracle AQ for message propagation, from Oracle DB(oracle 9i) to an application in WLS (Version 9.2). I's there any comprehensive tutorial on how to subscribe a MDB in weblogic to a Queue in AQ.
    if any available please kindly reply to this posting.
    thanks,
    prakash

    Did you ever receive information on MDB to AQ? I'm doing a very similar thing.
    --Jay                                                                                                                                                                           

  • How to configure my MDB serve only one message at a time?

    Hi All,
    I have requirement where I need to develope a MDB iin weblogic. This MDB has to serve only one message at a time. If the send second message is sent while the first one is running the second message has to sit in queue and start processing once the first message is finished.
    Is there any way to configure via annotations or in weblogic server settings ?
    Any help would be really appreciated...
    Thank you,
    K.

    Here is my client code to send the message
    Connection connection = null;
    javax.jms.Session session = null;
    MessageProducer producer = null;
    try
    connection = lpConnectionFactory.createConnection();
    session = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
    // Create a MessageProducer from the Session to the Validation Queue
    producer = session.createProducer(myQueue);
    ((WLMessageProducer)producer).setUnitOfOrder();
    // Create a message
    ObjectMessage message = session.createObjectMessage();
    message.setObject(params);
    message.setStringProperty(MyServiceConstants.OPERATION, operation);
    // Send the message to the queue
    producer.send(message);
    finally
    if (producer != null)
    producer.close();
    if (session != null)
    session.close();
    if (connection != null)
    connection.close();
    Following is the weblogic-ejb-jar.xml
    <?xml version="1.0"?>
    <!DOCTYPE weblogic-ejb-jar PUBLIC
    "-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN"
    "http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd">
    <weblogic-ejb-jar>
    <weblogic-enterprise-bean>
    <ejb-name>TestMDB</ejb-name>
    <message-driven-descriptor>
         <pool>
              <max-beans-in-free-pool>1</max-beans-in-free-pool>
              <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
         </pool>
    </message-driven-descriptor>
    </weblogic-enterprise-bean>
    </weblogic-ejb-jar>

  • How to configure MDB as Durable Subscriber

              I can't seem to find any documentation on how to set up an MDB as a Durable Subscriber.
              I tried using the Edit EJB Descriptor link in the console. I then drilled down
              to Message Driven Destination. For Subscription Durability, I selected Durable.
              I clicked Apply. I also went back to the jar and pressed the Persist button to
              "Persist changes made to the Descriptor(s)".
              I check the Topic to see if there were any Durable Subscribers listed. No. I bounced
              the server. Still no.
              What am I missing? The only info I can find in the documentation about setting
              up Durable Subscriptions is via the JMS API (http://e-docs.bea.com/wls/docs61/jms/implement.html#1097632)
              Using WL v6 SP5, not clustered.
              Any help would be appreciated.
              Jim
              

    Hi James,
              I'm unfamiliar with the console ejb xml editor. I suggest
              posting to the ejb newsgbroup, which is more familiar
              with these things. Meanwhile, the attached notes
              and the following example may help if your willing
              to hand-edit the xml.
              Tom, BEA
              <ejb-jar>
              <enterprise-beans>
              <message-driven>
              <ejb-name>exampleMessageDrivenA</ejb-name>
              <ejb-class>MessageBean</ejb-class>
              <transaction-type>Container</transaction-type>
              <message-driven-destination>
              <destination-type>javax.jms.Queue</destination-type>
              <!--
              <destination-type>javax.jms.Topic</destination-type>
              <subscription-durability>Durable</subscription-durability>
              -->
              </message-driven-destination>
              </message-driven>
              </enterprise-beans>
              <assembly-descriptor>
              <container-transaction>
              <method>
              <ejb-name>exampleMessageDrivenA</ejb-name>
              <method-name>onMessage()</method-name>
              </method>
              <trans-attribute>Required</trans-attribute>
              </container-transaction>
              </assembly-descriptor>
              </ejb-jar>
              <!-- Sample MessageDriven bean Weblogic deployment descriptor -->
              <weblogic-ejb-jar>
              <weblogic-enterprise-bean>
              <ejb-name>exampleMessageDrivenA</ejb-name>
              <message-driven-descriptor>
              <pool>
              <max-beans-in-free-pool>5</max-beans-in-free-pool>
              <initial-beans-in-free-pool>5</initial-beans-in-free-pool>
              </pool>
              <!--
              <destination-jndi-name>quotestopic</destination-jndi-name>
              -->
              <destination-jndi-name>MDBQ</destination-jndi-name>
              <!--
              <provider-url>t3://localhost:10001</provider-url>
              <connection-factory-jndi-name>cf3</connection-factory-jndi-name>
              <jms-client-id>cid444</jms-client-id>
              -->
              </message-driven-descriptor>
              <jndi-name>someid</jndi-name>
              </weblogic-enterprise-bean>
              </weblogic-ejb-jar>
              James Goodwin wrote:
              > I can't seem to find any documentation on how to set up an MDB as a Durable Subscriber.
              > I tried using the Edit EJB Descriptor link in the console. I then drilled down
              > to Message Driven Destination. For Subscription Durability, I selected Durable.
              > I clicked Apply. I also went back to the jar and pressed the Persist button to
              > "Persist changes made to the Descriptor(s)".
              >
              > I check the Topic to see if there were any Durable Subscribers listed. No. I bounced
              > the server. Still no.
              >
              > What am I missing? The only info I can find in the documentation about setting
              > up Durable Subscriptions is via the JMS API (http://e-docs.bea.com/wls/docs61/jms/implement.html#1097632)
              >
              > Using WL v6 SP5, not clustered.
              >
              > Any help would be appreciated.
              >
              > Jim
              A durable topic subscriber MDB uses its name to generate its client-id.
              Since JMS enforces uniqueness on this client-id, this means that if a durable
              subscriber MDB is deployed to multiple servers only one server will be able
              to connect. Some applications want a different behavior where
              each MDB pool on each server gets its own durable subscription.
              The MDB durable subscription id, which must be unique on its topic, comes from:
              1) <jms-client-id>MyClientID</jms-client-id>
              (the weblogic dtd)
              2) if (1) is not set then the client-id
              comes from the ejb name.
              The durable subscription is uniquely identified within a cluster by a
              combination of "connection-id" and "subscription-id". Only one active
              connection may use a particular "connection-id" within a WebLogic cluster.
              The connection id comes from:
              1) The "ClientId" attribute configured on the WebLogic connection factory.
              This defaults to null. Note that if the ClientId is set on a connection
              factory, only one connection created by the factory
              may be active at a time.
              2) If (1) is not set, then, as with the subscriber-id,
              the connection-id is derived from jms-client-id descriptor attribute:
              <jms-client-id>MyClientID</jms-client-id>
              (the weblogic dtd)
              3) If (1) and (2) are not set, then, as with the subscriber-id,
              the connection-id is derived from the ejb name.
              Work-around:
              A) Create a custom connection-factory for each server:
              1) configure "JNDIName" to the same value across all servers
              ("myMDBCF" in this example)
              2) configure "ClientId" to a unique value per server
              3) enable "UserTransactionsEnabled"
              4) enable "XAConnectionFactoryEnabled"
              5) set "AcknowledgePolicy" to "ACKNOWLEDGE_PREVIOUS"
              6) target the CF at a single WebLogic server
              (Number 5 is required for non-transactional topic MDBs)
              B) In the MDB's weblogic-ejb-jar.xml descriptor, set the MDB's connection
              factory to the JNDI name of the custom connection factories configured in
              (A). Optionally, also specify the subscriber-id via the jms-client-id
              attribute.
              <weblogic-ejb-jar>
              <weblogic-enterprise-bean>
              <ejb-name>exampleBean</ejb-name>
              <message-driven-descriptor>
              <connection-factory-jndi-name>myMDBCF</connection-factory-jndi-name>
              <jms-client-id>myClientID</jms-client-id>
              </message-driven-descriptor>
              </weblogic-enterprise-bean>
              </weblogic-ejb-jar>
              C) Target the application at the same servers that have the custom connection
              factories targeted at them.
              Notes/Limitations:
              1) If the MDB is moved from one server to another, the MDB's corresponding
              connection-factory must be moved with it.
              2) This work-around will not work if the destination is not in the same
              cluster as the MDB. (The MDB can not use the local connection factory, which
              contains the connection-id, as connection factories do not work unless they
              are in the same cluster as the destination.)
              3) This work-around will not work for non-WebLogic JMS topics.
              

Maybe you are looking for

  • Can NOT update video automatically with selected playlists!

    I just bought my iPod today and when I try to put some video on it, the movie does not appear anywhere. when I click on the Video button, the "automatically with selected playlist" option is hidden and I cant click on it, and no video title can be ob

  • Exit or Badi for controlling the change of user status in notification

    Hi, I want to check the current user status of notification while saving the notificaton. If the current user status satisifies particular situation, then the notification should be save else not. Is there any user exit or Badi which can be used to c

  • Data pivoting in query

    Greetings Oracle gurus! Problem: I'm trying to write a query that does some data pivoting. I've done this before in the past on smaller data sets, and they've worked great. However, now I'm doing it against a table that has well over a million record

  • Whatsapp problems in my iPhone 4

    Hey guys; i am using my iPhone 4 on version 4.3.5; and my whatsapp version is 2.6.7, while i pressed the home button to return to the main menu of my iPhone; my whatsapp went offline and i couldn't receive any whatsapp messages from my friends; i hav

  • Credit Management & Customer Hierarchy

    Hi, 1. i need to assign credit limits in a customer hierarchy set up. For Eg: The Global client is assigned a credit limit of USD x. The national clients shall have a % of x.  How to define this set up in SAP? 2. What processes are covered (in genera