JMS Server on a cluster stores all  msgs posted to Distributed Queue on 1 server failure

          Hi
          I have a Cluster setup with 2 managed servers srvr1 & srvr2 each running its own
          JMS server.
          Product version in use is Weblogic SP2.
          Configured a Distributed Queue and deployed it on both the JMS servers.
          Set the load-balancing to round-Robin and Server-Affinity to False on the connection
          factory.
          The producer is an external client which posts 100 messages to the Distributed
          queue.
          Consumers are MDBs pinned to the respective physical queues on the respective
          JMS servers.
          Each server has its own store.
          Once 100 messages are posted to the Distributed Queue. The messages are distributed
          to
          the 2 Physical Destinations equally i.e 50-50 each.
          While the MDBs are processing the msgs, server srvr1 is brought down at a point
          when it has consumed only 10 of its 50 msgs.
          When the srvr1 is brought up again, i am finding that the store for that JMS server
          contains the 40 unprocessed msgs in its physical queue + the msgs on the other
          queue that were unprocessed at the time this server crashed.
          When srvr1 went down, srvr2 was running and it went on to process all its 50 msgs
          completly. Why would those processed msgs show up again when srvr1 is brought
          up ?
          Please provide some input !!
          Ravi.
          

          The log message is from the distributed destination
          "forwarders". In distributed queues, these forwarders
          automatically move messages from queues without
          consumers to queues that have them (queue
          forwarders are disabled by default). In distributed topics,
          the forwarders serve
          to replicate a published message from the local
          topic member to each of the remote topic members.
          "Raviprasad Athivilli" <[email protected]> wrote:
          >
          >Tom
          >
          >I think you are right. When the server1 is brought up again, its picking
          >up all
          >the messages
          >that were written to the store.
          >
          >But as it starts processing them, i get this exception on the server2
          >that has
          >been running from the beginning.
          >
          ><Oct 10, 2003 6:20:19 PM EDT> <Error> <JMS> <040366> <JMS Distributed
          >Destination
          >member "MyQueue@JMSServer-02" in "MyQueue"
          >unable to accept connection from remote member "MyQueue@JMSServer-01"
          >due to exception
          >weblogic.jms.common.JMSException: can't find
          >queue target jndi table for MyQueue@JMSServer-01 != MyQueue
          >weblogic.jms.common.JMSException: can't find queue target jndi table
          >for MyQueue@JMSServer-01
          >!= MyQueue
          > at weblogic.jms.backend.BEDestination.setupSystemSubscription(BEDestination.java:3466)
          > at weblogic.jms.backend.BEManager.sessionAndTopicSubscriberCreate(BEManager.java:234)
          > at weblogic.jms.backend.BEManager.invoke(BEManager.java:384)
          > at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:602)
          > at weblogic.jms.dispatcher.DispatcherImpl.dispatchAsync(DispatcherImpl.java:152)
          > at weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncFuture(DispatcherImpl.java:396)
          > at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown
          >Source)
          > at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362)
          > at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313)
          > at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821)
          > at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308)
          > at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
          > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
          > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
          >
          >What does this mean ?
          >
          >Ravi.
          >Tom Barnes <[email protected]> wrote:
          >>Seems more than odd. Are you sure that q1 got unprocessed
          >>messages from q2? How did you confirm?
          >>
          >>Perhaps q1 got messages its MDB already processed back again -
          >>an indication that the MDB is throwing Runtime exceptions
          >>or Errors, and the container is rolling back transactions.
          >>
          >>Raviprasad Athivilli wrote:
          >>> Hi
          >>>
          >>> I have a Cluster setup with 2 managed servers srvr1 & srvr2 each running
          >>its own
          >>> JMS server.
          >>> Product version in use is Weblogic SP2.
          >>> Configured a Distributed Queue and deployed it on both the JMS servers.
          >>> Set the load-balancing to round-Robin and Server-Affinity to False
          >>on the connection
          >>> factory.
          >>>
          >>> The producer is an external client which posts 100 messages to the
          >>Distributed
          >>> queue.
          >>> Consumers are MDBs pinned to the respective physical queues on the
          >>respective
          >>> JMS servers.
          >>> Each server has its own store.
          >>>
          >>> Once 100 messages are posted to the Distributed Queue. The messages
          >>are distributed
          >>> to
          >>> the 2 Physical Destinations equally i.e 50-50 each.
          >>>
          >>> While the MDBs are processing the msgs, server srvr1 is brought down
          >>at a point
          >>> when it has consumed only 10 of its 50 msgs.
          >>>
          >>> When the srvr1 is brought up again, i am finding that the store for
          >>that JMS server
          >>> contains the 40 unprocessed msgs in its physical queue + the msgs
          >on
          >>the other
          >>> queue that were unprocessed at the time this server crashed.
          >>>
          >>> When srvr1 went down, srvr2 was running and it went on to process
          >all
          >>its 50 msgs
          >>> completly. Why would those processed msgs show up again when srvr1
          >>is brought
          >>> up ?
          >>>
          >>> Please provide some input !!
          >>>
          >>> Ravi.
          >>
          >
          

Similar Messages

  • App Server 8.1 cluster not all members starting up.

    Hi,
    Solaris 10.
    Two instances of app servers, each in a separate zone, on same machine.
    App servers were just configured with the configure-ha-cluster command to operate in HA mode.
    When restarting the cluster with two members, only one of them comes up:
    ./asadmin start-cluster --user admin --passwordfile domain1.pwd idm-cluster
    Not all server instances in cluster idm-cluster were successfully started.
    Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: management/rmi-jmx-connector
    Command start-cluster executed successfully.Funnily enough, it's the instance on the local machine that will not start up. I had a similar problem earlier where creating a hadb domain could not contact the local hadb instance...
    The node-agent is running though, but the instance will not start up.
    ./asadmin list-clusters --user admin --passwordfile domain1.pwd
    idm-cluster partially running
    Command list-clusters executed successfully.
    ./asadmin list-node-agents --user admin --passwordfile domain1.pwd
    idm1 running
    idm2 running
    Command list-node-agents executed successfully.
    ./asadmin start-instance --user admin --passwordfile domain1.pwd idm1-instance
    Operation 'startServerInstance' failed in 'servers' Config Mbean.
    Target exception message: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: management/rmi-jmx-connector
    CLI137 Command start-instance failed.Any pointers or ideas?
    Thanks!

    Hmmm. I seem to be having the same problem.
    Both node agents are running fine, but the DAS is unable to talk to the cluster.
    Exactly the same error occurs.
    Doesn't seem particularly robust software, imho. Happened several times.

  • Cannot retrieve data in all members of my distributed queue

    I have a distributed queue with 3 members, queue member 1, queue member 2, and queue member 3.
    I triggered 2 events separately to go to the distributed queue, and it was successful as the 1st event triggered went to queue member 1 (physical queue1 – located on server 1) and the next event sent on the next trigger went to queue member 2 (physical queue 2 – located on server 2).
    The problem now is, after triggering a job that gets the event from distributed queue, only the event in queue member 1 was picked up. The job got completed without picking up the event in queue member 2 (different VM). The data in queue member 2 was left. The config file for the JMS Queue Connectivity may be seen below:
    jms.url=t3://<MS1_IP>:<MS1_PORT>,<MS2_IP>:<MS2_PORT>,<MS3_IP>:<MS3_PORT>
    jms.connfactory=ConnFactoryName
    jms.timeout=30000
    jms.queue=DistributedQueueName
    Note also that the connection factory is deployed to all managed servers as I could see the connection factory in the jndi tree of each managed server.
    Our job was able to get data from each of the managed server, one by one. An example I tried is I placed an event in queue member 1 then triggered the job, then the data was picked up. Then next, I placed the data in queue member 2 (with no other data in queue member 1 and 3), then the data in queue member 2 was picked up after the job run, and same when placed only in queue member 3.
    The main problem here is when there are data in all of the physical queues (queue member 1 to 3). As if the application is focused only to one physical queue, which shouldn’t be. Researching now how should it read all the members in the distributed queue.

    Hi,
    A comma separated URL list helps a client setup its initial JNDI connection into the cluster - it doesn't directly control load balancing of future JEE EJB, RMI, or JMS calls. By default, for remote clients, JEE calls will automatically load balance a new direct connection randomly among all servers in the cluster, even if the initial JNDI URL only references a single server's address. It's actually not truly random, as there may be internal heuristics that effect the load balance decision, plus the behavior is actually tunable, but, for almost all use cases, its best to stay with the default behavior and think of it as effectively random.
    WebLogic JMS load-balancing actually occurs at three layers: URL/DNS, "smart stub" connection creation (RMI, EJB, and JMS connection factory), and finally the distributed destination layers. For a full end-to-end explanation of load balancing at the different layers of the WL stack, I highly recommend the JMS chapter of the book "Professional Oracle WebLogic".
    What's happening in your case is that JMS individual consumer always load balances to one particular queue member, and then sticks to that queue member for their lifetime. This is expected behavior for consumer load balancing, and is fully documented in the distributed destination documention of the JMS programmer's guide.
    If you want to ensure full coverage of a distributed queue, in order of highest to lowest preference:
    * Most highly recommend: Use a WL MDB or a 11gR1PS3 SOA Adapter (if you happen to be using Oracle's SOA layered product). These automatically ensure that all distributed queue members are serviced by at least one dedicated consumer.
    * Ensure you have more sessions+consumers than queue members. Periodically refresh connections/sessions/consumers in order to ensure that newly started members are serviced even when all consumers are already connected (eg, code your clients to reconnect every few minutes).
    * If your application is not performance sensitive, configure the "queue forward delay" setting on a distributed queue. Messages that are trapped on a queue member with no consumers for longer than this delay will be automatically forwarded a member that has consumers.
    * Least recommended, very advanced usage only: Code clients to use the new 10.3.4 public "destination availability" extensions. These extension APIs provide a notification service for distributed destination member up/down events.
    Regards,
    Tom

  • Will I have OSX Server in my App Store if I buy a "Mac Mini with OSX Server"?

    I am planning on buying Mac Mini for a Home Media Server, and I am curious if the OSX Server will be added to my account. Or do you think I would better get the same system configuration without the OSX Server, then buy it from the App Store? Is there going to be a difference between the two different processes.

    It won't automatically be added to your account unless you supply your account details when you buy.  But once you've received your server you can phone Apple Sales and give your details (including order number or server serial number) and they should add Server to your account for you.
    What you actually get will be identical.

  • JMX script for monitoring JMS servers in a cluster

    hi
    I am new to writing scripts. I will appreciate if I can get some help in writing a JMX script for monitoring JMS Servers in a cluster a well as monitoring the distributed queues
    thanks

    Exact scenario is,
              JMS Server
              |
              DistributedQueue
              | |
              JMSrvr1 JMSrvr2
              Q1 Q3
              Q2 Q4
              Q1 and Q2 delegateing messages, and at the same time Q3,Q4 also delegating messages.
              If JMSrvr1 down, we need to merge Q1 and Q2 with JMSrvr2. Here we cannot migrate as, JMSrvr already have queues. We need to merge all these queues.
              Thanks and Regards,
              Narayana Moorthy.

  • Accessing Distributed Queue In a Cluster via the Proxy Server

              I am running WL 8.1 SP2. I have a configuration where I have 3 servers (on two
              different machines) running in a cluster. I have a separate server on a 3rd machine
              running the cluster proxy server for a single point of access to the cluster.
              I have configured a distributed queue and a distributed topic, each targeted
              to all servers in the cluster.
              Now I have a JMS client which is a separate java application that is trying to
              connect to the distributed queue and topic in the cluster. If the client connects
              directly to one of the cluster machines, it is able to successfully interact with
              the JMS queue and topic. But if it attempts to connect via the proxy server it
              gets an error saying the queue and topic does not exist.
              So what am I missing? Do I need to configure a separate JMS server on the proxy
              server and add that as part of the distributed queue & topic (this didn't seem
              to allow me to add anything outside of the cluster). Is there any special configuration
              in the proxy to pass through JMS requests? I'm currently using a WL logic server
              as my front-end proxy server but does anything change if I want to use Apache
              with the WL Proxy plug-in??
              Jerald
              

              "Jerald Pratt" <[email protected]> wrote in message
              news:[email protected]...
              >
              > I am running WL 8.1 SP2. I have a configuration where I have 3 servers
              (on two
              > different machines) running in a cluster. I have a separate server on a
              3rd machine
              > running the cluster proxy server for a single point of access to the
              cluster.
              > I have configured a distributed queue and a distributed topic, each
              targeted
              > to all servers in the cluster.
              >
              > Now I have a JMS client which is a separate java application that is
              trying to
              > connect to the distributed queue and topic in the cluster. If the client
              connects
              > directly to one of the cluster machines, it is able to successfully
              interact with
              > the JMS queue and topic. But if it attempts to connect via the proxy
              server it
              > gets an error saying the queue and topic does not exist.
              Yup... That makes sense...
              >
              > So what am I missing? Do I need to configure a separate JMS server on the
              proxy
              > server and add that as part of the distributed queue & topic (this didn't
              seem
              > to allow me to add anything outside of the cluster). Is there any special
              configuration
              > in the proxy to pass through JMS requests? I'm currently using a WL logic
              server
              > as my front-end proxy server but does anything change if I want to use
              Apache
              > with the WL Proxy plug-in??
              One option I have used frequenly is specifying java.naming.provider.url as
              cluster address (e.g. t3://server1:7001,server2:7001
              You may also want to look into tunnelling...
              >
              > Jerald
              >
              

  • Reading messages from all distributed queues on a cluster (WLS 9.2)

    Hi,
    I have a following problem with distributed queues on WebLogic Server 9.2 MP1.
    Here's a brief description of my setup:
    I've got a cluster called 'myCluster', and two cluster nodes on it, 'nodeA' and 'nodeB'. I also have two JMS servers, 'jmsA' and 'jmsB'. Then I have a jms module 'myModule' with a subdeployment 'mySubdeployment' targeted on jms servers 'jmsA' and 'jmsB'. I have a jms connection factory 'TestFactory' that is targeted on myCluster (default targetting), and a jms queue 'TestQueue' (Uniform Distributed Queue) using subdeployment 'mySubdeployment' (targeted to 'jmsA' and 'jmsB').
    Now, the queue 'TestQueue' is used as a location where messages are stored when the system has met a problem in the environment that is preventing the normal handling of messages. Messages are kept in this queue until the problem is over, that's when the system administrator uses a browser application that requests the system to read the messages and handle them normally.
    The problem is that the cluster node which gets the request seems to be able to read only its own queue and the messages on the other nodes queue are left untouched. I know that I could send a message to the another node for example via topic 'purge_your_messages', but that's not suitable for this case. I need to sort the messages by their ids (set as a message property) and because of that I need exactly one node executing the purge.
    Any advice?
    - jj
    Edited by: user5736915 on 10-Dec-2008 14:10

    Browsers and receivers always attach to a single member of a distributed destination.
    WebLogic MDBs, on the other hand, automatically handle the task of attaching receivers to every member, and are quite simple to code and use these days. If you have the option of using WL MDBs, I recommend using them. (There's no equivalent for browsers.)
    Spring won't do the same OOTB, but there does appear to be a work-around for the Spring receiver issue (albeit not for browsers - just receivers). Here's a sample Spring impl that attaches a subscription to each and every member of a distributed topic:
    http://sleeplessinslc.blogspot.com/2011/12/weblogic-jms-partitioned-distributed.html.
    If the above isn't helpful, and you must cycle through every message on every server in the cluster, then you'll need write special case code to check each separately. There are two common options for enumerating the destinations and working with each one - the JMX mbean "message management" APIs (WLST Jython scripting or Java based) and the weblogic.jms.extensions destination availability APIs.
    HTH,
    Tom

  • JMS Timestamp in a Uniform Distributed Queue on Weblogic Console

    Dear Experts,
    I should need a clarification on how JMS Timestamp is valorized in a Uniform Distributed Queue. I explain me better :
    I will use the JMS Timestamp to re-order messages fetched from the Uniform Distributed Queue. Is it reliable ? How can I synchronize the this JMS property to be sure it is not dependent from physical machine where Uniform Distributed Queue is deployed ?
    Thanks a lot,
    Mike

    Try posting this in the weblogic jms forum : WebLogic Server - JMS where you might get help from Tom Barnes who is the weblogic jms development team lead.
    As far as I know time synchronization across machines should be a routine task for system admins. We had windows environment , where it was done using windows time service. The time server was configured on the domain controller and the time service running on the windows nodes periodically resynchronized its time with that of the time server.

  • JMS Server deployed to cluster of servers

    Hey guys,
    I was trying to deploy a JMS server to a cluster of servers and in the target section there wasn't an option for the cluster. They had an option for each individual server and another migratable version of the server. If I target one of the migratable servers in the cluster will it apply to all of the servers?
    I read the following passage in the weblogic documents:
    Obtain a Clustered JMS Licence
    In order to implement JMS clustering, you must have a valid clustered JMS license, which allows a connection factory and a destination to be on different WebLogic Server instances. A clustered JMS license is also required to use the Foreign JMS Providers feature, as described in "Simple Access to Remote or Foreign JMS Providers" in the Administration Console Online Help. If you do not have a valid clustered JMS license, contact your BEA sales representative.
    If i'm just building a model does this apply to me?
    Thanks

    continued reading to clarify. Problem solved, thanks for looking

  • I have an external server that stores all my movies and music, is there a way to stream it to my apple tv? If not is there a way I can link the folders to itunes (without downloading files to computer) and will that make them view-able for the apple TV?

    I have an external server that stores all my movies and music, is there a way to stream it to my apple tv?
    If not is there a way I can link the folders to itunes (without downloading files to computer) that will make them view-able for the apple TV?
    If none of that works is there a way to get it working alternativly?
    Additional Information:
    Everything is linked via ethernet cable.
    I'm using a PC to set it up.
    If you have any other questions feel free to ask and I'll help where I can.
    Thank you for any help

    (I think the daughter got he better end of the deal!)   I believe if you change the password and user id one of the devices it will stop that from occurring. But I'm not the one to tell you how to do it; someone like "Illaass" (Illaass seems to know how to correct / fix almost anything!) will know how if you don't. Just look for the "cat" icon.

  • HT4864 I am using Entourage and followed all the instructions above and still getting IMAP Server error.  Error msg:Security failure.  Data decryption error.

    I am using Entourage and followed all the instructions above and still getting IMAP Server error.  Error msg:Security failure.  Data decryption error.

  • Does Robohelp Server store all of its data in the backend database?

    Does RoboHelp Server store all data in the database and only code and templates on the web server?

    We need a separate web server and database server. All the content must be in the database. It looks like RoboHelp Server might not be the right architecture.
    Web Server > XSLT
                                            > Client Web Page XSLT/XML
    Database Server > XML
    ~J

  • I currently use Aperture. I understand Adobe is developing a conversion to Lightroom. I currently store all my photos on an external RAID server and I want to continue to do so. Is this allowed with Creative Cloud?

    I currently use Aperture. I understand Adobe is developing a conversion to Lightroom. I currently store all my photos on an external RAID server and I want to continue to do so. Is this allowed with Creative Cloud?

    So, what if I (1) connected an external hard drive to my wi-fi router so I could remote access pics w/a network connection-- this way even my wife's macbook could connect to it, creating our own cloud.
    A strong warning: If you're trying to edit the Library (that is, make albums, move photos around, keyword, make books or slideshows etc.) or edit individual photos in it via Wireless be very careful. Dropouts are a common fact of wireless networking, and should one occur while the app is writing to the database then your Library will be damaged. Simply, I would not do this with my Libraries. 
    Or (2) had a way to save the most recent 6mo on my locally and the rest on said external HD?
    Make sure the drive is formatted Mac OS Extended (Journaled)
    1. Quit iPhoto
    2. Copy the iPhoto Library from your Pictures Folder to the External Disk.
    Now you have two full versions of the Library.
    3. On the Internal library, trash the Events you don't want there
    Now you have a full copy of the Library on the External and a smaller subset on the Internal
    Some Notes:
    As a general rule: when deleting photos do them in batches of about 100 at a time. iPhoto can baulk at trashing large numbers at one go.
    You can choose which Library to open: Hold down the option (or alt) key key and launch iPhoto. From the resulting menu select 'Choose Library'
    You can keep the Library on the external updated with new imports using iPhoto Library Manager
    how do you keep photos accessible in iPhoto when your HD is full?
    Move the Library to an external disk -  see above.
    Do you just switch to Aperture and have multiple libraries?
    Aperture uses as much space as iPhoto and both can do multiple libraries.
    Regards
    TD

  • [OSB10.3.1] err creating JMS stuff in OSB cluster from recorded WLS session

    Hi all,
    I've setup an OSB cluster with 2 managed servers.
    From WLS console I created successfully the below JMS resources:
    1. new file store, name and directory: MyFileStore_m01, target: bnk01osbm01 migratable
    2. new file store, name and directory: MyFileStore_m02, target: bnk01osbm02 migratable
    3. new jms server, name: MyJMSServer_m01, persistent store: MyFileStore_m01, target: bnk01osbm01 migratable
    4. new jms server, name: MyJMSServer_m02, persistent store: MyFileStore_m02, target: bnk01osbm02 migratable
    5. new jms module, name: MyJMSSystemModule, targets: cluster bnk01osbcluster + all servers in the cluster
    6. new xa conn factory, name: MyXAConnectionFactory, jndi name: MyXAConnectionFactory
    (targets as proposed by WLS itself: cluster bnk01osbcluster + all servers in the cluster)
    + XA Connection Factory Enabled: true
    7. new Distributed Queue, name: MyDistributedQueue1, jndi name: MyDistributedQueue1, load balancing policy: round-robin
    (targets as proposed by WLS itself: cluster bnk01osbcluster + all servers in the cluster)
    + allocate members uniformly: true
    and I recorded that into the included recorded_by_wls.py. As said no error has been raised.
    Then I removed the above JMS resources and I executed the recorded_by_wls.py from command line getting the error that I reported at the end of the email.
    I changed slightly the original py produced by WLS by adding only the below first 5 lines:
    print "Starting the script ..."
    connect("weblogic", "weblogic", "t3://wasdv1r3n1.dev.b-source.net:7031")
    edit()
    startEdit()
    cd('/')
    I included also the recorded_by_wls.py source at the end of the email.
    For information I reported also what I saw on WLS console when I created manually my JMS resources.
    Do you have an idea why a successfully recorded WLS session fails when executed from a command line ?
    Any help will be very appreciate.
    Thanks in advance.
    Regards
    ferp
    Error:
    java weblogic.WLST recorded_by_wls.py          Initializing WebLogic Scripting Tool (WLST) ...
    Welcome to WebLogic Server Administration Scripting Shell
    Type help() for help on available commands
    Starting the script ...
    Connecting to t3://wasdv1r3n1.dev.b-source.net:7031 with userid weblogic ...
    Successfully connected to Admin Server 'bnk01osbadm' that belongs to domain 'bnk01osb'.
    Warning: An insecure protocol was used to connect to the server. To ensure on-the-wire security, the SSL port or
    Admin port should be used instead.
    Location changed to edit tree. This is a writable tree with
    DomainMBean as the root. To make changes you will need to start an edit session via startEdit().
    For more help, use help(edit)
    Starting an edit session ...
    Started edit session, please be sure to save and activate your changes once you are done.
    Activating all your changes, this may take a while ...
    The edit lock associated with this edit session is released once the activation is completed.
    Activation completed
    Starting an edit session ...
    Started edit session, please be sure to save and activate your changes once you are done.
    Activating all your changes, this may take a while ...
    The edit lock associated with this edit session is released once the activation is completed.
    This Exception occurred at Mon Sep 07 15:31:33 CEST 2009.
    weblogic.application.ModuleException: ERROR: Unable to add destination MyJMSSystemModule!wlsbJMSServer_auto_2@MyDistributedQueue1 to the back end wlsbJMSServer_auto_2
    at weblogic.jms.module.JMSModule.prepareUpdate(JMSModule.java:618)
    at weblogic.jms.module.ModuleCoordinator.prepareUpdate(ModuleCoordinator.java:487)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$5.next(DeploymentCallbackFlow.java:514)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepareUpdate(DeploymentCallbackFlow.java:280)
    at weblogic.application.internal.BaseDeployment$PrepareUpdateStateChange.next(BaseDeployment.java:679)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
    at weblogic.application.internal.BaseDeployment.prepareUpdate(BaseDeployment.java:444)
    at weblogic.application.internal.SingleModuleDeployment.prepareUpdate(SingleModuleDeployment.java:16)
    at weblogic.application.internal.DeploymentStateChecker.prepareUpdate(DeploymentStateChecker.java:221)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepareUpdate(AppContainerInvoker.java:149)
    at weblogic.deploy.internal.targetserver.operations.DynamicUpdateOperation.doPrepare(DynamicUpdateOperation.java:130)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:723)
    at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1190)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:248)
    at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:159)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: weblogic.jms.common.JMSException: [JMSExceptions:045050]A destination of name MyJMSSystemModule!wlsbJMSServer_auto_2@MyDistributedQueue1 has a jms-create-destination-identifier of name MyJMSSystemModule!wlsbJMSServer_auto_2@MyDistributedQueue1. However, another destination of name MyJMSSystemModule!wlsbJMSServer_auto_2@MyDistributedQueue1 has the same jms-create-destination-identifier. Two destinations with the same jms-create-destination-identifier cannot be co-located on the JMSServer named wlsbJMSServer_auto_2.
    at weblogic.jms.backend.BackEnd.addDestination(BackEnd.java:1527)
    at weblogic.jms.backend.BEDestinationRuntimeDelegate.prepare(BEDestinationRuntimeDelegate.java:195)
    at weblogic.jms.backend.udd.UDDEntity.prepare(UDDEntity.java:444)
    at weblogic.jms.module.JMSModule$EntityState.setState(JMSModule.java:1704)
    at weblogic.jms.module.JMSModule$EntityState.setState(JMSModule.java:1667)
    at weblogic.jms.module.JMSModule$EntityState.access$100(JMSModule.java:1608)
    at weblogic.jms.module.JMSModule.addEntity(JMSModule.java:936)
    at weblogic.jms.module.JMSModule.addEntity(JMSModule.java:841)
    at weblogic.jms.module.JMSModule.access$1500(JMSModule.java:87)
    at weblogic.jms.module.JMSModule$JMSModuleListener.prepareUpdate(JMSModule.java:1485)
    at weblogic.descriptor.internal.DescriptorImpl$Update.prepare(DescriptorImpl.java:481)
    at weblogic.descriptor.internal.DescriptorImpl.prepareUpdateDiff(DescriptorImpl.java:195)
    at weblogic.descriptor.internal.DescriptorImpl.prepareUpdate(DescriptorImpl.java:174)
    at weblogic.jms.module.JMSModule.prepareUpdate(JMSModule.java:614)
    Problem invoking WLST - Traceback (innermost last):
    File "/products/software/tmp/recorded_by_wls.py", line 92, in ?
    File "<iostream>", line 364, in activate
    WLSTException: Error occured while performing activate : Error while Activating changes.ERROR: Unable to add destination MyJMSSystemModule!wlsbJMSServer_auto_2@MyDistributedQueue1 to the back end wlsbJMSServer_auto_2 Use dumpStack() to view the full stacktrace
    recorded_by_wls.py source
    print "Starting the script ..."
    connect("weblogic", "weblogic", "t3://wasdv1r3n1.dev.b-source.net:7031")
    edit()
    startEdit()
    cd('/')
    cmo.createFileStore('MyFileStore_m01')
    cd('/FileStores/MyFileStore_m01')
    cmo.setDirectory('MyFileStore_m01')
    set('Targets',jarray.array([ObjectName('com.bea:Name=bnk01osbm01 (migratable),Type=MigratableTarget')], ObjectName))
    activate()
    startEdit()
    cd('/')
    cmo.createFileStore('MyFileStore_m02')
    cd('/FileStores/MyFileStore_m02')
    cmo.setDirectory('MyFileStore_m02')
    set('Targets',jarray.array([ObjectName('com.bea:Name=bnk01osbm02 (migratable),Type=MigratableTarget')], ObjectName))
    activate()
    startEdit()
    cd('/')
    cmo.createJMSServer('MyJMSServer_m01')
    cd('/Deployments/MyJMSServer_m01')
    cmo.setPersistentStore(getMBean('/FileStores/MyFileStore_m01'))
    set('Targets',jarray.array([ObjectName('com.bea:Name=bnk01osbm01 (migratable),Type=MigratableTarget')], ObjectName))
    activate()
    startEdit()
    cd('/')
    cmo.createJMSServer('MyJMSServer_m02')
    cd('/Deployments/MyJMSServer_m02')
    cmo.setPersistentStore(getMBean('/FileStores/MyFileStore_m02'))
    set('Targets',jarray.array([ObjectName('com.bea:Name=bnk01osbm02 (migratable),Type=MigratableTarget')], ObjectName))
    activate()
    startEdit()
    cd('/')
    cmo.createJMSSystemResource('MyJMSSystemModule')
    cd('/SystemResources/MyJMSSystemModule')
    set('Targets',jarray.array([ObjectName('com.bea:Name=bnk01osbcluster,Type=Cluster')], ObjectName))
    activate()
    startEdit()
    cd('/JMSSystemResources/MyJMSSystemModule/JMSResource/MyJMSSystemModule')
    cmo.createConnectionFactory('MyXAConnectionFactory')
    cd('/JMSSystemResources/MyJMSSystemModule/JMSResource/MyJMSSystemModule/ConnectionFactories/MyXAConnectionFactory')
    cmo.setJNDIName('MyXAConnectionFactory')
    cd('/JMSSystemResources/MyJMSSystemModule/JMSResource/MyJMSSystemModule/ConnectionFactories/MyXAConnectionFactory/SecurityParams/MyXAConnectionFactory')
    cmo.setAttachJMSXUserId(false)
    cd('/JMSSystemResources/MyJMSSystemModule/JMSResource/MyJMSSystemModule/ConnectionFactories/MyXAConnectionFactory')
    cmo.setDefaultTargetingEnabled(true)
    activate()
    startEdit()
    cd('/JMSSystemResources/MyJMSSystemModule/JMSResource/MyJMSSystemModule/ConnectionFactories/MyXAConnectionFactory/TransactionParams/MyXAConnectionFactory')
    cmo.setTransactionTimeout(3600)
    cmo.setXAConnectionFactoryEnabled(true)
    activate()
    startEdit()
    cd('/JMSSystemResources/MyJMSSystemModule/JMSResource/MyJMSSystemModule')
    cmo.createUniformDistributedQueue('MyDistributedQueue1')
    cd('/JMSSystemResources/MyJMSSystemModule/JMSResource/MyJMSSystemModule/UniformDistributedQueues/MyDistributedQueue1')
    cmo.setJNDIName('MyDistributedQueue1')
    cmo.setLoadBalancingPolicy('Round-Robin')
    cmo.setDefaultTargetingEnabled(true)
    activate()
    startEdit()
    -- source end --
    ON WLS console
    Name Type Target
    MyFileStore_m01 FileStore bnk01osbm01 (migratable)
    MyFileStore_m02 FileStore bnk01osbm02 (migratable)
    FileStore_auto_1 FileStore bnk01osbm01
    FileStore_auto_2 FileStore bnk01osbm02
    WseeFileStore_auto_1 FileStore bnk01osbm01
    WseeFileStore_auto_2 FileStore bnk01osbm02
    Name Persistent Store Target Current Server
    MyJMSServer_m01 MyFileStore_m01 bnk01osbm01 (migratable) bnk01osbm01
    MyJMSServer_m02 MyFileStore_m02 bnk01osbm02 (migratable) bnk01osbm02
    wlsbJMSServer_auto_1 FileStore_auto_1 bnk01osbm01 bnk01osbm01
    wlsbJMSServer_auto_2 FileStore_auto_2 bnk01osbm02 bnk01osbm02
    WseeJmsServer_auto_1 Wsee FileStore_auto_1 bnk01osbm01 bnk01osbm01
    WseeJmsServer_auto_2 Wsee FileStore_auto_2 bnk01osbm02 bnk01osbm02
    Name Type
    MyJMSSystemModule System
    configwiz-jms System
    jmsResources System
    WseeJmsModule System
    Name Type JNDI Name Subdeployment Targets
    MyDistributedQueue1 Uniform Distributed Queue MyDistributedQueue1 Default Targetting bnk01osbcluster
    MyXAConnectionFactory Connection Factory MyXAConnectionFactory Default Targetting bnk01osbcluster

    Hi Ferp,
    Do you have an idea why a successfully recorded WLS session fails when executed from a command line ?It should not fail. Each and every successfully (activation has been done without reporting an error/conflict) recorded session will execute on other servers successfully until a unique name constraint gets violated.
    In your case this violation has happened. Your script is trying to create a distributed destination "MyDistributedQueue1" under module "MyJMSSystemModule", targetted to JMS Server "wlsbJMSServer_auto_2" but a Distributed Queue with same JNDI name already exists there.
    Please check.
    Regards,
    Anuj

  • Looking up a distributed queue with two persistent stores using two JMS Svr

    I am trying to do the following:
    1. Setup a distributed queue, i have two servers which are part of the cluster:
    Server A: t3://localhost:7003
    Server B: t3://localhost:7005
    I go in and create two jms servers:
    JMS Server JA: Target on Server A
    JMS Server JB: Target on Server B
    Now as the jms servers need to use a seperate persistent store for each one of them i create two persistent stores.
    2. Now from my MDB which is deployed on another server i lookup the queue using
    t3://localhost:7003,localhost:7005 as the provider url
    My problem is that i always end up listening to the messages on the first jms server and never get to read the messages on jms server JB as i guess i am able to connect to JMS Server JA so i never try and connect to JB? What to do about this?
    Edited by: user4828945 on Mar 23, 2009 2:32 PM

    Allocation of consumers wouldn't take into account the number of messages on the queue - they'd be allocated randomly. The scenario you're proposing shouldn't happen though - WebLogic Server takes into account whether a member has consumers when sending to a distributed destination, but otherwise, assuming that Queue 1 and Queue 2 both have consumers, then distribution of load will be equal. It's not the amount of consumers that determine how many messages get sent to a distributed destination member - it's whether it has members at all.
    Assuming that did occur initially though, you'd expect processing to be a little bit more intensive on the server with the queue holding 30 messages. It would pretty quickly even up though.
    From that point forward, it would be somewhere between difficult and impossible to get to the second scenario, where you have an unequal number of messages in each distributed destination member, unless the work being sent with each message to an MDB can vary significantly in how long it would take to process.
    Assuming (and it's a big if) you could get to that scenario, then the MDBs wouldn't switch over - they stay connected to a particular distributed destination member. And it's their connection to a member as a consumer that controls how WebLogic Server load balances messages (assuming default configuration) so that's part of what makes it unlikely to get there.
    From going back to first principles in the documentation, it seems like your best result would actually be from deploying the MDB to the cluster - that way, there's no remote connections to JMS queues, and you get a pool of MDBs on each server instance.
    Ref here: http://e-docs.bea.com/wls/docs81/ejb/message_beans.html

Maybe you are looking for