Using a  foreign WLS JMS queue (no bridge)

          Hi,
          We have a configuration from which we communicate from WLS 7 to a foreign MQ via
          JMS. This works well and we have loaded the foreign MQ jms objects into WLS JNDI
          using a statup class (as the whitepaper available describes) and we look them
          up successfully.
          However, we now have a siutation where we briefly need to switch our application
          to point to a WLS JMS queue on another remote WLS server. Is there an easy way
          to load foreign (maybe remote would be a better word in this case) WLS JMS QCF's
          and destinations into my local WLS JNDI so that I can treat them the same way
          as my MQ objects?
          I can't seem to find any information on how to do this as all information seems
          to point towards the messaging bridge (we can't use this as the bridge changes
          the message JMSMessageID and screws our correlation mechanism up).
          I know we could just look the foreign objects up by using the JNDI environment
          of the remote WLS machine but this would mean changing code and this I can't to
          do (as all our code uses the local default WLS JNDI).
          Any ideas would be gratefully received.
          Cheers,
          Jay.
          

WLS JMS and MQ JMS handle their JNDI objects a little differently, so I can
          see how this can be confusing. An MQ JMS "ConnectionFactory" or
          "Destination" object is like a little configuration file that tells you
          where the queue manager or queue is, so you can serialize it and look it up
          later and use it to find the queue manager.
          A WLS JMS ConnectionFactory or Destination object is a reference to an
          object on a running server. So, you connect to the server and look them up,
          and then you can use it for messaging. You don't have to store these objects
          in a separate place, like MQ makes you do. But it means that the WLS JNDI
          objects have to be looked up from a running server, and if the server
          restarts, you have to look them up again.
          Doing what you're asking is definitely trickier in 7.0. One thing you could
          do is, again using a servlet or an EJB, connect to the remote JMS cluster
          and look up the objects at the time you want to make the switch. (If the
          remote cluster is down, you'll have to retry from time to time.) If the
          remote cluster is down, you won't be able to look up those objects, but then
          again, if it were down you wouldn't be able to send messages there anyway.
          Using 8.1 would be less complicated, but this method should also work.
          greg
          "Jay Green" <[email protected]> wrote in message
          news:[email protected]...
          >
          > Thanks Greg. When I was searching the BEA website I read about the
          facility in
          > 8.1. Unfortunatley, as you point out, it doesn't help me much with WLS
          7.0.
          >
          > My first thought was to copy my exisiting MQ startup class but I couldn't
          work
          > out how to do this for the remote WLS jms objects as the standard jms
          classes
          > (for QCF etc) don't have methods that allow me to define the foreign WLS
          jms
          > host IP address etc. I checked the WLS 7 API and the jms package didn't
          seem
          > to offer anything to help me do this (as IBM do for MQ). Any ideas?
          >
          > Apologies if I'm being a bit slow here!
          >
          > "Greg Brail" <[email protected]> wrote:
          > >WLS 8.1 includes a feature called "Foreign JMS Providers" that lets you
          > >configure (using the console or config.xml) a link between a JMS JNDI
          > >object
          > >in your WLS servers' tree, and a JNDI object in another provider -- which
          > >could be WLS JMS, or a foreign vendor.
          > >
          > >Using this feature, your application could just look up the local JNDI
          > >objects in the local WLS tree, and then the server in turn performs the
          > >lookup from the actual JNDI provider using the parameters you put in
          > >the
          > >console (or config.xml). So, when you make a change in the console, new
          > >JNDI
          > >lookups will go to the new place.
          > >
          > >Unfortunately, this doesn't help you with 7.0. You could always
          > >programmitically update the local JNDI tree the way you're doing in your
          > >startup class, but instead do it from a servlet or an EJB.
          > >
          > > greg
          > >
          > >"Jay Green" <[email protected]> wrote in message
          > >news:[email protected]...
          > >>
          > >> Hi,
          > >>
          > >> We have a configuration from which we communicate from WLS 7 to a
          foreign
          > >MQ via
          > >> JMS. This works well and we have loaded the foreign MQ jms objects
          > >into
          > >WLS JNDI
          > >> using a statup class (as the whitepaper available describes) and we
          > >look
          > >them
          > >> up successfully.
          > >>
          > >> However, we now have a siutation where we briefly need to switch our
          > >application
          > >> to point to a WLS JMS queue on another remote WLS server. Is there
          > >an easy
          > >way
          > >> to load foreign (maybe remote would be a better word in this case)
          > >WLS JMS
          > >QCF's
          > >> and destinations into my local WLS JNDI so that I can treat them the
          > >same
          > >way
          > >> as my MQ objects?
          > >> I can't seem to find any information on how to do this as all
          information
          > >seems
          > >> to point towards the messaging bridge (we can't use this as the bridge
          > >changes
          > >> the message JMSMessageID and screws our correlation mechanism up).
          > >>
          > >> I know we could just look the foreign objects up by using the JNDI
          > >environment
          > >> of the remote WLS machine but this would mean changing code and this
          > >I
          > >can't to
          > >> do (as all our code uses the local default WLS JNDI).
          > >>
          > >> Any ideas would be gratefully received.
          > >>
          > >> Cheers,
          > >>
          > >> Jay.
          > >
          > >
          >
          

Similar Messages

  • Populating Database records to WLS JMS queue

    Hi All,
    Please suggest which is the performance effective approach in populating WLS JMS queue from the database tables?
    As I have to produce millions of records from the DB into the JMS queue and assuming using DB adapter and retreiving bulky data is a long running process.
    Please suggest whether I can write a pl/sql stored proc and populate the WLS JMS queue? or is there any other most optimistic approach to transfer data from db into WLS JMS queue?
    Thanks,
    Sudha

    Thanks Eric for the quick reply. Also, going through the other forum:
    Re: Publish message from Oracle database PL/SQL to a remote WLS JMS queue
    Just want to know which one would be performance effective one in the below whether using Java stored Procedures or populating AQ and WLS Messagin bridge?
    1) Java Stored Procedure can use JMS APIs to publish messages to WLS JMS destinations. JMS standard API jar file and WLS JMS client jars that you use need to be loaded into database.
    2) From PL/SQL, you can publish message to AQ using AQ PL/SQL APIs, then configure WLS Messaging Bridge to forward messages from AQ to WLS JMS.

  • 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 Queue Consumers

              Hi,
              I am using WL6.1 SP4 JMS Queues and MDB's. During busy times, the bean(s) can't
              keep up. Number of consumers are always 15 (cosumers total- 30 , consumers high
              - 15 and consumers -15 on Monitoring window) even lot messages are pending in
              the queue. The pool parameters specified in DD are as below
              <pool>
              <max-beans-in-free-pool>30</max-beans-in-free-pool>
              <initial-beans-in-free-pool>5</initial-beans-in-free-pool>
              </pool>
              Can some one help me out.
              Thanks in adv,
              Dp
              

    As far as I know, these are the only two parms that effect
              MDB instance creation on 6.1. I suggest:
              1) increase the values higher to see what happens
              2) make sure to reboot (these values are not dynamic)
              3) force server to thread dump to ensure that the extra threads
              are getting created and that the MDBs are running in
              the thread pool that your are increasing...
              4) post to the weblogic.ejb newsgroup, which "owns" mdbs
              5) contact customer support
              Tom
              DP wrote:
              > Hi,
              >
              > I increased this thread pool size to 25.
              > Now the max-beans-in-free-pool is 20.
              > Still it is not increasing the beans count above 15.
              >
              > DP
              >
              > Tom Barnes <[email protected]> wrote:
              >
              >>MDBs run in the main "default execute" thread pool, which has a
              >>default size of 15. This is the limit you are running into.
              >>You can configure a server's thread pool size on the console.
              >>
              >>Note that since this thread pool is used for other server work,
              >>the MDB max-beans-in-free-pool should be configured to something
              >>somewhat less that the "default execute" thread pool size. This
              >>prevents starvation dead-locks...
              >>
              >>Tom
              >>
              >>DP wrote:
              >>
              >>>Hi,
              >>>
              >>>I am using WL6.1 SP4 JMS Queues and MDB's. During busy times, the
              >>
              >>bean(s) can't
              >>
              >>>keep up. Number of consumers are always 15 (cosumers total- 30 , consumers
              >>
              >>high
              >>
              >>>- 15 and consumers -15 on Monitoring window) even lot messages are
              >>
              >>pending in
              >>
              >>>the queue. The pool parameters specified in DD are as below
              >>>
              >>><pool>
              >>> <max-beans-in-free-pool>30</max-beans-in-free-pool>
              >>> <initial-beans-in-free-pool>5</initial-beans-in-free-pool>
              >>> </pool>
              >>>
              >>>Can some one help me out.
              >>>
              >>>Thanks in adv,
              >>>Dp
              >>
              >
              

  • Foreign jms queue binding problem

              Hi,
              I am on the way to wls7.0 from wls5.1, but I got a probelm when I tried to rebind
              the jms queue to weblogic jndi.
              [javax.naming.ConfigurationException [Root exception is java.rmi.MarshalException:
              failed to marshal rebind(Ljava.lang.String;Ljava.lang.Object;Ljava.util.Hasht
              able;); nested exception is: java.io.NotSerializableException]]
              Can I bind the queue to wls jndi? Anybody has silimar situation?
              Thanks
              

    Hi Jen,
              As TOM said, in your case weblogic interaoperabilty supports only from
              weblogic 5.1 to 6.1, that to specified service packs. you can go through the
              following url
              http://e-docs.bea.com/wls/docs61/interop/interop.html
              So you better go by using message bridges for foreign jms providers. The
              document has how you can configure about JNDI provider either File based Or
              Ldap based.
              Thanks
              Kumar
              "Je" <[email protected]> wrote in message
              news:[email protected]...
              >
              > Thanks, actually I am trying to rebind the jms queue from Fiorano
              > MQ. It works fine in wls5.1. Is there special requirement for jndi for
              wls7.1,
              > does the object needs to be serilizable to be bind into jndi?
              >
              > Tom Barnes <[email protected]> wrote:
              > >
              > >It seems you are trying to access 5.1 JMS from 7.0. WebLogic did not
              > >
              > >support interoperability between versions until 6.1. The classes are
              > >
              > >not compatible. So interop requires a good bit of class-loader magic.
              > >
              > > The only way to interop between JMS 5.1 and 7.0 is to use the
              > >messaging bridge (which does the magic for you).
              > >
              > >FYI: I think that it may be possible to invoke remote 5.1 methods from
              > >
              > >7.0 using the IIOP protocol.
              > >
              > >Tom
              > >
              > >Jen wrote:
              > >> Hi,
              > >> I am on the way to wls7.0 from wls5.1, but I got a probelm when I tried
              > >to rebind
              > >> the jms queue to weblogic jndi.
              > >>
              > >> [javax.naming.ConfigurationException [Root exception is
              java.rmi.MarshalException:
              > >> failed to marshal
              rebind(Ljava.lang.String;Ljava.lang.Object;Ljava.util.Hasht
              > >> able;); nested exception is: java.io.NotSerializableException]]
              > >>
              > >> Can I bind the queue to wls jndi? Anybody has silimar situation?
              > >> Thanks
              > >
              >
              

  • Unable to Connect to JMS Queue in Websphere from WLS 10.3,3

    Hi Everyone,
    I'm trying to connect to JMS Queue in WebSphere 7.1 from WLS 10.3.3, I'm trying to using Foreign server connection to connect to the Websphere JMS Queue. Its normal Queue not MQ Queue. I have configured the Foreign server but i know for the fact that some weblogic jar files are need on the WLS home. Does anyone let me know what is needed so that i can place them on the WLS home and restart the server.
    Also i would like to consume and produce messages to the websphere queue.
    Thanks for the help..
    Regards
    Sabir

    Hi Everyone
    Has anyone tried connecting to the websphere jms queue from WLS 10.3.3
    Let me know if that can be done
    regards
    Sabir

  • Reading Message from Foreign JMS Queue in SOA Suite 11g.

    Hi,
    I am trying to read a JMS message that has been put into a JMS Queue on a remote weblogic Server.
    The steps that I know is that I need to create a foreign JMS Server and then probably use JMS Adapter to subscribe to the message that is lying in the remote queue.
    Has anybody been able to achieve this kind of scenario working for a remote JMS queue? Also, is this supported by JMS Adapter in SOA11g?
    Any help will be appreciated.
    Regards,
    Varun Maheshwari

    Hi Atheek1,
    Thanks for your reply.
    The confusion that is pondering me is that do I need to create a Foreign JMS Server or should I create a JMS adapter and override the properties.
    I have tried the steps for creating a Foreign Server from the below link
    Unable to access remote JMS Queue through JMS Adapter
    But I am not able to find the Foreign Server created and any connection factories and Destinations related to foreign Server in my JMS Destination while configuring JMS Adapter.
    I am not sure how to do step2 as entailed by you.
    Could you please explain me in little detail on how to do this or redirect me to some blog or forum which will be really helpful.
    Cheers,
    Varun

  • Why we use MQ not JMS Queues or AQ ?

    Hi,
    Is there any specific reason most of the companies using MQ for messaging and not using AQ or JMS Queues ?

    Hi,
    AFAIK, the companies that have IBM infrastructure in place prefer using the MQs. Also as MQ is capable of being accessed using JMS as well as MQ, it adds to the usability.
    Following could be helpful.
    How to configure MQ with WLS (JMS MQ vs Native MQ)
    Regards,
    Neeraj Sehgal

  • How to read the messages in the JMS Queue using JMX

    Hi,
              I want to read messages in the JMS queue using JMX. I was able to read using QueueBrowser but want to modify priority of the messages using JMX.
              I tried to use JMSDestinationRuntimeMBean but it does not allow us to read messages unless we pass the message Id. Is there any way that I can get all the messages in the queue.
              I am using Weblogic 8.1 SP4
              Can someone please help me in this regard.
              Thanks,
              Kiran.
              Edited by KGudipati at 10/22/2007 1:22 AM

    Hi,
    As far as i know, JMS Object Messages is not supported by XI JMS adapter.
    you need to have the JMS provider to transform the message to bytes messages.
    (Refer to SAP note 856346)

  • Need to publish message from database to a JMS Queue using Java

    I need to publish messages to a Websphere JMS Queue whenever any changes happen on a particular column of a table in oracle 11g. For that I have written a trigger on that particular table which in turn will invoke one java procedure. I have written the java procedure using a standalone java class and uploaded the java class as a schema object. While executing the procedure it is throwing error as it is not able to instantiate some of the java classes. I don't know how to provide the reference of different jar files while executing the java class. Can anyone help me on this.

    Welcome to the forum!
    >
    I have written the java procedure using a standalone java class and uploaded the java class as a schema object. While executing the procedure it is throwing error as it is not able to instantiate some of the java classes. I don't know how to provide the reference of different jar files while executing the java class.
    >
    Clarify your statement. First you say 'standalone java class' but then you talk about instantiating java 'classes' and referencing 'different jar files'. If you are executing your Java class inside Oracle then any Java classes that your java class is referencing also have to be loaded into Oracle or it won't be able to reference or execute them.
    How do you plan to ' publish messages to a Websphere JMS Queue '? Where is this queue you are talking about?
    Why are you using a Java procedure and class instead of PL/SQL?
    What is your 4 digit Oracle version (result of SELECT * FROM V$VERSION)?

  • Using JNDI Provider for Oracle JMS Queue

    Hello,
    I created a JMS Queue in Oracle 9.2.0.1 and would like
    a Java client to receive events from the Queue. I am
    not running Oracle9iAS. I have access to WebLogic server
    7.0 which is also a JNDI provider. Is there a sample code
    that shows the steps on how to go about this.
    thanks very much for any pointers.

    To define an Enterprise Message Source for AS JMS and OJMS in BAM, see Chapter 3 in the BAM Architect's User Guide.
    Specifying Settings for Oracle (AS JMS and OJMS)
    Settings for Oracle (AS JMS and OJMS) include:
    ■ Initial Context Factory.
    For 10.1.3: oracle.j2ee.rmi.RMIInitialContextFactory
    For 10.1.2: com.evermind.server.rmi.RMIInitialContextFactory
    ■ JNDI Service Provider URL. For standalone use oc4j: ormi://machine_name/
    where machine_name is the OC4J installed host, and for production use Application Server: opmn:ormi://<machine_name>:<opmn request port>:home where machine_name is the application server installed host, opmn request port could be found from looking at opmn.xml in <App server install location>/opmn/conf
    ■ TopicConnectionFactory Name.
    java:comp/resource/BAMTTT/TopicConnectionFactories/bam_ttq_tab
    ■ Topic Name. java:comp/resource/BAMTTT/Topics/bam_ttq
    ■ JMS Message Type. TextMessage.
    ■ Durable Subscriber Name. BAMFilteredSubscription
    ■ Message Selector. Message selector, for example, BAMFilter='true'
    ■ Client ID. ClientID
    You can also refer to:
    http://www.oracle.com/technology/products/integration/bam/10.1.3/TechNotes/TechNote_BAM_AQ_Configuration.pdf
    Regards, Stephen

  • MDB in a Cluster using Local JMS Queue (not distributed)

              Can I create a MDB that receives messages from a Local JMS Queue (created on each
              node) rather than a distributed queue?
              When I try to deploy such an MDB I get the following exception:
              weblogic.management.DeploymentException: Exception:weblogic.management.ApplicationException:
              activate failed for TestLocalMDBCluster Module: TestLocalMDBCluster Error: Exception
              activating module: EJBModule(TestLocalMDBCluster,status=PREPARED) Unable to deploy
              EJB: AsyncProcessor from TestLocalMDBCluster.jar: [EJB:011046]Unable to create
              EJBRuntimeMBean. javax.management.InstanceAlreadyExistsException: mydomain:ApplicationRuntime=Node2_TestLocalMDBCluster,EJBComponentRuntime=Node2_TestLocalMDBCluster_TestLocalMDBCluster,Location=Node2,Name=Node2_TestLocalMDBCluster_TestLocalMDBCluster_AsyncProcessor_jms/myserver,ServerRuntime=Node2,Type=MessageDrivenEJBRuntime
              at com.sun.management.jmx.RepositorySupport.addMBean(RepositorySupport.java:134)
              at com.sun.management.jmx.MBeanServerImpl.internal_addObject(MBeanServerImpl.java:2371)
              at com.sun.management.jmx.MBeanServerImpl.registerMBean(MBeanServerImpl.java:876)
              at weblogic.management.internal.RemoteMBeanServerImpl.private_registerMBean(RemoteMBeanServerImpl.java:582)
              at weblogic.management.internal.RemoteMBeanServerImpl.registerMBean(RemoteMBeanServerImpl.java:524)
              at weblogic.management.runtime.RuntimeMBeanDelegate.register(RuntimeMBeanDelegate.java:166)
              at weblogic.management.runtime.RuntimeMBeanDelegate.<init>(RuntimeMBeanDelegate.java:122)
              at weblogic.management.runtime.RuntimeMBeanDelegate.<init>(RuntimeMBeanDelegate.java:85)
              at weblogic.ejb20.monitoring.EJBRuntimeMBeanImpl.<init>(EJBRuntimeMBeanImpl.java:33)
              at weblogic.ejb20.monitoring.MessageDrivenEJBRuntimeMBeanImpl.<init>(MessageDrivenEJBRuntimeMBeanImpl.java:30)
              at weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.initPool(MessageDrivenBeanPoolInfoImpl.java:182)
              at weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.activate(MessageDrivenBeanPoolInfoImpl.java:245)
              at weblogic.ejb20.deployer.MessageDrivenBeanInfoImpl.activatePoolInfo(MessageDrivenBeanInfoImpl.java:474)
              at weblogic.ejb20.deployer.MessageDrivenBeanInfoImpl.deploy(MessageDrivenBeanInfoImpl.java:440)
              at weblogic.ejb20.deployer.EJBDeployer.activate(EJBDeployer.java:1327) at weblogic.ejb20.deployer.EJBModule.activate(EJBModule.java:610)
              at weblogic.j2ee.J2EEApplicationContainer.activateModule(J2EEApplicationContainer.java:3127)
              at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2081)
              at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2062)
              at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.activateContainer(SlaveDeployer.java:2592)
              at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.doCommit(SlaveDeployer.java:2515)
              at weblogic.management.deploy.slave.SlaveDeployer$Task.commit(SlaveDeployer.java:2317)
              at weblogic.management.deploy.slave.SlaveDeployer.commitUpdate(SlaveDeployer.java:608)
              at weblogic.drs.internal.SlaveCallbackHandler$2.execute(SlaveCallbackHandler.java:35)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              Is there any way to do this?
              

    I assume you are using queues.
              I truly wonder what you are doing different. Since the
              error is occuring outside of JMS and in the EJB - before JMS is called -
              I suggest posting to the ejb newsgroup.
              Note that yours is a standard use case which distributed destinations
              are actually specifically designed for (if you
              are using customer connection factories, just
              make sure ServerAffinity is enabled on the connection factory to
              ensure that clients always connect to the local physical destination,
              configure the MDB to refer to the JNDI name of the distributed
              destination, and then target the MDB to the cluster - an MDB pool
              will then automatically be dedicated to each physical destination).
              Tom
              Mark Colwell wrote:
              > Nope. It happens every time we try the scenario no matter what the application
              > is or which cluster. It always happens if we try to deploy even just a single
              > MDB (no other beans in the jar) to a cluster where the queue specified in the
              > deployment descripter is a local queue created on each node in the cluster. When
              > the jar is deployed we get the error.
              >
              > We have a strange situation were we really need the queue to be local and not
              > distributed but existing on every node. We can create all the local queues no
              > problem but trying to then deploy the application goes boom.
              >
              > Thanks for the response!
              >
              > Cheers,
              > Mark
              >
              > Tom Barnes <[email protected].bea.com>
              > wrote:
              >
              >>Mark Colwell wrote:
              >>
              >>
              >>>Can I create a MDB that receives messages from a Local JMS Queue (created
              >>
              >>on each
              >>
              >>>node) rather than a distributed queue?
              >>
              >>Yes. In fact this is the most common use case.
              >>
              >>
              >>>When I try to deploy such an MDB I get the following exception:
              >>
              >>I don't recall seeing this exception before. It looks like a naming
              >>conflict - it appears that somehow something is already running with
              >>the same name. Are you somehow deploying the same app twice?
              >>
              >>javax.management.InstanceAlreadyExistsException:
              >>mydomain:ApplicationRuntime=Node2_TestLocalMDBCluster,
              >>EJBComponentRuntime=Node2_TestLocalMDBCluster_TestLocalMDBCluster,
              >>Location=Node2,
              >>Name=Node2_TestLocalMDBCluster_TestLocalMDBCluster_AsyncProcessor_jms/myserver,
              >>ServerRuntime=Node2,
              >>Type=MessageDrivenEJBRuntime
              >>
              >>FYI: As of one or two weeks ago, the MDB section of the
              >>EJB docs has been heavily updated. I highly recommend
              >>reading it.
              >>
              >>
              >>>weblogic.management.DeploymentException: Exception:weblogic.management.ApplicationException:
              >>>activate failed for TestLocalMDBCluster Module: TestLocalMDBCluster
              >>
              >>Error: Exception
              >>
              >>>activating module: EJBModule(TestLocalMDBCluster,status=PREPARED) Unable
              >>
              >>to deploy
              >>
              >>>EJB: AsyncProcessor from TestLocalMDBCluster.jar: [EJB:011046]Unable
              >>
              >>to create
              >>
              >>>EJBRuntimeMBean. javax.management.InstanceAlreadyExistsException: mydomain:ApplicationRuntime=Node2_TestLocalMDBCluster,EJBComponentRuntime=Node2_TestLocalMDBCluster_TestLocalMDBCluster,Location=Node2,Name=Node2_TestLocalMDBCluster_TestLocalMDBCluster_AsyncProcessor_jms/myserver,ServerRuntime=Node2,Type=MessageDrivenEJBRuntime
              >>>at com.sun.management.jmx.RepositorySupport.addMBean(RepositorySupport.java:134)
              >>>at com.sun.management.jmx.MBeanServerImpl.internal_addObject(MBeanServerImpl.java:2371)
              >>>at com.sun.management.jmx.MBeanServerImpl.registerMBean(MBeanServerImpl.java:876)
              >>>at weblogic.management.internal.RemoteMBeanServerImpl.private_registerMBean(RemoteMBeanServerImpl.java:582)
              >>>at weblogic.management.internal.RemoteMBeanServerImpl.registerMBean(RemoteMBeanServerImpl.java:524)
              >>>at weblogic.management.runtime.RuntimeMBeanDelegate.register(RuntimeMBeanDelegate.java:166)
              >>>at weblogic.management.runtime.RuntimeMBeanDelegate.<init>(RuntimeMBeanDelegate.java:122)
              >>>at weblogic.management.runtime.RuntimeMBeanDelegate.<init>(RuntimeMBeanDelegate.java:85)
              >>>at weblogic.ejb20.monitoring.EJBRuntimeMBeanImpl.<init>(EJBRuntimeMBeanImpl.java:33)
              >>>at weblogic.ejb20.monitoring.MessageDrivenEJBRuntimeMBeanImpl.<init>(MessageDrivenEJBRuntimeMBeanImpl.java:30)
              >>>at weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.initPool(MessageDrivenBeanPoolInfoImpl.java:182)
              >>>at weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.activate(MessageDrivenBeanPoolInfoImpl.java:245)
              >>>at weblogic.ejb20.deployer.MessageDrivenBeanInfoImpl.activatePoolInfo(MessageDrivenBeanInfoImpl.java:474)
              >>>at weblogic.ejb20.deployer.MessageDrivenBeanInfoImpl.deploy(MessageDrivenBeanInfoImpl.java:440)
              >>>at weblogic.ejb20.deployer.EJBDeployer.activate(EJBDeployer.java:1327)
              >>
              >>at weblogic.ejb20.deployer.EJBModule.activate(EJBModule.java:610)
              >>
              >>>at weblogic.j2ee.J2EEApplicationContainer.activateModule(J2EEApplicationContainer.java:3127)
              >>>at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2081)
              >>>at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2062)
              >>>at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.activateContainer(SlaveDeployer.java:2592)
              >>>at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.doCommit(SlaveDeployer.java:2515)
              >>>at weblogic.management.deploy.slave.SlaveDeployer$Task.commit(SlaveDeployer.java:2317)
              >>>at weblogic.management.deploy.slave.SlaveDeployer.commitUpdate(SlaveDeployer.java:608)
              >>>at weblogic.drs.internal.SlaveCallbackHandler$2.execute(SlaveCallbackHandler.java:35)
              >>>at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at
              >>
              >>weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              >>
              >>>Is there any way to do this?
              >>
              >
              

  • Issue in Synchronous OSB using Jms Queues in OSB11g

    Hi,
    I am working on building a synchronous OSB using the following steps.
    1)     Creating the Synchronous OSB Proxy Service which routes the message to the business service which in turn places a message in the Queue(inqueue) by populating the JMSCorrelationId and waits for the response message to consume from another queue.
    2)     A Composite(SOA) will consume the message from this Queue
    3)     It will do necessary transformation and Places it in another Queue (Say Response Queue).
    4)     OSB Business service waiting in Step 1 will receive the response from this response Queue.
    I used a sample Wsdl which has both request and response message types.
    I observed that the correlation ID is maintained properly from inqueue to response queue. But the message is not getting picked up by OSB from the response Queue
    Twist: It is working absolutely fine in OSB 10g but it is not working in OSB 11g.
    I tried using Messaging service as well as using the sample WSDL i.e keepiing the soap message in the queue. Both the cases are working absolutely fine OSB 10g but not in OSB 11g.
    Can anyone faced a similar issue or any pointers will be great help in this regard.
    Regards,
    Ashok

    To debug this further can you check if the response Q has any active consumers. ? When you use response by correlation ID business service, OSB actually creates MDB's with message selectors under the hood.
    This is a sample of the ejb-jar.xml of the MDB created for a business service with response by Correlation ID pattern.
    <?xml version='1.0' encoding='UTF-8'?>
    <jav:ejb-jar xmlns:jav="http://java.sun.com/xml/ns/javaee">
    <jav:display-name>BEA ALSB JMS Outbound Sync-Async Endpoint</jav:display-name>
    <jav:enterprise-beans>
    <jav:message-driven>
    <jav:ejb-name>ResponseEJB-6577847719916437493-3893eeb7.1287d30ba4f.-7fe1</jav:ejb-name>
    <jav:ejb-class>com.bea.wli.sb.transports.jms.JmsAsyncResponseMDB</jav:ejb-class>
    <jav:transaction-type>Container</jav:transaction-type>
    <jav:message-destination-type>javax.jms.Queue</jav:message-destination-type>
    <jav:activation-config>
    *<jav:activation-config-property>*
    *<jav:activation-config-property-name>messageSelector</jav:activation-config-property-name>*
    *<jav:activation-config-property-value>JMSCorrelationID LIKE 'ID:424541534594cf52%'</jav:activation-config-property-value>*
    *</jav:activation-config-property>*
    </jav:activation-config>
    <jav:env-entry>
    <jav:env-entry-name>service-ref</jav:env-entry-name>
    <jav:env-entry-type>java.lang.String</jav:env-entry-type>
    <jav:env-entry-value>BusinessService$Test$RequestQ</jav:env-entry-value>
    </jav:env-entry>
    As you can see the message selector is based on JMSCorrelationID LIKE 'ID:424541534594cf52%'. This means the business service will pick only those messages which has its correlation ID starting with ID:424541534594cf52.
    You can see the message selector for your MDB from admin console --> deployments.
    Check and confirm if the correlation ID created in the request also starts with this value and the same is send back from the server. Also try deleting and recreating the business service or rename the business service which will create a new MDB under the hood and check the above.

  • How to delete JMS Queue using WSLT thru JNDI?

    How to delete JMS Queue using WSLT thru JNDI?

    Hi,
    You can use the following WLST script to delete the queue :-
    edit()
    cd('/JMSSystemResources/MyModule/JMSResource/MyModule')
    startEdit()
    cmo.destroyQueue(getMBean('/JMSSystemResources/MyModule/JMSResource/Mymodule/Queues/MyQueue'))
    activate()
    Is it what you are looking for?
    I hope this helps.
    Regards.
    Edited by: mchellap on Dec 11, 2008 4:27 PM

  • How to Run a simple program using JMS Queue.!!

    Hi All,
    I am trying to run simple program on JMS Queue.
    Using SOA Suite 10.1.3.2
    I created a connection factory and queue using EM.
    Connection Factory => Domain : Queue JNDI Location : jms/sidConnectionFactory
    Queue Name : SidQueue JNDI Location : jms/SidQueue
    Tried running a simple java class to send the messages to queue.[Pls find the file attached].
    Getting this error
    javax.naming.NamingException: META-INF/application-client.xml not found (see J2EE spec, application-client chapter for requirements and format of the file)
    at oracle.j2ee.naming.ApplicationClientInitialContextFactory.getRequiredClasspathResource(ApplicationClientInitialContextFactory.java:239)
    at oracle.j2ee.naming.ApplicationClientInitialContextFactory.getArchive(ApplicationClientInitialContextFactory.java:161)
    at oracle.j2ee.naming.ApplicationClientInitialContextFactory.getInitialContext(ApplicationClientInitialContextFactory.java:111)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
    Can some one tell me how i need to create this file and where to place this[i.e is this need to be placed in  my project or some directory structure of <SOA-HOME>
    Thx,
    Siddhardha.
    Code:
    package demo;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Properties;
    import javax.jms.*;
    import javax.naming.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class JMSQueue {
        public static void main(String args[])
    QueueConnection queueConnection;
    QueueSession queueSession;
    //private MessageProducer producer;
    QueueSender queueSender;
    try {          
    String message = "Test";
    String connectionFactoryName = "jms/sidConnectionFactory";
    String destinationName = "jms/SidQueue";
    /*Do i need to use this .......
    * If so where is the error in below statements...
    * Properties env = new Properties( );
    // ... specify the JNDI properties specific to the vendor
    env.put(Context.SECURITY_PRINCIPAL, "admin");
    env.put(Context.SECURITY_CREDENTIALS, "welcome");
    env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.evermind.server.ApplicationClientInitialContextFactory");
    env.put(Context.PROVIDER_URL,
    "ormi://localhost:23791");
    Context ctx = new InitialContext();
    // Get the connection factory.
    QueueConnectionFactory cf = (QueueConnectionFactory)ctx.lookup(connectionFactoryName);
    // Get the destination.
    Queue destination = (Queue) ctx.lookup(destinationName);
    // Use the connection factory to create a connection.
    queueConnection = cf.createQueueConnection();
    // Start the connection.
    queueConnection.start();
    // Use the connection to create a session.
    queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    // Use the session and destination to create a message producer and a message consumer.
    //producer = queueSession.createProducer(destination);
    queueSender = queueSession.createSender(destination);
    TextMessage msg = queueSession.createTextMessage(message);
    queueSender.send(msg);
    queueSession.close();
    queueConnection.close();
    catch (Exception ex) {
    ex.printStackTrace();
    * Attached following libraries to the Project
    * jms.jar
    * optic.jar
    * oc4jclient.jar
    */

    Hi,
    You need to change the INITIAL_CONTEXT_FACTORY to com.evermind.server.RMIInitialContextFactory.
    Regards,
    Sandeep

Maybe you are looking for