JMS distributed destination

In Bea's WLS 7.0 JMS: "Looking up Distributed Topics" and "Deploying Message-Drive
Beans on a Distributed Topic" :
http://e-docs.bea.com/wls/docs70/jms/implement.html#1260828
This sound like each message(topic) gets sent to all members of a distributed
topic.
Then in the same doc for LB, a couple paragraphs down we have a conflict explaination:
"In the round-robin algorithm, WebLogic JMS maintains an ordering of physical
destinations within the distributed destination. The messaging load is distributed
across the physical destinations one at a time in the order that they are defined
in the WebLogic Server configuration (config.xml) file. "
If a topcs sent to a distributed topic will be sent to all physical destinations,
why we need LB here. Or the LB is applied to distributed Queue only.
Please comments.
THX.
-John

Rob,
Not a expert I must admit, but the link provided by you states "A distributed destination is a set of destinations (queues or topics) that are accessible as a single, logical destination to a client. A distributed destination has the following characteristics:
It is referenced by its own JNDI name."
You can actually configure JMS adapters using JNDI so I think this should be possible. More info here,
http://help.sap.com/saphelp_nw04/helpdata/en/c1/739c4186c2a409e10000000a155106/content.htm
Do let us know if this helps and works!
Regards
Bhavesh

Similar Messages

  • JMS Distributed Destination Topic - how to avoid MDB to recieve duplicates

    HELP!!
              I have spent a lot of time looking for an option to move jms on a cluster, finally I can do this using distributed destination, I have two memmbers(Topic) in the distributed destination topic, but when both of them are active, the Message Driven Bean which is deployed on cluster recieves 2 messages instead of 1, anyone please help me to change this to have only one message instead of 2 !!!!!

    Make it a Queue or don't deploy the MDB to the cluster. You are seeing
              expected behavior. I have the same situation with a Topic and I deploy my
              MDB to one node in the cluster and have it configured to consume the local
              physical Topic.
              Bill
              "Manav Sehgal" <[email protected]> wrote in message
              news:18024883.1107530318601.JavaMail.root@jserv5...
              > HELP!!
              > I have spent a lot of time looking for an option to move jms on a
              > cluster, finally I can do this using distributed destination, I have two
              > memmbers(Topic) in the distributed destination topic, but when both of
              > them are active, the Message Driven Bean which is deployed on cluster
              > recieves 2 messages instead of 1, anyone please help me to change this to
              > have only one message instead of 2 !!!!!
              

  • JMS Distributed Destinations as proxy service endpoints

    We have a cluster of 2 ALSB servers with a proxy service deployed
    listening on a JMS queue which is a distributed destination (DD) on a
    WLS 8.1 system.
    The JMS DD is spread across 4 JMS servers and 4 JVM's.
    When ALSB starts up - we only get consumers on 2 of the 4 DD members,
    which makes sense as a JMS proxy service is essentially an MDB, and this
    is normal MDB/distributed destination behaviour - it will bind to the
    queue member where it first makes the connection to the JVM.
    How do I make sure my messages are consumed from all 4 DD queue members?
    There is a JMS option to forward messages to queues with consumers if no
    consumers exist - is that the way to do it?
    Someone must have come across this before and I'd be grateful for any
    advice.
    Also - how do you reduce the consumers on the JMS queue - seems to
    default to 16. Perhaps you don't.
    Thanks,
    Pete

    Meghan Pietila wrote:
    Update: I see your exchange with Tom over on the JMS forum, Pete. We just switched everything to WLS 9.2, so maybe the ALSB internal extension will work for us. It's not working by default, so possibly it's something that must be activated... I'll follow up with BEA.
    http://forums.bea.com/thread.jspa?threadID=570001317
    I'd still like to hear what you end up working with, if you don't mind sharing once it's running. :)
    MeghanI only have 8.1 as an option - a JMS proxy service is essentially an
    MDB, and if you deploy an MDB in the same way, it will only bind to a
    single destination, so it's actually behaving as I would expect.
    The forward delay on the queue probably won't be an issue for us, as
    we're not talking about high volumes and large messages, but for some
    sites there will be alot of moving around queues, access jms filestore
    etc which you could do without.
    I reckon the trick is (as Tom mentioned) to bind to individual
    distributed queue members from the proxy service somehow.
    I'll let you know what I find out.
    Pete

  • How i can implement in 6.0 the JMS Distributed Destination feature of 7.0 ?

              Hi all,
              Peace,
              Juan Alonso.
              

    Hi Juan,
              Check out the jms performance whitepaper posted on dev2dev, or find
              attached to post:
              http://newsgroups.bea.com/cgi-bin/dnewsweb?utag=&group=weblogic.developer.interest.jms&xrelated=9372&cmd_thread_last.x=42&cmd_thread_last.y=8
              It contains a section on emulating 7.0 distributed queues in 6.1.
              Also check out the newsgroup thread on "Approximating Distributed Queues
              In 6.1".
              http://newsgroups.bea.com/cgi-bin/dnewsweb?cmd=article&group=weblogic.developer.interest.jms&item=9415&utag=
              It extends the above whitepaper to cover topics...
              I think you may need 6.1, an easy upgrade from 6.0.
              Tom
              Juan Alonso wrote:
              > Hi all,
              >
              > Peace,
              >
              > Juan Alonso.
              

  • Distributed destination with MQ as Foreign Provider

    Hi
              Messages arrive in a set of clustered MQ Series Queues. MDBs process the messages (We use MQ as the Foreign JMS Provider). Can I set up a distributed destination (JMS Queues) in WebLogic and use those clustered MQ queues as the Foreign Provider ? I would like the MQ Series clustering to provide the redundancy/availability of the MQ Series system and the JMS distributed destination to provide high availability for the MDBs that are hosted in a set of clustered WebLogic server instances.
              Thanks

    Hi          > Messages arrive in a set of clustered MQ Series
              > Queues. MDBs process the messages (We use MQ as the
              > Foreign JMS Provider). Can I set up a distributed
              > destination (JMS Queues) in WebLogic and use those
              > clustered MQ queues as the Foreign Provider ?
              No. WL distributed destinations consist only of a set of physical WL destinations. The WL distributed destination code does not support non-WL destinations.
              > I would
              > like the MQ Series clustering to provide the
              > redundancy/availability of the MQ Series system and
              > the JMS distributed destination to provide high
              > availability for the MDBs that are hosted in a set of
              > clustered WebLogic server instances.
              If MQ Series exposes its distributed destination via the standard JMS API, then the MDBs will automatically run as MQ distributed dest clients. This is a function of MQ, not WL -- WL MDBs simply use the standard JMS API of the vendor's supplied client to get their messages.
              But note that WL MDBs use a single connection per MDB pool/deployment. Some clustering implementations (MQ?) require using multiple connections...
              >
              > Thanks

  • JMS Failover with Distributed Destinations in 7.0

              How does JMS failover with distributed destinations in WL 7.0?
              In an environment using file stores for persistent messages, can a working server
              automatically pick up unprocessed and persisted messages from a failed server?
              If so, what's the best way to set this up?
              Or, is this completely manual? In other words, we have to bring up a new server
              pointing to the location of the file store from the failed server?
              

              It appears that two JMSServers cannot share the same file store and, I'm assuming,
              two file stores cannot be using the same directory for persistence.
              So the HA you're talking about is something like Veritas automatically restarting
              a server (or starting a new one) to process the messages in the persistent queue
              that were unprocessed at the time of failure with the file store residing on some
              sort of HA disk array.
              The key point is that a message once it arrives at a server must be processed
              by that server or, in the case of failure of that server, must be processed by
              a server similarly configured to the one that failed so that it picks up the unprocessed
              messages. The message can't be processed by another server in the cluster.
              Or, is there some trick that could be employed to copy from the file store of
              the failed server and repost the messages to the still operating servers?
              "Zach" <[email protected]> wrote:
              >Unless you have some sort of HA framework/hardware, this is a manual
              >operation. You either point to the existing persistent storage (shared
              >storage or JDBC connection pool), or you move the physical data.
              >
              >_sjz.
              >
              >"Jim Cross" <[email protected]> wrote in message
              >news:[email protected]...
              >>
              >>
              >> How does JMS failover with distributed destinations in WL 7.0?
              >>
              >> In an environment using file stores for persistent messages, can a
              >working
              >server
              >> automatically pick up unprocessed and persisted messages from a failed
              >server?
              >> If so, what's the best way to set this up?
              >>
              >> Or, is this completely manual? In other words, we have to bring up
              >a new
              >server
              >> pointing to the location of the file store from the failed server?
              >
              >
              

  • WebLogic 10.3 jms Uniform Distributed Destination

    We are running WL Server 10.3 on Suse 11.0. I have created a Cluster, Servers, JMS Servers, Connection Factory and a Distributed Destination. On the Connection Factory, I have the "Server Affinity" checkbox unchecked. Server/Cluster all look good. I am using the jmsfullclient.jar for the test.
    When attempting to access the distributed destination, I get the following error on the second message. If I were to turn on "Session Affinity" in the Cluster, the problem does not arise but I lose the value of the distributed destination. Any suggestions and assistance would be appreciated.:
    weblogic.jms.common.JMSException: No failover destination.
         at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)
         at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:61)
         at weblogic.jms.client.JMSProducer.toFEProducer(JMSProducer.java:1275)
         at weblogic.jms.client.JMSProducer.deliveryInternal(JMSProducer.java:783)
         at weblogic.jms.client.JMSProducer.sendInternal(JMSProducer.java:541)
         at weblogic.jms.client.JMSProducer.sendWithListener(JMSProducer.java:394)
         at weblogic.jms.client.JMSProducer.send(JMSProducer.java:384)
         at weblogic.jms.client.WLProducerImpl.send(WLProducerImpl.java:970)
         at com.overstock.util.Example.main(Example.java:44)
    Caused by: weblogic.jms.common.JMSException: No failover destination.
         at weblogic.jms.frontend.FEProducer.pickNextDestination(FEProducer.java:750)
         at weblogic.jms.frontend.FEProducer.sendRetryDestination(FEProducer.java:1092)
         at weblogic.jms.frontend.FEProducer.send(FEProducer.java:1399)
         at weblogic.jms.frontend.FEProducer.invoke(FEProducer.java:1460)
         at weblogic.messaging.dispatcher.Request.wrappedFiniteStateMachine(Request.java:961)
         at weblogic.messaging.dispatcher.DispatcherServerRef.invoke(DispatcherServerRef.java:276)
         at weblogic.messaging.dispatcher.DispatcherServerRef.handleRequest(DispatcherServerRef.java:141)
         at weblogic.messaging.dispatcher.DispatcherServerRef.access$000(DispatcherServerRef.java:34)
         at weblogic.messaging.dispatcher.DispatcherServerRef$2.run(DispatcherServerRef.java:111)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: weblogic.messaging.dispatcher.DispatcherException: could not find Server null
         at weblogic.messaging.dispatcher.DispatcherManager.dispatcherCreate(DispatcherManager.java:176)
         at weblogic.messaging.dispatcher.DispatcherManager.dispatcherFindOrCreate(DispatcherManager.java:58)
         at weblogic.jms.dispatcher.JMSDispatcherManager.dispatcherFindOrCreate(JMSDispatcherManager.java:219)
         at weblogic.jms.dispatcher.JMSDispatcherManager.dispatcherFindOrCreateChecked(JMSDispatcherManager.java:230)
         at weblogic.jms.frontend.FEProducer.findDispatcher(FEProducer.java:825)
         at weblogic.jms.frontend.FEProducer.sendRetryDestination(FEProducer.java:995)
         ... 9 more
    Caused by: javax.naming.NameNotFoundException: Unable to resolve 'weblogic.messaging.dispatcher.S:null'. Resolved 'weblogic.messaging.dispatcher'; remaining name 'S:null'
         at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
         at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:252)
         at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
         at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
         at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:380)
         at javax.naming.InitialContext.lookup(InitialContext.java:392)
         at weblogic.messaging.dispatcher.DispatcherManager.dispatcherCreate(DispatcherManager.java:172)
         ... 14 more
    My client code is extremely basic and is the following:
    public class Example {
    public static void main(String args[]) {
    String providerUrl = "t3://localhost:7003,localhost:7005";
    Hashtable<String, String> ht = new Hashtable<String, String>();
    ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    ht.put(Context.PROVIDER_URL, providerUrl);
    InitialContext ctx = null;
    try {
    ctx = new InitialContext(ht);
    ConnectionFactory connFactory = (ConnectionFactory) ctx
    .lookup("connectionfactory");
    Destination dest = (Destination) ctx.lookup("distributedqueue");
    Connection conn = null;
    Session session = null;
    MessageProducer p = null;
    try {
    conn = connFactory.createConnection();
    conn.start();
    System.out.println("Thread:" + Thread.currentThread().getId() + " got a connection "
    + conn.hashCode());
    session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    p = session.createProducer(dest);
    System.out.println("Thread:" + Thread.currentThread().getId() + " started a connection");
    for (int i = 0; i < 1000; i++) {
    p.send(session.createTextMessage());
    System.out.println("FinishedRunning:" + Thread.currentThread().getId());
    catch (JMSException e) {
    e.printStackTrace();
    finally {
    if (p != null) {
    try {
    p.close();
    catch (JMSException e) {
    e.printStackTrace();
    if (session != null) {
    try {
    session.close();
    catch (JMSException e) {
    e.printStackTrace();
    if (conn != null) {
    try {
    conn.close();
    catch (JMSException e) {
    e.printStackTrace();
    catch (Exception e) {
    e.printStackTrace();
    Edited by: svachary on Jan 8, 2009 1:01 PM

    Hi,
    I would suggest you to go through these 2 links which you give all the details about UDD
    Topic:Steps to Configure Uniform Distributed Queue (UDQ) on Weblogic Server
    http://middlewaremagic.com/weblogic/?p=3747
    Topic:JMS Demo using WebLogic Uniform Distributed Queue (UDQ)
    http://middlewaremagic.com/weblogic/?page_id=1976
    Tips to solve UDQ issues
    - Make sure the Server Affinity Enabled parameter should be un-checked (disable) which under the [ Connection factory –> Configuration (tab) –> Load Balance (sub-tab)]
    - Disable the Server Affinity Enabled parameter for the connection factory whish is been used by your UDQ.
    - All the managed servers are in the same cluster.
    - If the managed serves are in different boxes make sure the listing address is given correctly which is under [ Machine –> Configuration (tab) –> Node Manager (sub-tab) ]
    - Test if you are able to PING the servers on different boxes and make sure that there is no network issues and you are able to communicate with the servers.
    Hope this helps you.
    Regards,
    Ravish Mody
    http://middlewaremagic.com/weblogic/
    Come, Join Us and Experience The Magic…

  • Error occurred while forwarding a message for distributed destination

    Is there a change in the way that Uniform Distributed Destinations are handled in the cluster after weblogic9.2?
    I am using oracle weblogic 10.3.0.1 in production mode. I have two managed servers, each managed server has a JMS Server.
    I create a Uniform distributed Topic on the System module, and publish a message to it.
    I can see the message in the topic on the first JMSServer but the following error happens and the message never makes it to the second JMSServer
    <Sep 24, 2009 2:00:45 PM GMT+00:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RESUMING>
    <Sep 24, 2009 2:00:45 PM GMT+00:00> <Notice> <Cluster> <BEA-000162> <Starting "async" replication service with remote cluster address "null">
    <Sep 24, 2009 2:00:45 PM GMT+00:00> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure" is now listening on IP:PORT for protocols iiops, t3s, CLUSTER-BROADCAST-SECURE, ldaps, https.>
    <Sep 24, 2009 2:00:45 PM GMT+00:00> <Notice> <WebLogicServer> <BEA-000330> <Started WebLogic Managed Server "ManSvr1" for domain "Domain" running in Production Mode>
    <Sep 24, 2009 2:00:46 PM GMT+00:00> <Notice> <Cluster> <BEA-000102> <Joining cluster Clus on mip:mport>
    <Sep 24, 2009 2:00:47 PM GMT+00:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING>
    <Sep 24, 2009 2:00:47 PM GMT+00:00> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
    <Sep 24, 2009 2:09:52 PM GMT+00:00> <Warning> <JMS> <BEA-040498> <An error occurred while forwarding a message for distributed destination member JMSSystemResource!JMSServer2@example: weblogic.messaging.dispatcher.DispatcherException: java.rmi.RemoteException: Could not establish a connection with 8935413426058515615S:fqhn:[-1,-1,sslport,sslport,-1,-1,-1]:Domain:ManSvr2, java.rmi.ConnectException: No known valid port for: 'Default[t3]:t3(t3):fqhn:nonsslport:null:-1'; No available router to destination; nested exception is:
         java.rmi.ConnectException: No known valid port for: 'Default[t3]:t3(t3):fqhn:nonsslport:null:-1'; No available router to destination; nested exception is:
         java.rmi.ConnectException: Could not establish a connection with 8935413426058515615S:fqhn:[-1,-1,sslport,sslport,-1,-1,-1]:Domain:ManSvr2, java.rmi.ConnectException: No known valid port for: 'Default[t3]:t3(t3):fqhn:nonsslport:null:-1'; No available router to destination; nested exception is:

    I specified the cluster address, but still get the following errors after a message is published to the topic. Are there other configuration items that can be checked?
    <Sep 29, 2009 9:51:49 AM GMT+00:00> <Notice> <Security> <BEA-090082> <Security initializing using security realm myrealm.>
    <Sep 29, 2009 9:52:01 AM GMT+00:00> <Notice> <Server> <BEA-002613> <Channel "DefaultAdministration" is now listening on 10.241.134.92:7018
    for protocols admin, CLUSTER-BROADCAST-SECURE, ldaps, https.>
    <Sep 29, 2009 9:53:26 AM GMT+00:00> <Notice> <Server> <BEA-002613> <Channel "DefaultSecure" is now listening on 10.241.134.92:7019 for
    protocols iiops, t3s, CLUSTER-BROADCAST-SECURE, ldaps, https.>
    <Sep 29, 2009 9:53:26 AM GMT+00:00> <Notice> <WebLogicServer> <BEA-000330> <Started WebLogic Managed Server "ClusManSv
    r2" for domain "domain" running in Production Mode>
    <Sep 29, 2009 9:53:26 AM GMT+00:00> <Notice> <Cluster> <BEA-000102> <Joining cluster Clus on 224.0.0.10:7390>
    <Sep 29, 2009 9:53:27 AM GMT+00:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING>
    <Sep 29, 2009 9:53:27 AM GMT+00:00> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
    <Sep 29, 2009 9:56:14 AM GMT+00:00> <Warning> <JMS> <BEA-040498> <An error occurred while forwarding a message for distributed destinati
    on member SOAFJMSSystemResource!SOAFJMSServer1@EventingAdminTopic: weblogic.messaging.dispatcher.DispatcherException: java.rmi.RemoteExc
    eption: Could not establish a connection with 5660061832836428941S:managedServer.net:[-1,-1,7017,7017,-1,-1,-1]:testnn
    2092.net:domain:ClusManSvr1, java.rmi.ConnectException: No known valid port for: 'Def
    ault[t3]:t3(t3):managedServer.net:7018:null:-1'; No available router to destination; nested exception is:
    java.rmi.ConnectException: No known valid port for: 'Default[t3]:t3(t3):managedServer.net:7018:null:-1'; No ava
    ilable router to destination; nested exception is:
    java.rmi.ConnectException: Could not establish a connection with 5660061832836428941S:managedServer.net:[-1,-1,1
    1217,7017,-1,-1,-1]:managedServer.net:domain:ClusManSvr1, java.rmi.ConnectException: No
    known valid port for: 'Default[t3]:t3(t3):managedServer.net:7018:null:-1'; No available router to destination; nested
    exception is:
    java.rmi.ConnectException: No known valid port for: 'Default[t3]:t3(t3):managedServer.net:7018:null:-1'; No ava
    ilable router to destination
    weblogic.messaging.dispatcher.DispatcherException: java.rmi.RemoteException: Could not establish a connection with 5660061832836428941S:
    managedServer.net:[-1,-1,7017,7017,-1,-1,-1]:managedServer.net:domain:
    ClusManSvr1, java.rmi.ConnectException: No known valid port for: 'Default[t3]:t3(t3):managedServer.net:7018:null:-1'; N
    o available router to destination; nested exception is:
    java.rmi.ConnectException: No known valid port for: 'Default[t3]:t3(t3):managedServer.net:7018:null:-1'; No ava
    ilable router to destination; nested exception is:
    java.rmi.ConnectException: Could not establish a connection with 5660061832836428941S:managedServer.net:[-1,-1,1
    1217,7017,-1,-1,-1]:managedServer.net:domain:ClusManSvr1, java.rmi.ConnectException: No
    known valid port for: 'Default[t3]:t3(t3):managedServer.net:7018:null:-1'; No available router to destination; nested
    exception is:
    java.rmi.ConnectException: No known valid port for: 'Default[t3]:t3(t3):managedServer.net:7018:null:-1'; No ava
    ilable router to destination
    at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchAsync(DispatcherWrapperState.java:158)
    at weblogic.jms.dispatcher.DispatcherAdapter.dispatchAsync(DispatcherAdapter.java:84)
    at weblogic.jms.backend.BEForwardingConsumer$1.run(BEForwardingConsumer.java:503)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.jms.backend.BEForwardingConsumer.processMessages(BEForwardingConsumer.java:499)
    Truncated. see log file for complete stacktrace
    java.rmi.RemoteException: Could not establish a connection with 5660061832836428941S:managedServer.net:[-1,-1,7017,701
    7,-1,-1,-1]:managedServer.net:domain:ClusManSvr1, java.rmi.ConnectException: No known v

  • Using Messaging  Bridge with Distributed Destinations

    I'm having some problems using Distributed Destinations with the Messaging Bridge in WLS 7.0sp2. Our configuration consists of the following:
              * WLS Server1:
              * JMS Server1:
              * inbound queue
              * outbound queue
              * JMS Server2:
              * inbound queue
              * outbound queue
              * WLS Server 2:
              * JMS Server3:
              * inbound queue
              * outbound queue
              A distributed destination is configured for the inbound and outbound queues.
              Two messaging queues are configured so that bridge from WLS JMS to Tibco JMS using the distributed destinations.
              Everything is working fine for the inbound, but we have found that the outbound messaging bridge is picking up messages from only one of the two JMS servers on the first WLS instance. When monitoring, it can be seen that there is no consumer registered against the second JMS server.
              Any suggestions?
              

    Hi Rob,
              Consumers on distributed destinations are always pinned
              to a single physical destination on creation. Only
              producers can round-robin each message. When a
              distributed destination is used as a source destination,
              you will need to configure a bridge per distributed
              destination. Alternatively, you can enable
              forwarding between the physical queues, which automatically
              forwards messages from physical queues with
              no consumers to physical queues that have consumers
              (but the extra hop impacts performance). For more information,
              consult the JMS documentation.
              Tom
              Rob McArthur wrote:
              > I'm having some problems using Distributed Destinations with the Messaging Bridge in WLS 7.0sp2. Our configuration consists of the following:
              > * WLS Server1:
              > * JMS Server1:
              > * inbound queue
              > * outbound queue
              > * JMS Server2:
              > * inbound queue
              > * outbound queue
              > * WLS Server 2:
              > * JMS Server3:
              > * inbound queue
              > * outbound queue
              >
              > A distributed destination is configured for the inbound and outbound queues.
              >
              > Two messaging queues are configured so that bridge from WLS JMS to Tibco JMS using the distributed destinations.
              >
              > Everything is working fine for the inbound, but we have found that the outbound messaging bridge is picking up messages from only one of the two JMS servers on the first WLS instance. When monitoring, it can be seen that there is no consumer registered against the second JMS server.
              >
              > Any suggestions?
              >
              >
              

  • JMS Adapter Destination Name value

    Hi
    I am trying to connect to a WLS remote distributed queue using the JMS Adapter but I am struggling to find the correct format for the destination name property as each time it gives various JMSExceptions stating that it cannot find the queue. Below is the .jca properties
    <connection-factory location="eis/wls/Queue" UIConnectionName="OSB_Test" UIJmsProvider="WLSJMS" adapterRef=""/>
    <endpoint-activation portType="Consume_Message_ptt" operation="Consume_Message">
    <activation-spec className="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec">
    <property name="DestinationName" value="jndiEmployeeDQ"/>
    <property name="UseMessageListener" value="false"/>
    <property name="PayloadType" value="TextMessage"/>
    </activation-spec>
    </endpoint-activation>
    I have also set the factory properties of the outbound connection pool as follows
    java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory; java.naming.provider.url= t3://<remote-hostname>:<port>;java.naming.security.principal= <username>;java.naming.security.credentials=<password>
    Below is the message I am receiving
    <01-Feb-2011 11:35:32 o'clock GMT> <Warning> <oracle.soa.adapter> <BEA-000000> <JMSAdapter TestEmployeeQueueA
    BINDING.JCA-12135
    ERRJMS_ERR_CR_QUEUE_CONS.
    ERRJMS_ERR_CR_QUEUE_CONS.
    Unable to create Queue consumer due to JMSException.
    Please examine the log file to determine the problem.
         at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:620)
         at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:497)
         at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.createConsumer(JMSMessageConsumer.java:342)
         at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.init(JMSMessageConsumer.java:913)
         at oracle.tip.adapter.jms.inbound.JmsConsumer.init(JmsConsumer.java:862)
         at oracle.tip.adapter.jms.JmsEndpoint.run(JmsEndpoint.java:163)
         at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:105)
         at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183)
         at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30)
    Caused by: weblogic.jms.common.JMSException: [JMSExceptions:045101]The destination name passed to createTopic or createQueue "jndiEmployeeDQ" is invalid. If the destination name does not contain a "/" character then it must be the name of a distributed destination that is available in the cluster to which the client is attached. If it does contain a "/" character then the string before the "/" must be the name of a JMSServer or a ".". The string after the "/" is the name of a the desired destination. If the "./" version of the string is used then any destination with the given name on the local WLS server will be returned.
         at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)
         at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:61)
         at weblogic.jms.client.JMSSession.createDestination(JMSSession.java:3192)
         at weblogic.jms.client.JMSSession.createQueue(JMSSession.java:2577)
         at weblogic.jms.client.WLSessionImpl.createQueue(WLSessionImpl.java:938)
         at oracle.tip.adapter.jms.JMS.JMSDestination.getQueue(JMSDestination.java:83)
         at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:605)
         ... 8 more
    Has anyone encountered this problem before?
    Damien

    Could you connect to same destination using any other client (like java). I think issue is either in the queue deployment or in the connection pool configuration at your side. Make sure that queue is available (by connecting to same queue using any other client) and cross check you connection pool configuration.
    Let us know the version of products you are using and connecting to.
    Regards,
    Anuj

  • [WLST offline]: Cannot create distributed destination

    We have a small problem with WLST and distributed destinations. I have made the following code:
    readDomain ('< our domain path >/Demo8')
    # Check that the queue exists
    ls ('/JMSServer/cgJMSServer1/JMSQueue')
    create ('myQueue1','JMSDistributedQueue')
    cd ('JMSDistributedQueue')
    cd ('myQueue1')
    set ('JNDIName','myjndi')
    create ('member1','JMSDistributedQueueMember')
    cd ('JMSDistributedQueueMember')
    cd ('member1')
    set ('JMSQueue','queue1')
    cd ('..')
    cd ('..')
    UpdateDomain()
    The problems is, that the command "set ('JMSQueue','queue1')" fails.
    Does anyone have an example of a successful WLST configuration of Distributed Destinations?
    The error message from my script is:
    Error: setJMSQueue() failed.
    Error: set() failed.
    Traceback (innermost last):
    File "scr.py", line 19, in ?
    File "initWls.py", line 46, in set
    com.bea.plateng.domain.script.jython.WLSTException: java.lang.reflect.Invocation
    TargetException
    at com.bea.plateng.domain.script.jython.CommandExceptionHandler.handleEx
    ception(CommandExceptionHandler.java:33)
    Your help will really be appreciated....
    Kind regards,
    Henrik

    The best way to create distributed destinations is to create physical destinations in single server mode and then create more servers and a cluster. wlst offline will automatically create distribued destinations and members. Considering that the recommended JMS architecture is homogeneous, there is little need to do it manually. An example:
    readTemplate('c:/bea813/weblogic81/common/templates/domains/medrec.jar')
    cd('JMSServer/MedRecJMSServer')
    q=create('newQueue', 'JMSQueue')
    q.setJNDIName('newQueue')
    cd('/')
    create('newServer1', 'Server')
    create('newServer2', 'Server')
    create('newCluster', 'Cluster')
    assign('Server', 'newServer1,newServer2', 'Cluster', 'newCluster')
    writeDomain('d:/temp/domains/813/medrec/medrec_0720')
    closeTemplate();

  • Distributed destination issue on Web Logic server 8.1

    Hi,
    I'm using distributed JMS destination (Cluster) of Web Logic server 8.1.
    I'm using Oracle B2B to talk to the cluster. Oracle B2B is only creating a consumer on one of the managed servers in this cluster. This is resulting in loss of messages when messages are placed by the WLI on the other managed server.
    Further the consumers are created randomly by Oracle B2B.
    My question here is whether Web Logic Server 8.1 supports multiple consumers for its clusters?
    Please Help!
    Thanks in advance.
    Warm Regards,
    Suhas.

    Are your consumers co-located with each managed server or remote?
    Let me preface this by this is the way I believe it works...
    The reason I ask is that distributed destinations route to one managed server at connect time. So for producers, when 1 message is placed on a distributed destination, it is really routed to only 1 managed server queue. From a remote consumer standpoint, when connecting to a distributed destination to read messages, you are only routed to one of the managed server queues to read from, not the logical superset of all queues in the distributed destination. So you would need to connect to each distributed destination member queue directly to ensure each had consumers. Whereas if your consumers are co-located on the cluster, then they can each connect to the local member queue for that distributed destination and ensure that each member of the distributed destination has consumers.
    I'd recommend you note the follow docs:
    QueueReceivers
    http://edocs.bea.com/wls/docs103/jms/dds.html
    When creating a queue receiver, if the supplied queue is a distributed queue, then a single physical queue member is chosen for the receiver at creation time. The created QueueReceiver is pinned to that queue member until the queue receiver loses its access to the queue member. At that point, the consumer will receive a JMSException, as follows:
    If the queue receiver is synchronous, then the exception is returned to the user directly.
    If the queue receiver is asynchronous, then the exception is delivered inside of a ConsumerClosedException that is delivered to the ExceptionListener defined for the consumer session, if any.
    Upon receiving such an exception, an application can close its queue receiver and recreate it. If any other queue members are available within the distributed queue, then the creation will succeed and the new queue receiver will be pinned to one of those queue members. If no other queue member is available, then the application won’t be able to recreate the queue receiver and will have to try again later.
    Note:      For information on the load-balancing heuristics for distributed queues with zero consumers, see “Configuring Distributed Destination Resources”.
    http://edocs.bea.com/wls/docs103/jms_admin/advance_config.html#jms_distributed_destination_config
    The producer makes such a decision each time it sends a message. However, there is no compromise of ordering guarantees between a consumer and producer, because consumers are load balanced once, and are then pinned to a single destination member.

  • Unable to get distributed destination in cluster

    [Cross post with interest.jms]
              Hi,
              I'm working with Weblogic 8.1.2 on Windows. Up until now I've always worked with a single server on which I have configured a JMS server and a number of queues. My clients get references to the queues using the createQueue() method. I now need to test in a clustered environment and my clients are no longer able to create queues; my clients gets a "Invalid destination name" each time.
              I've created a simple cluster with 2 servers and one distributed connection. Each server in the cluster has a uniquely named JMS server. I created a distributed connection called C1_DIST_SECURITY_PERSISTENCE and then created the members automatically for the cluster. My understanding from what I've read is that is the client should no longer need to name the JMS server when calling createQueue, instead the distributed destination name should be sufficient. So, my client calls
              session.createQueue("C1_DIST_SECURITY_PERSISTENCE")
              Everytime it does this it gets the exception: weblogic.jms.common.JMSException: Invalid destination name: C1_DIST_SECURITY_PERSISTENCE
              As an aside I modified my code to try explicitly looking up one of the destination members. In this case a totally different exception occurs:
              eblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Environment not found on thread ] at weblogic.jndi.internal.NamingNodeReplicaHandler.<init>(NamingNodeReplicaHandler.java:150) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
              Any help here greatly appreciated.
              Thanks,
              Aoife

    Hi Gsrc,
    This is my code in the PR.
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    String itemNum=pageContext.getParameter("itemNum");
    System.out.println("item nnum "+itemNum);
    i am getting a null value in the print stmt.
    Thanks.
    Message was edited by:
    SRK84

  • Monitoring jms distributed queue on WebLogic 8.1 via MBeans

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

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

  • Programming for Using JMS Distributed Queues

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

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

Maybe you are looking for

  • Treo 700P and WiFi?

    I'm interested in getting a Treo 700P and from what I've read it seems like it'll do everything I need it to, especially when using The Missing Sync by Mark/Space. My only problem is I want to be able to connect to the Internet and check my email usi

  • Net Price in Print Preview of Purchase Order

    Hi all,     I have a typical issue over here,,,   1. Created two similar materials A, B  with material type HALB, data in all the fields were same except material description. 2. maintained all excise details in J1ID 3. Created a PO for these two mat

  • Partial footage/black screen when replacing footage in PPro CS5

    Let's see if I can get all the relevant info down here. Started off with a project in PPro CS5; using two source files (one an MP4 from a Flip cam - not the footage I am having an issue with) the other a direct-stream feed from a 3D application, conv

  • What is the T-Code for creating Cost center - profit center standard hierar

    Hi, What is the T-Code for creating Cost center - profit center standard hierarchy.Please provide me the T-codes. Thanks

  • Binding to an indexed property

    Hi Not sure if this is the correct way to do this, but I created an indexed property ( String array ) in the session bean with the intention of binding a TextField value to an indexed position on the indexed property. When attempting to perform the P