I have an MDB that picks up messages, parses and places it in an object to be passed around the system and eventually the object is passed over to a SLSB that that builds a new msg and sends it to another system.

I am doing the JNDI lookup for the the SLSB in the MDB and passing the 'handle' around with the dataObject so that when the final pojo needs to call the SLSB it simply calls it's method to send the message.

I originally had XA enabled checked for both the QCF's for the MDB and SLSB, but I wanted to turn it off, but it is blowing up saying:

11/17/04 11:14:46:719 EST] 5cb6e401 TransactionIm E WTRN0062E: An illegal attempt to use multiple resources that have only one-phase capability has occurred within a global transaction.
[11/17/04 11:14:46:844 EST] 5cb6e401 LocalTransact E J2CA0030E: Method enlist caught java.lang.IllegalStateException
at com.ibm.ejs.jts.jta.TransactionImpl.enlistResource(TransactionImpl.java:546)
at com.ibm.ejs.jts.jta.JTSXA.enlistResource(JTSXA.java:1061)
at com.ibm.ejs.jts.jta.JTSXA.enlistOnePhase(JTSXA.java:1038)
at com.ibm.ejs.j2c.LocalTransactionWrapper.enlist(LocalTransactionWrapper.java:493)
at com.ibm.ejs.j2c.ConnectionEventListener.localTransactionStarted(ConnectionEventListener.java:531)
at com.ibm.ejs.jms.JMSManagedSession.localTransactionStarted(JMSManagedSession.java:853)
at com.ibm.ejs.jms.JMSManagedSession.enlist(JMSManagedSession.java:809)
at com.ibm.ejs.jms.JMSMessageProducerHandle.enlist(JMSMessageProducerHandle.java:795)

Is this because Im doing the lookup in the MDB and passing it around- so it is a global tran. What would I do to fix this so I dont have to use XA enabled? create another SLSB and let it do the lookup etc so it is tied to the sender SLSB? kinda the same thing right?

I would like to know how other people architect their MDB's in this manner.