Urgent and intresting:weblogic JMS in CLustering
Hi all,
I deployed one application in two different servers(server1,server2) in a weblogic cluster.my application having one MDB .MDB also deployed on all servers.I am sending messages to server1 only by creating Initialcontext as follows.
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, "t3://10.20.30.18:7001");
return new InitialContext(h);
My question is:
1)is there any possible to consume that message by
server2(t3://11.22.33.20:7001) MDB.eventhough iam not putting message on this server.
2)if it is possible then how can i prevent.
3)does connectionfactory/destination(queue) sharable.
Problem faced:
we deployed application 2 days back,first day only server1 MDB consumed Messages,second day server2 MDB started consuming meaasges. we are calling some code from outside of application,we setup that one in only server1,if server2 consumes means it is throwing exception.
we are breaking heads how server2 consuming Messages.
Hi all,
I deployed one application in two different servers(server1,server2) in a weblogic cluster.my application having one MDB .MDB also deployed on all servers.I am sending messages to server1 only by creating Initialcontext as follows.
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, "t3://10.20.30.18:7001");
return new InitialContext(h);
My question is:
1)is there any possible to consume that message by
server2(t3://11.22.33.20:7001) MDB.eventhough iam not putting message on this server.
2)if it is possible then how can i prevent.
3)does connectionfactory/destination(queue) sharable.
Problem faced:
we deployed application 2 days back,first day only server1 MDB consumed Messages,second day server2 MDB started consuming meaasges. we are calling some code from outside of application,we setup that one in only server1,if server2 consumes means it is throwing exception.
we are breaking heads how server2 consuming Messages.
Similar Messages
-
Any kind of integration experience with Weblogic JMS and Oracle AQ?
Hi,
In my company I work with java developers who believe in some kind of "holly" database independence I don't understand and as a result my life as a database developer is hell on earth.. Yesterday we again started to discuss, this time where to log, they believe database is slow and prefer logging to filesystem, after some hours finally I could convince them for some operational and reporting needs to use the database and will do this in an asyncronous way whiich they won't get slow. After all I believe the reason for a database is data, this is the place where data lives, and with the correct desing and implementation logging to database would perform better.
I love Oracle features, and know that we paid a lot for this software, so today I started investigating this promised solution. And quickly I found AQ and JMS topics in the documentation :)
After this introduction here is my problem; my company use BEA Weblogic as application server and the java guys want AQ to automatically (but of course with some delay) take their JMS log requests into database tables. Does any one have similar application experience, or any kind of integration experience with Weblogic JMS and Oracle AQ?
Any comments, references, documentation, sample code, url will be most welcomed :)
Thank you very much!
Tonguc
[email protected]
References I found upto now;
Oracle® Streams Advanced Queuing Java API Reference 10g Release 2 (10.2) http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14291/toc.htm
(Packages; javax.jms & oracle.jms)
Oracle® Streams Advanced Queuing User's Guide and Reference 10g Release 2 (10.2) http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14257/toc.htm
Part IV
Using Oracle JMS and Oracle Streams AQPart V describes how to use Oracle JMS and Oracle Streams Advanced Queuing (AQ).
Chapter 11, "Introducing Oracle JMS"
Chapter 12, "Oracle JMS Basic Operations"
Chapter 13, "Oracle JMS Point-to-Point"
Chapter 14, "Oracle JMS Publish/Subscribe"
Chapter 15, "Oracle JMS Shared Interfaces"
Chapter 16, "Oracle JMS Types Examples"
A Sample Code from Otn
http://www.oracle.com/technology/sample_code/tech/java/web_services/jmsws/NewsQueueEJB.java.htmlI wouldn't go as far to say Oracle AQ is out-dated today. However, it is indeed a proprietary technology that did not found much main-stream adoption in the earlier years after its introduction. The advent of JMS made it somewhat more useful (or should I say intriguing, because more people are trying to tie it together with other J2EE technologies), but the Oracle's JMS wrapper classes in aqapi.jar were not feature complete for a long while, so using it outside Oracle's application server was painful, if not impossible. I do agree that the info at the dev2dev's JMS newsgroup or in this forum is highly fragmented, as neither Oracle nor BEA provides an official solution to integrate AQ with WebLogic, so people like us have to learn the technology through experimentation and in a piecemeal fashion.
3 years ago I was literally "playing around" - we had a polling mechanism set up to use triggers to write Oracle data changes into an event table, and had a Java-based daemon to scan that table and publish events as JMS messages to the WebLogic JMS server. This continues to work reliably till today, but I was looking for a solution that has few parts - I wanted to hook up my WebLogic MDB directly to AQ as a foreign JMS provider. Although I was able to get it to work (including XA), there were a few hoops I had to jump through, such as decompiling the Oracle AQjms classes to make them bind to the WebLogic JNDI tree.
One year after that Diptanshu Parui took what I did a giant step further - he extended the Oracle AQjms classes to allow them to be bound to the WebLogic JNDI tree naturally, and he figured out how to use WebLogic JMS messging bridge to re-send single-threaded AQ JMS messages to clustered JMS queues, which allow concurrent message assumption by multiple instances of MDB's. My impression is that he is using that setup in a production environment.
I am sure you are aware of it but I would like to make it clear - in order to use AQ as a foreign JMS provider to WebLogic-hosted MDB's, you don't need to update your database to Oracle 10g - Oracle 8i is good enough (although I recommend at least 9i Release 2). It is not the database engine, but rather the aqapi.jar JMS wrapper on top of AQ that matters. I do recommend that you use aqapi.jar from Oracle Application Server 10.0.3 or up for better XA support, among other things. Again, you don't have to replace WebLogic with Oracle AS - you only need a single jar file from it and put it in your WebLogic's classpath. However, I don't know what this means from a licensing point of view if you ever go to production - do you have to pay the full price of OracleAS or OC4J just to use the aqapi.jar?
In the coming days I will test the latest aqapi.jar to see how much progress Oracle has made in terms of making their J2EE products more spec-compliant :-).
Hope the above gives you a different perspective.
Eric -
Hi All,
I need help understanding weblogic JMS clustering. I read few documents regarding this but not very clear about it.
Hope to get help/suggestion here.
I have following setup
box1 - adminserver, osbserver1
box2- osbserver2
osbserver1 and osbserver2 are clustered together
I have a JMS server created each one for each managed server (OSB server) in the cluster. These JMS servers are non-persistent. persistent store is "None".
I have one JMS module created with connection factory, distributed Qs and are associated with a subdeployment that is targeting to the cluster
I have all the servers(admin server and both OSB servers) are in running state
To monitor JMS server I go to services->JMS Servers
I see jmsserver1 which is targeted to osbserver1 has "Health" is marked as "OK"
jmserver2 which is targeted to osbserver2 has no "health" check
If I go to environment->servers , I see all the 3 servers are marked as "RUNNING" with "Health" OK
As a note I created managed server in the second box before creating the JMS server and resources.
And I do not have any nodemanager setup at this point.
How would I know the JMSserver in both servers are active and have no issues ?
Do I need to do anything to start JMSServer in OSBServer2 ?
Edited by: 818591 on Feb 11, 2011 8:27 AM
Edited by: 818591 on Feb 11, 2011 9:31 AMShould the JMS Server/JMS modules already be created so that the remote managed server will get configuration of these setup?No. This is not how resorces are created. Pack/unpack is used for creating the domains, ONCE. Later on you may very well use Weblogic admin console to create the resources and target/untarget those.
As a note I do not have node managed setup yet. It is recommended that you use node manager in environments where servers may be installed on different machines -
http://download.oracle.com/docs/cd/E14571_01/web.1111/e13740/toc.htm
To me, it seems a network/cluster communication issue. If you have Oracle Support, better raise a SR with them to find out the exact issue as they would be in better position to understand your architecture and analyzing logs. You may also raise a thread in Oracle Weblogic forum to get a suggestion from a Weblogic expert -
WebLogic Server - Clustering
Regards,
Anuj -
WebLogic JMS high memory usage and frequent full GCs
Hi Team,
We have below set up in production (and all the lower environment).
1. WLS: 10.3.6 (64 bit)
2. Java: HP JDK 1.7.0.06 (64 bit)
3. Two Manage server instances in cluster with one Migratable target
4. one JMS server with Persistence store targeted to Migratable target
5. Messages are persisted in DB
6. about 37 distributed queues/topics are hosted on one JMS server
7. .Net JMS clients and WebLogic JMS clients connect to respective JMS distributed Queues/topics to either produce message or consume.
Since last month, we see that WebLogic Manage server hosting JMS server keeps on chewing memory "even with small (of the order of 28 messages in 4/5 days) load", GC indicates that objects are shifted from PSYoung space to ParOldGen during minor GCs but ParOldGen space keeps on filling up in smaller chunks. After x number of days (where x ranges from 5-7 days), even Full GC is not able to bring down memory significantly and that's when frequent full GCs start with long pauses making JMS highly unstable.
We don't have JMS Quotas configured but I think something else going on as it is not high on load. Any additional hints or troubleshooting steps is much appreciated?
Here is first and last GC log just to give an idea...
Heap after GC invocations=661 (full 0):
{Heap before GC invocations=1 (full 0):
PSYoungGen total 1225728K, used 1050624K [9fffffff09c00000, 9fffffff5f400000, 9fffffff5f400000)
eden space 1050624K, 100% used [0x9fffffff09c00000,0x9fffffff49e00000,0x9fffffff49e00000)
from space 175104K, 0% used [0x9fffffff54900000,0x9fffffff54900000,0x9fffffff5f400000)
to space 175104K, 0% used [0x9fffffff49e00000,0x9fffffff49e00000,0x9fffffff54900000)
ParOldGen total 2797568K, used 0K [0x9ffffffe5f000000, 0x9fffffff09c00000, 0x9fffffff09c00000)
object space 2797568K, 0% used [0x9ffffffe5f000000,0x9ffffffe5f000000,0x9fffffff09c00000)
PSPermGen total 49152K, used 47453K [0x9ffffffe1f000000, 0x9ffffffe22000000, 0x9ffffffe5f000000)
object space 49152K, 96% used [0x9ffffffe1f000000,0x9ffffffe21e57630,0x9ffffffe22000000)
2014-12-24T09:04:45.118-0700: 15.651: [GC [PSYoungGen: 1050624K->118221K(1225728K)] 1050624K->118293K(4023296K), 0.32600
15 secs] [Times: user=0.07 sys=0.00, real=0.33 secs]
{Heap before GC invocations=661 (full 0):
PSYoungGen total 1367168K, used 1364256K [9fffffff09c00000, 9fffffff5f400000, 9fffffff5f400000)
eden space 1333376K, 100% used [0x9fffffff09c00000,0x9fffffff5b220000,0x9fffffff5b220000)
from space 33792K, 91% used [0x9fffffff5d300000,0x9fffffff5f128030,0x9fffffff5f400000)
to space 33664K, 0% used [0x9fffffff5b220000,0x9fffffff5b220000,0x9fffffff5d300000)
ParOldGen total 2797568K, used 2654825K [0x9ffffffe5f000000, 0x9fffffff09c00000, 0x9fffffff09c00000)
object space 2797568K, 94% used [0x9ffffffe5f000000,0x9fffffff0109a5c0,0x9fffffff09c00000)
PSPermGen total 151552K, used 147591K [0x9ffffffe1f000000, 0x9ffffffe28400000, 0x9ffffffe5f000000)
object space 151552K, 97% used [0x9ffffffe1f000000,0x9ffffffe28021cd8,0x9ffffffe28400000)
2014-12-29T08:18:08.798-0700: 429216.418: [GC [PSYoungGen: 1364256K->33632K(1329792K)] 4019081K->2752791K(4127360K), 0.8
254362 secs] [Times: user=0.10 sys=0.00, real=0.83 secs]
Regards,Thanks Luz. I have been collecting gclogs and heap dumps (whenever app server is high on memory and frequent GCs with long pauses are seen). So far heap dumps haven't revealed anything specific (may be I am not able to read heap dumps properly ) but looking at GC confirms that app server is consuming allocated heap.I was following Oracle WebLogic server support Patter as you have indicated. I thought about opening a ticket with HP but on high level JVM is doing what is suppose to do i.e allocating memory space as needed and performing GC therefore didn't go that path.
Any other suggestions that might be useful. One of the things I forgot to mention ( and I will add it to original message), that one of the .Net consumers is not asynchronously connecting to its queue (to consume messages) rather it is synchronously connects and then if it doesn't find messages it disconnects and process goes on every few seconds. I was reading somewhere that frequent JNDI look ups should be avoided. Can this cause memory issue if so then it is strange as this same set up has been there over a year and we never has problem then?
Regards, -
Session Beans and TIBCO E4JMS and Weblogic JMS 8.1
Setup:-
Weblogic Server 8.1 SP2 on Linux
TIBCO E4JMS 3.1.2
I have a two Staeless Session Beans which are deployed in both sides of the cluster
- Cluster is made up of two servers(ManagedServer1 and ManagedServer2) on the
same machine. The beans have container managed transaction and trans-type set
to required. The JMS Server is on ManagedServer1. The session bean publishes 100
messages to TIBCO JMS and Weblogic JMS and calls the second bean which again publishes
100 messages to TIBCO JMS and Weblogic JMS .
The connection factories used are XAQueueConnectionFactories.
This seems to work under the following conditions:-
a) The session beans are deployed just in ManagedServer1
b) The WL load balancing scheme manages to run both the beans on ManagedServer1
c) If I don't publish onto Weblogic JMS( It runs successfully on ManagedServer1
and ManagedServer2)
It does not seems to work :-
When the The WL load balancing scheme manages to run both the beans on ManagedServer2.I
put debug statements on the beans and it seems to publish everything but fails
during the commit
murali@dbuslinux1:~/SessionBeanExample> ant run
Buildfile: build.xml
run:
[java] Run : 0
[java] InitialContextFactory weblogic.jndi.WLInitialContextFactory
[java] Provider Url t3://myhost.mycompany.com:18003,myhost.mycompany.com:18005
[java] javax.transaction.TransactionRolledbackException: Exception while
commiting Tx : Name=[EJB Case463495.StatelessBean.sendMessageWrap(java.lang.Integer,java.lang.Integer,java.lang.String,boolean,boolean)],Xid=BEA1-000649EC8876A0032A5E(160401684),Status=Rolled
back. [Reason=javax.transaction.xa.XAException],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds
since begin=3,seconds left=30,XAServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN1TCF]=(ServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN1TCF]=(state=rolledback,assigned=ManagedServer2),xar=weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource@a0181b0),XAServerResourceInfo[JMS_MyJMS
File Store]=(ServerResourceInfo[JMS_MyJMS File Store]=(state=rolledback,assigned=ManagedServer1),xar=null),XAServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN2TCF]=(ServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN2TCF]=(state=rolledback,assigned=ManagedServer2),xar=weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource@98f6821),SCInfo[E4JMSDOMAIN+ManagedServer1]=(state=rolledback),SCInfo[E4JMSDOMAIN+ManagedServer2]=(state=rolledback),properties=({weblogic.transaction.name=[EJB
Case463495.StatelessBean.sendMessageWrap(java.lang.Integer,java.lang.Integer,java.lang.String,boolean,boolean)]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=ManagedServer2+myhost.mycompany.com:18005+E4JMSDOMAIN+t3+,
XAResources={},NonXAResources={})],CoordinatorURL=ManagedServer2+myhost.mycompany.com:18005+E4JMSDOMAIN+t3+):
javax.transaction.xa.XAException
[java] at com.tibco.tibjms.TibjmsXAResource.end(Ljavax.transaction.xa.Xid;I)V(TibjmsXAResource.java:157)
[java] at weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.end(Ljavax.transaction.xa.Xid;I)V(Unknown
Source)
[java] at weblogic.transaction.internal.XAServerResourceInfo.end(Lweblogic.transaction.internal.ServerTransactionImpl;Ljavax.transaction.xa.Xid;I)V(XAServerResourceInfo.java:1124)
[java] at weblogic.transaction.internal.XAServerResourceInfo.internalDelist(Lweblogic.transaction.internal.ServerTransactionImpl;I)V(XAServerResourceInfo.java:325)
[java] at weblogic.transaction.internal.XAServerResourceInfo.delist(Lweblogic.transaction.internal.ServerTransactionImpl;IZ)V(XAServerResourceInfo.java:255)
[java] at weblogic.transaction.internal.ServerTransactionImpl.delistAll(IZ)V(ServerTransactionImpl.java:1408)
[java] at weblogic.transaction.internal.ServerTransactionImpl.delistAll(I)V(ServerTransactionImpl.java:1396)
[java] at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare()V(ServerTransactionImpl.java:1932)
[java] at weblogic.transaction.internal.ServerTransactionImpl.internalCommit()V(ServerTransactionImpl.java:252)
[java] at weblogic.transaction.internal.ServerTransactionImpl.commit()V(ServerTransactionImpl.java:221)
[java] at weblogic.ejb20.internal.BaseEJBObject.postInvoke(Lweblogic.ejb20.interfaces.InvocationWrapper;Ljava.lang.Throwable;)V(BaseEJBObject.java:289)
[java] at weblogic.ejb20.internal.StatelessEJBObject.postInvoke(Lweblogic.ejb20.interfaces.InvocationWrapper;Ljava.lang.Throwable;)V(StatelessEJBObject.java:141)
[java] at Case463495.Stateless_soycq8_EOImpl.sendMessageWrap(Ljava.lang.Integer;Ljava.lang.Integer;Ljava.lang.String;ZZ)V(Stateless_soycq8_EOImpl.java:112)
[java] at Case463495.Stateless_soycq8_EOImpl_WLSkel.invoke(ILweblogic.rmi.spi.InboundRequest;Lweblogic.rmi.spi.OutboundResponse;Ljava.lang.Object;)Lweblogic.rmi.spi.OutboundResponse;(Unknown
Source)
[java] at weblogic.rmi.internal.BasicServerRef.invoke(Lweblogic.rmi.extensions.server.RuntimeMethodDescriptor;Lweblogic.rmi.spi.InboundRequest;Lweblogic.rmi.spi.OutboundResponse;)V(BasicServerRef.java:477)
[java] at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(Lweblogic.rmi.extensions.server.RuntimeMethodDescriptor;Lweblogic.rmi.spi.InboundRequest;Lweblogic.rmi.spi.OutboundResponse;)V(ReplicaAwareServerRef.java:108)
[java] at weblogic.rmi.internal.BasicServerRef$1.run()Ljava.lang.Object;(BasicServerRef.java:420)
[java] at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic.security.subject.AbstractSubject;Ljava.security.PrivilegedExceptionAction;)Ljava.lang.Object;(AuthenticatedSubject.java:353)
[java] at weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.internal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubject;Ljava.security.PrivilegedExceptionAction;)Ljava.lang.Object;(SecurityManager.java:144)
[java] at weblogic.rmi.internal.BasicServerRef.handleRequest(Lweblogic.rmi.spi.InboundRequest;)V(BasicServerRef.java:415)
[java] at weblogic.rmi.internal.BasicExecuteRequest.execute(Lweblogic.kernel.ExecuteThread;)V(BasicExecuteRequest.java:30)
[java] at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(ExecuteThread.java:197)
[java] at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:170)
[java] at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown
Source)
[java] ; nested exception is:
[java] javax.transaction.xa.XAException
[java] at weblogic.rjvm.BasicOutboundRequest.sendReceive()Lweblogic.rmi.spi.InboundResponse;(BasicOutboundRequest.java:108)
[java] at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(Lweblogic.rmi.extensions.server.RemoteReference;Lweblogic.rmi.extensions.server.RuntimeMethodDescriptor;[Ljava.lang.Object;Ljava.lang.reflect.Method;)Ljava.lang.Object;(ReplicaAwareRemoteRef.java:284)
[java] at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(Ljava.rmi.Remote;Lweblogic.rmi.extensions.server.RuntimeMethodDescriptor;[Ljava.lang.Object;Ljava.lang.reflect.Method;)Ljava.lang.Object;(ReplicaAwareRemoteRef.java:244)
[java] at Case463495.Stateless_soycq8_EOImpl_812_WLStub.sendMessageWrap(Ljava.lang.Integer;Ljava.lang.Integer;Ljava.lang.String;ZZ)V(Unknown
Source)
[java] at Case463495.Client.run()V(Client.java:103)
[java] at Case463495.Client.sendMessage()V(Client.java:132)
[java] at Case463495.Client.main([Ljava.lang.String;)V(Client.java:195)
[java] Caused by: javax.transaction.xa.XAException
[java] at com.tibco.tibjms.TibjmsXAResource.end(TibjmsXAResource.java:157)
[java] at weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.end(Unknown
Source)
[java] at weblogic.transaction.internal.XAServerResourceInfo.end(XAServerResourceInfo.java:1124)
[java] at weblogic.transaction.internal.XAServerResourceInfo.internalDelist(XAServerResourceInfo.java:325)
[java] at weblogic.transaction.internal.XAServerResourceInfo.delist(XAServerResourceInfo.java:255)
[java] at weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransactionImpl.java:1408)
[java] at weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransactionImpl.java:1396)
[java] at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:1932)
[java] at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:252)
[java] at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:221)
[java] at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:289)
[java] at weblogic.ejb20.internal.StatelessEJBObject.postInvoke(StatelessEJBObject.java:141)
[java] at Case463495.Stateless_soycq8_EOImpl.sendMessageWrap(Stateless_soycq8_EOImpl.java:112)
[java] at Case463495.Stateless_soycq8_EOImpl_WLSkel.invoke(Unknown Source)
[java] at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
[java] at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
[java] at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
[java] at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
[java] at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
[java] at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
[java] at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
[java] at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
[java] at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
[java] at java.lang.Thread.startThreadFromVM(Unknown Source)
Apologies in advance if this need to be posted in the JTA news group..
Any ideas?
Murali
Posting to the transaction newsgroup would probably also be helpful.
Can you post the code for the session bean so we can see how you're
enlisting Tibco in the transaction? It looks like you're using the JMS
provider wrappers from 8.1, which do the transaction enlistment for you, so
you shouldn't need to mess with JTA at all in your code. Still, something
weird is going on and it'd be nice to see exactly what your code looks like.
greg
"L Muralidharan" <[email protected]> wrote in message
news:[email protected]...
>
> Setup:-
>
> Weblogic Server 8.1 SP2 on Linux
>
> TIBCO E4JMS 3.1.2
>
> I have a two Staeless Session Beans which are deployed in both sides of
the cluster
> - Cluster is made up of two servers(ManagedServer1 and ManagedServer2) on
the
> same machine. The beans have container managed transaction and trans-type
set
> to required. The JMS Server is on ManagedServer1. The session bean
publishes 100
> messages to TIBCO JMS and Weblogic JMS and calls the second bean which
again publishes
> 100 messages to TIBCO JMS and Weblogic JMS .
>
> The connection factories used are XAQueueConnectionFactories.
>
> This seems to work under the following conditions:-
>
> a) The session beans are deployed just in ManagedServer1
> b) The WL load balancing scheme manages to run both the beans on
ManagedServer1
> c) If I don't publish onto Weblogic JMS( It runs successfully on
ManagedServer1
> and ManagedServer2)
>
> It does not seems to work :-
>
> When the The WL load balancing scheme manages to run both the beans on
ManagedServer2.I
> put debug statements on the beans and it seems to publish everything but
fails
> during the commit
>
> murali@dbuslinux1:~/SessionBeanExample> ant run
> Buildfile: build.xml
>
> run:
> [java] Run : 0
> [java] InitialContextFactory weblogic.jndi.WLInitialContextFactory
> [java] Provider Url
t3://myhost.mycompany.com:18003,myhost.mycompany.com:18005
> [java] javax.transaction.TransactionRolledbackException: Exception
while
> commiting Tx : Name=[EJB
Case463495.StatelessBean.sendMessageWrap(java.lang.Integer,java.lang.Integer
,java.lang.String,boolean,boolean)],Xid=BEA1-000649EC8876A0032A5E(160401684)
,Status=Rolled
> back.
[Reason=javax.transaction.xa.XAException],numRepliesOwedMe=0,numRepliesOwedO
thers=0,seconds
> since begin=3,seconds
left=30,XAServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEA
N1TCF]=(ServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN1
TCF]=(state=rolledback,assigned=ManagedServer2),xar=weblogic.deployment.jms.
WrappedXAResource_com_tibco_tibjms_TibjmsXAResource@a0181b0),XAServerResourc
eInfo[JMS_MyJMS
> File Store]=(ServerResourceInfo[JMS_MyJMS File
Store]=(state=rolledback,assigned=ManagedServer1),xar=null),XAServerResource
Info[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN2TCF]=(ServerResourceIn
fo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN2TCF]=(state=rolledback,a
ssigned=ManagedServer2),xar=weblogic.deployment.jms.WrappedXAResource_com_ti
bco_tibjms_TibjmsXAResource@98f6821),SCInfo[E4JMSDOMAIN+ManagedServer1]=(sta
te=rolledback),SCInfo[E4JMSDOMAIN+ManagedServer2]=(state=rolledback),propert
ies=({weblogic.transaction.name=[EJB
>
Case463495.StatelessBean.sendMessageWrap(java.lang.Integer,java.lang.Integer
,java.lang.String,boolean,boolean)]}),OwnerTransactionManager=ServerTM[Serve
rCoordinatorDescriptor=(CoordinatorURL=ManagedServer2+myhost.mycompany.com:1
8005+E4JMSDOMAIN+t3+,
>
XAResources={},NonXAResources={})],CoordinatorURL=ManagedServer2+myhost.myco
mpany.com:18005+E4JMSDOMAIN+t3+):
> javax.transaction.xa.XAException
> [java] at
com.tibco.tibjms.TibjmsXAResource.end(Ljavax.transaction.xa.Xid;I)V(TibjmsXA
Resource.java:157)
> [java] at
weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.
end(Ljavax.transaction.xa.Xid;I)V(Unknown
> Source)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.end(Lweblogic.transaction
.internal.ServerTransactionImpl;Ljavax.transaction.xa.Xid;I)V(XAServerResour
ceInfo.java:1124)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.internalDelist(Lweblogic.
transaction.internal.ServerTransactionImpl;I)V(XAServerResourceInfo.java:325
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.delist(Lweblogic.transact
ion.internal.ServerTransactionImpl;IZ)V(XAServerResourceInfo.java:255)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.delistAll(IZ)V(ServerTra
nsactionImpl.java:1408)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.delistAll(I)V(ServerTran
sactionImpl.java:1396)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.globalPrepare()V(ServerT
ransactionImpl.java:1932)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.internalCommit()V(Server
TransactionImpl.java:252)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.commit()V(ServerTransact
ionImpl.java:221)
> [java] at
weblogic.ejb20.internal.BaseEJBObject.postInvoke(Lweblogic.ejb20.interfaces.
InvocationWrapper;Ljava.lang.Throwable;)V(BaseEJBObject.java:289)
> [java] at
weblogic.ejb20.internal.StatelessEJBObject.postInvoke(Lweblogic.ejb20.interf
aces.InvocationWrapper;Ljava.lang.Throwable;)V(StatelessEJBObject.java:141)
> [java] at
Case463495.Stateless_soycq8_EOImpl.sendMessageWrap(Ljava.lang.Integer;Ljava.
lang.Integer;Ljava.lang.String;ZZ)V(Stateless_soycq8_EOImpl.java:112)
> [java] at
Case463495.Stateless_soycq8_EOImpl_WLSkel.invoke(ILweblogic.rmi.spi.InboundR
equest;Lweblogic.rmi.spi.OutboundResponse;Ljava.lang.Object;)Lweblogic.rmi.s
pi.OutboundResponse;(Unknown
> Source)
> [java] at
weblogic.rmi.internal.BasicServerRef.invoke(Lweblogic.rmi.extensions.server.
RuntimeMethodDescriptor;Lweblogic.rmi.spi.InboundRequest;Lweblogic.rmi.spi.O
utboundResponse;)V(BasicServerRef.java:477)
> [java] at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(Lweblogic.rmi.extensions.s
erver.RuntimeMethodDescriptor;Lweblogic.rmi.spi.InboundRequest;Lweblogic.rmi
.spi.OutboundResponse;)V(ReplicaAwareServerRef.java:108)
> [java] at
weblogic.rmi.internal.BasicServerRef$1.run()Ljava.lang.Object;(BasicServerRe
f.java:420)
> [java] at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic.security.
subject.AbstractSubject;Ljava.security.PrivilegedExceptionAction;)Ljava.lang
.Object;(AuthenticatedSubject.java:353)
> [java] at
weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.inter
nal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubjec
t;Ljava.security.PrivilegedExceptionAction;)Ljava.lang.Object;(SecurityManag
er.java:144)
> [java] at
weblogic.rmi.internal.BasicServerRef.handleRequest(Lweblogic.rmi.spi.Inbound
Request;)V(BasicServerRef.java:415)
> [java] at
weblogic.rmi.internal.BasicExecuteRequest.execute(Lweblogic.kernel.ExecuteTh
read;)V(BasicExecuteRequest.java:30)
> [java] at
weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(Exe
cuteThread.java:197)
> [java] at
weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:170)
> [java] at
java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown
> Source)
> [java] ; nested exception is:
> [java] javax.transaction.xa.XAException
> [java] at
weblogic.rjvm.BasicOutboundRequest.sendReceive()Lweblogic.rmi.spi.InboundRes
ponse;(BasicOutboundRequest.java:108)
> [java] at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(Lweblogic.rmi.extensions.s
erver.RemoteReference;Lweblogic.rmi.extensions.server.RuntimeMethodDescripto
r;[Ljava.lang.Object;Ljava.lang.reflect.Method;)Ljava.lang.Object;(ReplicaAw
areRemoteRef.java:284)
> [java] at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(Ljava.rmi.Remote;Lweblogic
.rmi.extensions.server.RuntimeMethodDescriptor;[Ljava.lang.Object;Ljava.lang
.reflect.Method;)Ljava.lang.Object;(ReplicaAwareRemoteRef.java:244)
> [java] at
Case463495.Stateless_soycq8_EOImpl_812_WLStub.sendMessageWrap(Ljava.lang.Int
eger;Ljava.lang.Integer;Ljava.lang.String;ZZ)V(Unknown
> Source)
> [java] at Case463495.Client.run()V(Client.java:103)
> [java] at Case463495.Client.sendMessage()V(Client.java:132)
> [java] at
Case463495.Client.main([Ljava.lang.String;)V(Client.java:195)
> [java] Caused by: javax.transaction.xa.XAException
> [java] at
com.tibco.tibjms.TibjmsXAResource.end(TibjmsXAResource.java:157)
> [java] at
weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.
end(Unknown
> Source)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.end(XAServerResourceInfo.
java:1124)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.internalDelist(XAServerRe
sourceInfo.java:325)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.delist(XAServerResourceIn
fo.java:255)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransact
ionImpl.java:1408)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransact
ionImpl.java:1396)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTran
sactionImpl.java:1932)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTra
nsactionImpl.java:252)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransaction
Impl.java:221)
> [java] at
weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:289)
> [java] at
weblogic.ejb20.internal.StatelessEJBObject.postInvoke(StatelessEJBObject.jav
a:141)
> [java] at
Case463495.Stateless_soycq8_EOImpl.sendMessageWrap(Stateless_soycq8_EOImpl.j
ava:112)
> [java] at
Case463495.Stateless_soycq8_EOImpl_WLSkel.invoke(Unknown Source)
> [java] at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> [java] at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java
:108)
> [java] at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> [java] at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubjec
t.java:353)
> [java] at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
> [java] at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
> [java] at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3
0)
> [java] at
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
> [java] at
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
> [java] at java.lang.Thread.startThreadFromVM(Unknown Source)
>
>
> Apologies in advance if this need to be posted in the JTA news group..
>
> Any ideas?
>
> Murali
>
-
Is there any intention of including support for JMS queues clustering? If so, would it include clustering of messages after a server shutdown?
ThanksHi Ignacio,
We do not support the JMS API from Coherence. That is one of the APIs that we currently defer to the application server providers, such as BEA. Unfortunately, BEA WebLogic does not currently support Coherence for its clustered queues, but I believe in WebLogic 8.1 you can manually fail-over BEA WebLogic queues in a cluster.
Peace,
Cameron Purdy
Tangosol, Inc.
Coherence: Easily share live data across a cluster! -
CMT and using non-Weblogic JMS in a session bean
I am writing a session bean which sends a JMS message using a non-weblogic JMS
provider. This bean is marked for CMT and I want the JMS send to participate in
this CMT as well. My understanding is that I should be able to do this by defining
a <resource-ref> element in the ejb-jar.xml and a corresponding <resource-descriptor>
element in the weblogic-ejb-jar.xml file. The bean would then use the <res-ref-name>
defined under the <resource-ref> element to lookup the connection factory. What
do I have to put in weblogic-ejb-jar.xml file to make sure that the connection
factory specified in <res-ref-name> maps to a connection factory that is in a
foreign JNDI provider (e.g. in the non-Weblogic JMS provider's JNDI) and not in
Weblogic's JNDI?
Thanks in advance for your help.
It sounds like you're using Tibco JMS to receive messages from the MDB, and
then to send out a message. WLS 7.0 will handle the transaction enlistment
properly when it receives messages for the MDB, but you'll have to enlist
the JMS provider yourself when you send the message, using the white paper
that Tom pointed you to as a guide.
In WLS 8.1, coming soon, we'll automatically enlist the provider in the
transaction if you look it up using a "resource-ref" element in the EJB like
you described. Today, you can use that element but no transaction
enlistement is being done.
greg
"Venkat" <[email protected]> wrote in message
news:[email protected]...
>
> We also need this feature.
> We are using Weblogic 7.0 and Tibco JMS 3.0,
> which supports XA.
>
> We are mainly interested in subscribing using MDB
> and publishing using a session bean in one transaction.
> Do you think by using resource-refs in conjunction
> with registering with Weblogic JNDI during startup
> can do the job?
>
> Or how about using XAConnectionFactory and XASession
> classes for JMS publishing ?
>
> Thanks.
>
> Tom Barnes <[email protected]> wrote:
> >Hi Mihir,
> >
> >Support for automatic enlistment of foreign JMS vendors
> >via the resource-ref approach is not available in WLS.
> >This support will be available in the next release:
> >limited access beta is available now, public beta is available
> >in 2-3 months. You are the first customer I've heard of that
> >asked for this feature. Very cool. Good timing.
> >
> >As you are not using WebLogic JMS, you will need to do the
> >transaction enlistment yourself. This isn't that hard
> >to do. I suggest that you refer to the integrating foreign
> >JMS vendor white-paper available on dev2dev.bea.com.
> >Also, refer to the integrating transactions with
> >MQSeries integration paper, which will likely serve your
> >purposes better. Note that some JMS vendors
> >have problems with concurrent transactions in a single
> >JMS connection, or with transactions that attempt
> >to switch threads (eg. suspend() in one thread
> >and resume() in another).
> >
>
>http://dev2dev.bea.com/resourcelibrary/whitepapersdetail.jsp?highlight=whit
epapers&filePath=components%2Fdev2dev%2Fresourcelibrary%2Fwhitepapers%2Fwp_j
msproviders.htm
>
>http://dev2dev.bea.com/resourcelibrary/whitepapersdetail.jsp?highlight=whit
epapers&filePath=components%2Fdev2dev%2Fresourcelibrary%2Fwhitepapers%2Fwp_j
tatransactions.htm
> >
> >Tom
> >
> >mihir sharma wrote:
> >> I am writing a session bean which sends a JMS message using a
non-weblogic
> >JMS
> >> provider. This bean is marked for CMT and I want the JMS send to
participate
> >in
> >> this CMT as well. My understanding is that I should be able to do this
> >by defining
> >> a <resource-ref> element in the ejb-jar.xml and a corresponding
<resource-descriptor>
> >> element in the weblogic-ejb-jar.xml file. The bean would then use the
> ><res-ref-name>
> >> defined under the <resource-ref> element to lookup the connection
factory.
> >What
> >> do I have to put in weblogic-ejb-jar.xml file to make sure that the
> >connection
> >> factory specified in <res-ref-name> maps to a connection factory that
> >is in a
> >> foreign JNDI provider (e.g. in the non-Weblogic JMS provider's JNDI)
> >and not in
> >> Weblogic's JNDI?
> >>
> >> Thanks in advance for your help.
> >>
> >
>
-
I am writing a bean that reads a message from MQ (using MQJMS) and then write it
onto a WebLogic JMS ( something lika a bridge). However I don't want to use bridge.
Question/Problem Statement:
Once I include mq jms jar files in class path. Would that in conflict with WebLogic
JMS. How do in my program I make sure that it is using the MQ or WLS JMS implementation.
I can have InitialContext() setup for mq in File and for WebLogic it is WebLogic's
Initial Context. Thats is the only thing that I can tell in the program.
Basically, I am trying to see what will make it ( fully qualified JMS Objects
or what) decide which implmenatation to use.
Chris
The WebLogic JMS and MQSeries JMS classes won't conflict. Each JMS provider
provides different classes that implement the same interfaces, so you can
have a whole bunch of providers in your classpath and things should be OK.
Most code that's written to the JMS API (including the code inside WLS that
receives messages for MDBs) gets the JMS "ConnectionFactory" via JNDI, and
uses that to create the other objects. (It also has to look up the
"Destination" objects from JNDI.) When you code to the JMS standard only,
then the only thing that "tells" your program which provider is being used
is the ConnectionFactory class that you create or get out of JNDI.
Below is my usual plug for the white paper that helps explain some of this
stuff:
http://dev2dev.bea.com/resourcelibrary/whitepapers.jsp?highlight=whitepapers
Look for "Using foreign JMS provdiesr with WLS".
greg
"Chris" <[email protected]> wrote in message
news:[email protected]...
>
> I am writing a bean that reads a message from MQ (using MQJMS) and then
write it
> onto a WebLogic JMS ( something lika a bridge). However I don't want to
use bridge.
>
> Question/Problem Statement:
> Once I include mq jms jar files in class path. Would that in conflict with
WebLogic
> JMS. How do in my program I make sure that it is using the MQ or WLS JMS
implementation.
> I can have InitialContext() setup for mq in File and for WebLogic it is
WebLogic's
> Initial Context. Thats is the only thing that I can tell in the program.
>
> Basically, I am trying to see what will make it ( fully qualified JMS
Objects
> or what) decide which implmenatation to use.
>
> Chris
-
Configure backout queue and Dead letter queue in weblogic JMS provider
Hi,
How to configure the JMS backout queue and dead letter queue in weblogic JMS provider in weblogic application server console?
Any links or documents are highly appreciated.
Thanks.Thanks anon. When i say backout message the poisonous message , A poison message is one which cannot be processed by a receiving MDB application. If a poison message is encountered, the JMS MessageConsumer and ConnectionConsumer objects can requeue it according to two queue properties, BOQUEUE, and BOTHRESH.
Normally this happens in the websphere MQ . Where we will configure the backout queue and dead letter queue.
The dead letter queue was always used in MQSeries (the last time I used MQ) to store messages that arrived at the queue manager but the queue didn't exist. For eample, if the message was address to queue manager X and queue Y, it would arrive via a channel at manager X. If the receiver channel discovered there was no queue Y, it would be placed in the dead letter queue.
The backout queue, on the other hand, is more of an application-level thing (at least in terms of MQ). When an MQ client cannot process the message for some reason, it can back it out for later processing (back to it's original queue).If it's backed out too many times (the threshold can be configured), it gets moved to the backout queue.
The Dead Letter Queue behaves the same as a Backout. I treat the Dead Letter Queue as the Crematorium for messages that cannot be recovered in the Error or Backout queues and have some last, non-business specific data that need be collected. Once the info is captured, the message is put down for good. Backout is good for analyzing messages for data that may need to be recovered to completely reprocess or be sent back to an application area for them to decision on.
How we configure these in weblogic server both Backout and Deadletter queue , whether this is a simple queue in which we will set the error destination in case of any poisonous message so that it will logged in those queue?
Thanks. -
WebLogic JMS 10 and 7 Compatibility
Hi,
Is there a way to transfer JMS messages from WebLogic 7 to WebLogic 10?
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/compatibility/compatibility.html
Based on the protocol compatibility section in above link, am I to assume that I cannot use JMS to drop a message into WLS 10 from 7?
Regards,
Anand.
Edited by: user653362 on Feb 5, 2009 9:55 PMIf you are considering to send messages from WLS 10.0 and WLS 7 or vice versa then its possible but refer to the following :-
Interoperability between WebLogic Server 7.0 and WebLogic Server 10.0 is supported in the following scenarios. You will need the WebLogic Server 7.0 patch that is associated with CR295275 for this interoperability to work. This patch is applicable to WLS 7.0 SP6 and WLS 7.0 SP7. You can request this patch by contacting BEA support and requesting the patch associated with CR295275. Additionally, for RMI/IIOP interoperability support, start the WLS 7.0 client using the following flag: -Dweblogic.system.iiop.enableClient=true
A WebLogic Server 7.0 client can invoke RMI-based applications hosted on a WebLogic Server 10.0 server using T3, T3S, HTTP, and HTTPS. JMS applications can be invoked using T3, T3S, HTTP, and HTTPS.
A WebLogic Server 10.0 client can invoke RMI-based applications hosted on a WebLogic Server 7.0 server using T3, T3S, HTTP, and HTTPS. JMS applications can be invoked using T3, T3S, HTTP, and HTTPS.
A WebLogic Server 10.0 Web server plug-in can proxy to the latest service pack release of a 7.0 server.
Link : [http://e-docs.bea.com/wls/docs100/compatibility/compatibility.html] -
ActiveJMS and WebLogic JMS Provider
Hi,
I am trying to use ActiveJMS with WebLogic JMS
provider, but struggeling to get the properties right
for ActiveJMS to connect to the provider. Does
anybody know what should be the properties for
ActiveJMS? Has anyone done this before?
Thanks in advance,
-Farooque Khan
http://farooque.150m.com
The work-around I was thinking might work for you would be to code your own connection factory "wrapper" and then, inside a startup class, bind a wrapper for each client-id into WebLogic JNDI. WL runs startup classes prior to loading EJBs.
The classes would need to be in the server's system class path, and the client-ids would need to passed in somehow to the startup class (they must be preset prior to booting the MDBs). Rough pseudo code:
startup class main() {
wlcontext = new InitialContext();
for each client-id:
wlcontext.bind(weblogicjndiname,
new WrappedConnectionFactory(
tibcourl, tibcojndiname, client-id));
class WrappedConnectionFactory
implements javax.jms.TopicConnectionFactory {
createTopicConnection() {
lookup topic connection in TIBCO JNDI using a TIBCO context
setClientID (based on clientid that was passed in the constructor)
The foreign connection factory you already have configured would then need to be changed to refer to the weblogicjndiname in the startup class.
Tom -
Weblogic JMS bridge between Weblogic and oracle Advanced Queue
Hi,
We are facing some issues when we are trying to integrate with Oracle AQ JMS through Weblogic.
We have configured a Foreign AQ server which points to the oracle Advanced Queue and we are trying to create a Weblogic JMS bridge between AQ and weblogic. The bridge works perfectly if create the connection factories and bridge destinations with NonTX mode. The issue is with XA mode. Also we have deployed the Resource adaper for XAResource to use XA transactions.
No help is available for the exception on google too :)
Following is the exception we are getting.
<An error occurred in bridge "aqjmsbridge" during the transfer of messages (javax.resource.ResourceException: Failed to setup the Resource Adapter Connection for enlistment in the transaction, Pool = 'eis/jms/WLSConnectionFactoryJNDIXA', javax.transaction.SystemException: start() failed on resource 'eis/jms/WLSConnectionFactoryJNDIXA': XA_OK
javax.transaction.xa.XAException: method start should not be called on weblogic.transaction.internal.IgnoreXAResource
at weblogic.jms.foreign.IgnoreXAResourceImpl.start(ForeignAQIntegration.java:260)
at weblogic.connector.security.layer.AdapterLayer.start(AdapterLayer.java:513)
at weblogic.connector.transaction.outbound.XAWrapper.start(XAWrapper.java:466)
at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1184)
at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1117)
at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:275)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:516)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:443)
at weblogic.connector.transaction.outbound.XATxConnectionHandler.enListResource(XATxConnectionHandler.java:118)
at weblogic.connector.outbound.ConnectionWrapper.invoke(ConnectionWrapper.java:218)
at $Proxy59.receive(Unknown Source)
at weblogic.jms.bridge.internal.MessagingBridge.processMessages(MessagingBridge.java:1427)
at weblogic.jms.bridge.internal.MessagingBridge.beginForwarding(MessagingBridge.java:1002)
at weblogic.jms.bridge.internal.MessagingBridge.run(MessagingBridge.java:1079)
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)
.).>
Will appriciate any help for the above.
Thanks and Regards,
NavinMaybe this if of any help:
- Re: Help with creating AQ JMS
or
- Re: AQ Weblogic integration - JMS-107: Operation not allowed on Connection -
Weblogic.jms.frontend.FEConnectionFactory on Stuck Thread
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2627" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face=Arial size=2>Hi,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>I need help on this issue quite
urgently.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Server Environment</FONT></DIV>
<DIV><FONT face=Arial size=2>----------------------</FONT></DIV>
<DIV>
<DIV><FONT face=Arial size=2>Server: Weblogic 8.1 SP4</FONT></DIV>
<DIV><FONT face=Arial size=2>Java version: 1.4.2_05</FONT></DIV></DIV>
<DIV><FONT face=Arial size=2>I have 2 Sun Solaris Servers each having 4
NICs with the following addresses:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>SERVER A
SERVER B</FONT></DIV>
<DIV><FONT face=Arial size=2>-------------
-------------</FONT></DIV>
<DIV><FONT face=Arial size=2>10.32.10.11
10.32.10.13</FONT></DIV>
<DIV><FONT face=Arial size=2>10.32.10.12
10.32.10.14</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial
size=2>10.31.10.131 10.31.10.133</FONT></DIV>
<DIV><FONT face=Arial size=2>10.31.10.132
10.31.10.134</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV>
<DIV>
<DIV><FONT face=Arial size=2>10.32.10.11 / 10.32.10.12 / 10.32.10.13 /
10.32.10.14 are all mapped onto a Virtual IP Address
10.32.10.1</FONT></DIV><FONT face=Arial size=2>10.31.10.131 / 10.31.10.132 /
10.31.10.133 / 10.31.10.134 are all mapped onto a Virtual IP Address
10.31.10.1</FONT></DIV></DIV>
<DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>And the subnet for the above NICs is all
255.255.255.0.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>The 2 Sun Servers are being clustered by Vertias
Cluster Server and At any one time, only one server is in active
state.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV></DIV>
<DIV><FONT face=Arial size=2>Scenario:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>When a client (IP Address:
10.32.10.101/255.255.255.0) tries to subscribe to the server's JMS Topic, the
entire server hanged and no other client requests can be further
processed.</FONT></DIV>
<DIV><FONT face=Arial size=2>Health status checks on the server also did not get
any response and the client also hanged.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>A check on the Weblogic's Kernal threads shows that
one of the thread is currently handling
"weblogic.jms.frontend.FEConnectionFactory".</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>This hanged state will eventually timeout after
600s and everything goes back to normal. </FONT></DIV>
<DIV><FONT face=Arial size=2>The client will have exceptions saying No route to
destination due to "Empty Reply".</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>I've also tried upgradng the Client's JDK to
1.4.2_07 and the reslt is still the same.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>For weblogic.jms.frontend.FEConnectionFactory, it
seems that the Client is trying to establish a JMS connection with the server
but somehow it got stuck in the process.</FONT></DIV>
<DIV><FONT face=Arial size=2>Why is this so? Is this a SP4 bug?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Regards</FONT></DIV>
<DIV><FONT face=Arial size=2>Mike</FONT></DIV></BODY></HTML>check whether the QCF is targetted and deployed on the Managed Server. I am assuming your war is deployed on the managed server.
cheers
dips -
Inconsistent message publishing times through weblogic JMS client
Hi,
We have a weblogic JMS application which we are deploying in a clustered weblogic enviornment. We are using distributed queues/topics with file store. We have both JMS cliient and server running on separate weblogic clusters. Most of the times it will take about 10 milli seconds to push the message into queue, but 1 in 50 messages takes about anywhere between 0.2 sec to 6 secs. Recently for three days it just took 10 msec for all the messages throught these three days and then started behaving erratically again. I am not able to really figure out why there is lot of deviation in the publishing times. When I monitor both my client and server through admin consiole, I don't see any stuck threads, heap size is normal, cpu load is normal, no problems with network. Please help me to figure out the root cause for abnormal publishing times.
Regards
KotiCould you check if there are JVM garbage collections during some the publishing times.
In particular check if there are any full garbage collection occuring when you notice such a deviation in the publishing time. -
How to configure a error queue for weblogic jms topic
Hi guys.
I want to configure a error queue for weblogic jms topic. Wanted: The message goes to error destination when messages have expired or reached their redelivery limit.
1. using jms transport configure proxy service:
Retry Count :3
Retry Interval:10
Error Destination: ErrorTopic
Expiration Policy: Redirect
I tried use the proxy service to consume message from the jms topic . and generation an error in the proxy message flow. But the message didn't goes into the error topic.
Any suggestions for this topic? Can anyone provide some helps or any useful links.
Thanks in advance.
MingzhuangMingzhuang
I want to configure a error queue for weblogic jms topic. Wanted: The message goes to error destination when messages have expired or reached their redelivery limit.
1. using jms transport configure proxy service:
Retry Count :3
Retry Interval:10
Error Destination: ErrorTopic
Expiration olicy: RedirectUnlike File/SFTP, JMS proxy service definition does not have the concept of Error Destination. To accomplish similar functionality go to JMSQ on (for which proxy is configured) server console (http://localhost:7001/console) and configure the Error Destination. Following URL will help in how to configure JMS Q.
http://edocs.bea.com/wls/docs103/ConsoleHelp/taskhelp/jms_modules/queues/ConfigureQueues.html
http://edocs.bea.com/wls/docs103/ConsoleHelp/taskhelp/jms_modules/queues/ConfigureQueueDeliveryFailure.html
I tried use the proxy service to consume message from the jms topic . and generation an error in the proxy message flow. But the message didn't goes into the error topic.If every thing is configured as per above step, then the after retries, the weblogic server will put the message into JMS topic configured. Your proxy will receive from this topic.
Let me know if we are not on same page.
Cheers
Manoj
Maybe you are looking for
-
MS Access and ODI - without Windows
Has anyone managed to get ODI to use MS Access file (mdb) as a source on a non-Windows platform? I'm using Ubuntu 8.10 and ODI 10.1.3.5. I've installed MDBTools and unixODBC but am hitting a variety of errors consistent with it being a bit of a hack
-
Unable to install OS X on Mini Mac
I am trying to install OS X Lion on my Mini Mac. Currently I am running OSX 10.4.11.
-
I registered my i phone 4 in somebody else's name can i change it back to mine
i registered my iphone 4 in my dads name whilst on his computer at the start up page can i change this back to my name
-
49$ / month suite, can I install this on my laptop and Desktop?
49$ / month suite, can I install this on my laptop and Desktop?
-
Unable to resolve 'app/ejb/Common.jar#SequenceInstrument'
I have developed a module with weblogic6.1 , but when I migrate it to weblogic 7 ,it alway appears errors as following. I have build with weblogic 7 for many times , but nothing change , please help me. ------error info ---- weblogic.management.Appli