ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » Multiphase Commit » MQ XA Weblogic JMSAdmin

Post new topic  Reply to topic
 MQ XA Weblogic JMSAdmin « View previous topic :: View next topic » 
Author Message
karthik_utd
PostPosted: Fri Mar 20, 2009 12:54 pm    Post subject: MQ XA Weblogic JMSAdmin Reply with quote

Novice

Joined: 11 Apr 2007
Posts: 10

Hello all,

I have problems with XA transactions. I tried many many many different configs but none of them worked.

Environment:
Weblogic 10.0
IBM MQ Series 6.x (Don't know exact version).

This is what I did starting from the beginning:

Using JMSAdmin, I did:

def xaqcf(_NGMQMGR) qmgr(EUMOTO2D)
def q(_NGMMDBQueue) qmgr(EUMOTO2D) queue(EU.MOTO.OASYS.IN)
def q(_NGMReplyMDBQueue) qmgr(EUMOTO2D) queue(EU.MOTO.OASYS.OUT)
end

I created a JMS Server in weblogic with a target server amsMOTOSITNode1
I created a foreign server and I created a subdeployment for that with the subdeployment pointing to the JMS Server above.
I created Destinations Connection Factories for the foreign server.

Then I created an MDB. This guy upon getting a message does some stuff, writes to a database and commits. (I don't manually commit. It is Container managed transaction).



Code:

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">

   <enterprise-beans>
      <message-driven>
        <ejb-name>MDBTemplate</ejb-name>
         <ejb-class>com.test.MDBTesting</ejb-class>
         <messaging-type>javax.jms.MessageListener</messaging-type>
         <transaction-type>Container</transaction-type>
         <message-destination-type>javax.jms.Queue</message-destination-type>     
      </message-driven>
   </enterprise-beans>

    <assembly-descriptor>
        <container-transaction>
            <method>
                <ejb-name>MDBTemplate</ejb-name>
                <method-name>*</method-name>
            </method>
            <trans-attribute>Required</trans-attribute>
        </container-transaction>
    </assembly-descriptor>

</ejb-jar>


--------------------------------------------------------------------------------


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
 "http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">

<weblogic-ejb-jar>
 <description><![CDATA[Generated by XDoclet]]></description>
   <weblogic-enterprise-bean>
      <ejb-name>MDBTemplate</ejb-name>
      <message-driven-descriptor>
         <pool>
            <max-beans-in-free-pool>1</max-beans-in-free-pool>
            <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
         </pool>
         <destination-jndi-name>NGM_OASYS_IN</destination-jndi-name>
         <connection-factory-jndi-name>NGM_EUMOTO2DQCF</connection-factory-jndi-name>
      </message-driven-descriptor>
      <reference-descriptor>
      </reference-descriptor>
   </weblogic-enterprise-bean>

</weblogic-ejb-jar>

-------------------------------------------------------------------------------
JMSAdmin:

   a  SWIFT_LISTEN              com.ibm.mq.jms.MQQueue
   a  FAX_LISTEN                com.ibm.mq.jms.MQQueue
   a  SWIFT_CS                  com.ibm.mq.jms.MQQueue
   a  SWIFT_IN                  com.ibm.mq.jms.MQQueue
   a  LM_RESULTS                com.ibm.mq.jms.MQQueue
   a  MATCH                     com.ibm.mq.jms.MQQueue
   a  EXCEPTION_PROCESS         com.ibm.mq.jms.MQQueue
   a  OASYS_IN                  com.ibm.mq.jms.MQQueue
   a  CLINT_FX                  com.ibm.mq.jms.MQQueue
   a  CLINT_PNR                 com.ibm.mq.jms.MQQueue
   a  MULT_LM                   com.ibm.mq.jms.MQQueue
   a  SWIFT_ACK                 com.ibm.mq.jms.MQQueue
   a  MULT                      com.ibm.mq.jms.MQQueue
   a  EUMOTO2DQCF               com.ibm.mq.jms.MQXAQueueConnectionFactory
   a  SWIFT_OUT                 com.ibm.mq.jms.MQQueue


--------------------------------------------------------------------------------
Weblogic Destinations on the Foreign server mentioned above:

Destination Name   JNDI Name(as weblogic    JNDI Name(As given by JMSAdmin)
            knows it)

 NGM_CLINT_FX       NGM_CLINT_FX       CLINT_FX

 NGM_CLINT_PNR       NGM_CLINT_PNR       CLINT_PNR
 
 NGM_EXCEPTION_PROCESS   NGM_EXCEPTION_PROCESS    EXCEPTION_PROCESS
 
 NGM_FAX_LISTEN    NGM_FAX_LISTEN       FAX_LISTEN
 
 NGM_OASYS_IN       NGM_OASYS_IN       OASYS_IN

 NGM_LM_RESULTS    NGM_LM_RESULTS       LM_RESULTS    

 NGM_MATCH       NGM_MATCH       MATCH    

 NGM_MULT_LM       NGM_MULT_LM       MULT_LM

 NGM_SWIFT_ACK       NGM_SWIFT_ACK       SWIFT_ACK

 NGM_SWIFT_CS       NGM_SWIFT_CS       SWIFT_CS

 NGM_SWIFT_IN       NGM_SWIFT_IN       SWIFT_IN
 
 NGM_SWIFT_LISTEN    NGM_SWIFT_LISTEN    SWIFT_LISTEN    

 NGM_SWIFT_OUT       NGM_SWIFT_OUT       SWIFT_OUT

--------------------------------------------------------------------------------
weblogic connection factories on the Foreign server mentioned above:

 Name           Local JNDI Name    Remote JNDI Name

 NGM_EUMOTO2DQCF    NGM_EUMOTO2DQCF    EUMOTO2DQCF




I will continue my post as a reply. I am concerned about how the formatting will be..[/code]
Back to top
View user's profile Send private message
karthik_utd
PostPosted: Fri Mar 20, 2009 1:01 pm    Post subject: Reply with quote

Novice

Joined: 11 Apr 2007
Posts: 10

Cool, It came neat..


Continued...


Below is my MDB. The database and the queue the MDB is listening to are working is a single unit and as expected. If I don't rollback, because it is container managed transaction, both of them commit. If I set context.setRollbackOnly(), they both rollback as expected:

Code:

package com.abc;

import java.sql.Connection;
import java.util.Random;

import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class XATestClass1234 implements MessageDrivenBean, MessageListener {

   private static final long serialVersionUID = 4286852471477024691L;

   private MessageDrivenContext context = null;
   DataSource ds = null;
   Connection con = null;

   public void ejbRemove() throws EJBException {


   }

   public void setMessageDrivenContext(MessageDrivenContext arg0)
         throws EJBException {
      System.out.println("setting context");
      this.context = arg0;
   }

   public void onMessage(Message arg0) {
      System.out.println("on message");
      try {
         int r = new Random().nextInt();
         con.createStatement().executeQuery("insert into ku_table values('"+r+"', 'karthik')");
         if(r%2==0) {
            System.out.println("even number generated: "+r+". unbearable condition.. rollback..");
            throw new Exception();
         }
         System.out.println("odd number generated: "+r+". desirable condition.. will commit..");
         con.createStatement().executeQuery("update ku_table set VAL='dartik' where theint='"+r+"'");
      } catch (Exception e) {
         context.setRollbackOnly();
         e.printStackTrace();
      }
   }

   public void ejbCreate() {
      System.out.println("EJB Create");
      try {
         InitialContext context = new InitialContext();
         ds = (DataSource) context.lookup("motongds");
         con = ds.getConnection();
      } catch(Exception e) {
         e.printStackTrace();
      }
   }

}




It is just some basic test code that I wrote. It basically generates a random number and if it is even, it throws an exception and I check to see if both the queue and the database rolled back.. They are..

If an odd number is generated, I see whether both the database and the MQ are committing, and they are..


Now, my problem starts..


Now I include third resource, which is another MQ. For simplicity, I removed the database from the picture as I am confident that it will work fine.. The third resource is another MQ. The challenge now for me is for the MDB to pick a message and consume it, and the second MQ must receive some message and both of them should be a single unit of work. But it doesn't work:

Below is my code:

Code:

package com.test;

import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.QueueConnection;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.XAQueueConnection;
import javax.jms.XAQueueConnectionFactory;
import javax.jms.XAQueueSession;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.ibm.mq.jms.MQQueue;

public class MDBTesting implements MessageListener, MessageDrivenBean  {
   private static int i = 1;
   private static final long serialVersionUID = 8889211012077622333L;
   private MessageDrivenContext context = null;
   
   public void ejbRemove() throws EJBException {
      System.out.println("ejb remove");
   }

   public void ejbCreate() {
      System.out.println("ejb Create");
   }
   
   public void setMessageDrivenContext(MessageDrivenContext arg0)
         throws EJBException {
      this.context = arg0;
   }

   public void onMessage(Message arg0) {
      try {
         System.out.println("msg received "+ i);
         //putMessage("NGM_FAX_LISTEN");
         //putMessage("NGM_CLINT_PNR")) ;
         putxaMessage("NGM_FAX_LISTEN");
            

         if(i % 2 != 0) {
            i++;
         } else {
            i++;
            System.out.println("trowing exception");
            throw new Exception("Should rollback!");
         }
      } catch(Exception e) {
         e.printStackTrace();
         System.out.println("setting rollback only");
         context.setRollbackOnly();
      }
   }
   
   public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";
   private MQQueue xaqueue ;
   private XAQueueConnectionFactory xaqcf;

   public boolean putxaMessage(String queueName) throws Exception {
      boolean put = false;
      System.out.println("=> Placing xa message on WLReplyQueue...");
      Context jndiContext = null;
        try {
            jndiContext = new InitialContext();
        } catch (NamingException e) {
            System.out.println("xa Could not create JNDI API " +
                    "context: " + e.toString());
            return false;
        } catch(Exception e) {
           System.out.println(e.getMessage());
           return false;
        }
      XAQueueConnection queueConnection = null;
      XAQueueSession queueSession = null;

        try {
           xaqcf = (XAQueueConnectionFactory) jndiContext.lookup("NGM_EUMOTO2DQCF");
           xaqueue = (MQQueue) jndiContext.lookup(queueName);
            xaqueue.setTargetClient(com.ibm.mq.jms.JMSC.MQJMS_CLIENT_NONJMS_MQ);
        } catch (NamingException e) {
            System.out.println("xa JNDI API lookup failed: " +
                    e.toString());
            return false;
        }
       
       

      try {
         queueConnection = xaqcf.createXAQueueConnection();
         queueConnection.start();
         queueSession = queueConnection.createXAQueueSession();
         try {
            MessageProducer sender = queueSession.createProducer(xaqueue);
            sender.send(queueSession.createMessage());
            
            System.out.println("=>xa Message sent!");
         } catch(Exception e) {
            e.printStackTrace();
            System.out.println("----------------------------------------");
            if (e instanceof JMSException) {
               JMSException ex = (JMSException) e;
               ex.getLinkedException().printStackTrace();
                String msg = "JMS error: "+ex.getMessage();
                if(MQReasonCodeResolver.canResolve(ex)) {
                  msg += " "+MQReasonCodeResolver.resolve(ex);
                }
                System.out.println("Message: "+msg);
               
            }       else {
               System.out.println("Not JMS Exception");
            }
         }
         
         put = true;
      } catch (Exception e) {
         System.out.println("Exception: ");
         e.printStackTrace();

         if (e instanceof JMSException) {
            ((JMSException) e).getLinkedException().printStackTrace();
         }

      }
      return put;
   }


}



I will continue as a reply..
Back to top
View user's profile Send private message
karthik_utd
PostPosted: Fri Mar 20, 2009 1:09 pm    Post subject: Reply with quote

Novice

Joined: 11 Apr 2007
Posts: 10

With this approach, I get the following exception:

Code:

<Mar 20, 2009 8:23:32 PM GMT> <Notice> <Stdout> <BEA-000000> <Exception:>
        at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:567)
        at com.ibm.mq.jms.MQMessageProducer.sendInternal(MQMessageProducer.java:1760)
        at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:1070)
        at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:1123)
        at com.test.MDBTesting.putxaMessage(MDBTesting.java:100)
        at com.test.MDBTesting.onMessage(MDBTesting.java:46)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
        at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
        at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:126)
        at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:114)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
        at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
        at $Proxy75.onMessage(Unknown Source)
        at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
        at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
        at weblogic.ejb.container.internal.JMSMessagePoller.processOneMessage(JMSMessagePoller.java:330)
        at weblogic.ejb.container.internal.JMSMessagePoller.pollContinuously(JMSMessagePoller.java:404)
        at weblogic.ejb.container.internal.JMSMessagePoller.pollForParent(JMSMessagePoller.java:527)
        at weblogic.ejb.container.internal.JMSMessagePoller.run(JMSMessagePoller.java:543)
        at java.lang.Thread.run(Thread.java:595)
com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2072
        at com.ibm.mq.MQQueue.putMsg2(MQQueue.java:1687)
        at com.ibm.mq.jms.MQMessageProducer.sendInternal(MQMessageProducer.java:1732)
        at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:1070)
        at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:1123)
        at com.test.MDBTesting.putxaMessage(MDBTesting.java:100)
        at com.test.MDBTesting.onMessage(MDBTesting.java:46)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
        at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
        at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:126)
        at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:114)
        at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
        at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
        at $Proxy75.onMessage(Unknown Source)
        at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
        at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
        at weblogic.ejb.container.internal.JMSMessagePoller.processOneMessage(JMSMessagePoller.java:330)
        at weblogic.ejb.container.internal.JMSMessagePoller.pollContinuously(JMSMessagePoller.java:404)
        at weblogic.ejb.container.internal.JMSMessagePoller.pollForParent(JMSMessagePoller.java:527)
        at weblogic.ejb.container.internal.JMSMessagePoller.run(JMSMessagePoller.java:543)
        at java.lang.Thread.run(Thread.java:595)



Which has got to do with some syncpoint etc etc exception code 2072 and everything.. If so far what I have done is correct, please let me know how do I get this working. I am willing to try anything.

I also tried the below:

Code:

package com.abc;

import java.sql.Connection;
import java.util.Hashtable;
import java.util.Random;

import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import com.ibm.mq.jms.MQQueue;

public class XATestClass32141 implements MessageDrivenBean, MessageListener {

   private static final long serialVersionUID = 4286852471477024691L;

   DataSource ds = null;
   Connection con = null;

   public void ejbRemove() throws EJBException {


   }

   public void setMessageDrivenContext(MessageDrivenContext arg0)
         throws EJBException {
      System.out.println("setting context");
   }

   public void onMessage(Message arg0) throws RuntimeException {
      System.out.println("on message");
      try {
         putMessage(arg0);
      } catch (Exception e) {
         //context.setRollbackOnly();
         throw new RuntimeException(e);
      }
   }

   private com.ibm.mq.jms.MQQueue  queue ;
   private javax.jms.QueueConnectionFactory qcf;
   public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

   public void putMessage(javax.jms.Message msg) throws Exception {
      boolean put = false;
      System.out.println("=> Placing message on WLReplyQueue...");
      Context jndiContext = null;
        Hashtable<String, String> env = new Hashtable<String, String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY,JNDI_FACTORY);
        try {
            jndiContext = new InitialContext(env);
        } catch (NamingException e) {
            System.out.println("Could not create JNDI API " +
                    "context: " + e.toString());
            return;
        } catch(Exception e) {
           System.out.println(e.getMessage());
           return;
        }
      QueueConnection queueConnection = null;
      QueueSession queueSession = null;
      QueueSender queueSender = null;

        try {
           qcf = (QueueConnectionFactory) jndiContext.lookup("MotoMQSenderQCF");
            queue = (MQQueue) jndiContext.lookup("MotoMQSenderQueue");
            queue.setTargetClient(com.ibm.mq.jms.JMSC.MQJMS_CLIENT_NONJMS_MQ);
        } catch (NamingException e) {
            System.out.println("JNDI API lookup failed: " +
                    e.toString());
            return;
        } catch (JMSException e2) {
           e2.printStackTrace();
        }

      try {
         queueConnection = qcf.createQueueConnection();
         queueSession = queueConnection.createQueueSession(false,
               Session.AUTO_ACKNOWLEDGE);
         queueSender = queueSession.createSender(queue);

         queueSender.send(msg);
         System.out.println("=> Message sent!");
         put = true;
      } catch (Exception e) {
         System.out.println("Exception: ");
         e.printStackTrace();

         if (e instanceof JMSException) {
            ((JMSException) e).getLinkedException().printStackTrace();
         }

      } finally {

         try {
            System.out.println("=> Closing Connection");
            queueSession.close();
            queueConnection.close();
         } catch (Exception e) {
            System.out.println("Exception: ");
            e.printStackTrace();

            if (e instanceof JMSException) {
               ((JMSException) e).getLinkedException().printStackTrace();
            }
         }
      }
      if(put == false)
         throw new Exception("Could not put msg. So throwing msg so that we can rollback!");
   }

   public void ejbCreate() {
      System.out.println("EJB Create");
      try {
         InitialContext context = new InitialContext();
         ds = (DataSource) context.lookup("motongds");
         con = ds.getConnection();
      } catch(Exception e) {
         e.printStackTrace();
      }
   }

}



If I rollback, only the MDB listening queue rollsback but the second queue is all committed and happy. This is an undesirable condition.

So, I guessed I have to set

Code:

         queueSession = queueConnection.createQueueSession(false,
               Session.AUTO_ACKNOWLEDGE);


to

Code:

         queueSession = queueConnection.createQueueSession(true,
               Session.AUTO_ACKNOWLEDGE);



Now, though the MDB listening queue commits, the second queue does nothing. It doesn't get any message or anything.

I have also tried creating multiple queue connection factories JNDI names etc

I have tried to get a normal queueSession from an XAQueueSession and from that queueSession, create a queueSender and send the message. It does send the message fine but doesn't rollback when a rollback is expected..


Please let me know what to do...

Thank you,
Karthik.
Back to top
View user's profile Send private message
karthik_utd
PostPosted: Mon Mar 23, 2009 5:16 am    Post subject: Reply with quote

Novice

Joined: 11 Apr 2007
Posts: 10

Someone pls say something.. Not literally..

Please say something that can help me with the above posted problems.
Back to top
View user's profile Send private message
Vitor
PostPosted: Mon Mar 23, 2009 5:22 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

karthik_utd wrote:
Someone pls say something..


It's a plea from the heart!

karthik_utd wrote:

Please say something that can help me with the above posted problems.


On the understanding I don't know a container managed MDB from a hole in the ground (and have more familiarity with holes in the ground), I'd start with that 2072 error. Are you sure the queue manager is participating properly in the XA managed transaction? Is the switch file configured correctly? Has the XA transaction properly started?

If that's all set up right, could be anything!
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
karthik_utd
PostPosted: Tue Mar 24, 2009 6:12 am    Post subject: Reply with quote

Novice

Joined: 11 Apr 2007
Posts: 10

Thanks for the reply Vitor. I have no clue about MQ setup. It is done by the MQ support team. All we are given are the details such as port, qmanager, qname, channel, and hostname. I don't have any more details other than that.

Neither do I know if the XA transaction has started properly. It is container managed transaction and I expect the container to do a good job.

Please help me more
Back to top
View user's profile Send private message
Vitor
PostPosted: Tue Mar 24, 2009 6:17 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

karthik_utd wrote:
Please help me more


Vitor wrote:
I don't know a container managed MDB from a hole in the ground


So I'm not going to be any more help as you're out of my area of expertise.

Aside from if you've no clue about the MQ setup, the MQ support team should be your next port of call. They should at least have the answers to the questions I asked.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
karthik_utd
PostPosted: Wed Mar 25, 2009 10:46 am    Post subject: Reply with quote

Novice

Joined: 11 Apr 2007
Posts: 10

I would like to thank you for your help. There was a small issue on my side that caused the issue.
To make a resource available for XA transactions in weblogic, we have to use the following in ejb-jar.xml:

<resource-ref>
<res-ref-name>jms/NGM_EUMOTO2DQCF</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

And the following in webjogic-ejb-jar.xml:

<reference-descriptor>
<resource-description>
<res-ref-name>jms/NGM_EUMOTO2DQCF</res-ref-name>
<jndi-name>NGM_EUMOTO2DQCF</jndi-name>
</resource-description>

</reference-descriptor>


Thanks again. I got it working now

Regards,
Karthik.
Back to top
View user's profile Send private message
karthik_utd
PostPosted: Wed Mar 25, 2009 10:47 am    Post subject: Reply with quote

Novice

Joined: 11 Apr 2007
Posts: 10

I know others might face similar problems sometime in future. For their reference, this is the link that helped me

http://e-docs.bea.com/wls/docs81/jms/j2ee_components.html
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » Multiphase Commit » MQ XA Weblogic JMSAdmin
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.