Uttam Bhatia Posted February 6, 2020 Posted February 6, 2020 Hi Team, Recently I migrated Weblogic local queue to EMS server and details of the EMS queue are being configured using foreign-server in weblogic as shown below in #3: jmsmodule_definition.xml. And these details are changed in such a manner that it's local JNDI name which being referred by EJB as shown in #1: ejb-jar.xml are same and hence no change in it. Since the EJB ProcessBean's method "invokeProcess" defined transaction type "RequiresNew", i am getting below errors when changed res-type in ejb-jar.xml for resource-ref "XYZConnectionFactory" to: a. javax.jms.QueueConnectionFactory Following Errors are thrown at runtime while invoking ejb method: Unable to use a wrapped JMS session in the transaction because two-phase commit is not available at weblogic.deployment.jms.JMSExceptions.getJMSException(JMSExceptions.java:22) at weblogic.deployment.jms.WrappedTransactionalSession.enlistInExistingTransaction(WrappedTransactionalSession.java:153) at weblogic.deployment.jms.WrappedTransactionalSession.enlistInTransaction(WrappedTransactionalSession.java:211) at weblogic.deployment.jms.WrappedMessageProducer.send(WrappedMessageProducer.java:184) b. javax.jms.XAQueueConnectionFactory Following Errors are thrown at runtime while invoking ejb method: Unable to use a wrapped JMS session in the transaction because two-phase commit is not available at weblogic.deployment.jms.JMSExceptions.getJMSException(JMSExceptions.java:22) at weblogic.deployment.jms.WrappedTransactionalSession.enlistInExistingTransaction(WrappedTransactionalSession.java:153) at weblogic.deployment.jms.WrappedTransactionalSession.enlistInTransaction(WrappedTransactionalSession.java:211) at weblogic.deployment.jms.WrappedMessageProducer.send(WrappedMessageProducer.java:184) Based on the above two changesets and corresponding error, i tried to disable default wrapping in WL by using res-type as "java.lang.Object" c. java.lang.Object Following Errors are thrown at runtime while invoking ejb method: : javax.jms.JMSSecurityException: Failed to connect to any server at: tcp://remote_url:32061,tcp://remote_url:32061 [Error: authentication failed: url that returned this exception = TCP://remote_url:32061 ] at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:1095) at com.tibco.tibjms.TibjmsConnection.(TibjmsConnection.java:2699) at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:195) at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:239) at com.tibco.tibjms.TibjmsConnectionFactory.createConnection(TibjmsConnectionFactory.java:36) Thus, none of the above three approaches worked, i have below query: Q. From the error #a & #b above, clearly indicates that the EMS server is not enabled for XA transaction. Is there option we can enable XA Transaction support in EMS 1. ejb-jar.xml -------------- ProcessBean xxx.*ProcessServiceHome xxx.*ProcessServiceRemote xxx.*ProcessServiceBean Stateless Container XYZConnectionFactory com.tibco.tibjms.TibjmsQueueConnectionFactory Container TMS_MATCH_QUEUE javax.jms.Queue Container weblogic ProcessBean invokeProcess RequiresNew 2.weblogic-ejb-jar.xml ------------------------ XYZConnectionFactory jms.AutomatedQueryConnectionFactory@env_name1@ TMS_MATCH_QUEUE jms.AUTOMATED_QUERY_QUEUE@env_name1@ 3. jmsmodule_definition.xml ---------------------------- true jms.AUTOMATED_QUERY_QUEUE REMOTE_Q_NAME jms.AutomatedQueryConnectionFactory QueryConnectionFactory user1 xyz com.tibco.tibjms.naming.TibjmsInitialContextFactory tcp://remote_url:32061,tcp://remote_url:32061 xyz java.naming.factory.initial com.tibco.tibjms.naming.TibjmsInitialContextFactory java.naming.provider.url tcp://remote_url:32061,tcp://remote_url:32061 java.naming.security.principal user1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now