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
thanksExact 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:10Browsers 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,
MikeTry 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?
Thankscontinued 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) 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.
-
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?
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 -
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 bnk01osbclusterHi 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 PMAllocation 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
-
Cannot delete users from the Central Management Console
I cannot delete users from the Central Management Console. I'm logged in to Enterprise as administrator but still get the following error: There was an error while writing data back to the server: Sorry, you do not have the right to 'Delete objects'
-
Opening from the Programs list doesn't work, from the windows search bar doesn't work, and directly opening the Firefox.exe in the correct program folder doesn't work either. I only got it to open once: upon first installing Firefox 4 Beta I asked it
-
Need to load external jpgs at once
I am using loadMovie to load all my external jpgs at once. On start I have thumbnails which animates, and using loadMovie load jpgs into that thumbnails. Offline it works fine, but online it only loads few jpgs first with animation and rest loads wit
-
Where is my audio??
I downloaded 7.5 yesterday, and now iTunes won't play anything and my system volume is stuck on mute! Please help. I have not changed any of my system preferences...yet I have no audio anywhere! iTunes won't play any songs.
-
I had to change my password and did so succesfully, but cannot change my original security questios. To make new security questions, Apple wants me to answer my old security questions, which I cannot do to their satisfaction, as my answers do not mat