Problem
1. The JMSContainerInvoker looksup JNDI to find
the (Topic/Queue)ConnectionFactory from which it
creates a (Topic/Queue)Connection.
2. The JMSContainerInvoker never checks if the
ConnectionFactory is XA compliant i.e is instanceof
XATopicConnectionFactory/XAQueueConnectionFactory
3. This means that irrespective of the type of
ConnectionFactory(XA/non XA) registered in JNDI the
JMSContainerInvoker always creates a
(Topic/Queue)Connection and never an XATopicConnection
or XAQueueConnection. i.e
createXATopicConnection()/createXAQueueConnection() is
never called.
4. When the created (non-XA) connection is passed
into org.jboss.jms.asf.StdServerSessionPoolFactory
it is used to create a StdServerSessionPool which
cribs by giving this elegant message
"WARNING: Using a non-XA TopicConnection. It will not
be able to participate in a Global UOW"
(StdServerSessionPool.java" line 178)
This problem leads to MDB being tied to non XA
compliant Queues/Topics which means that the
underlying JMS provider cannot
participate in a TPC even if it supports XA.
Solution
1. Modify JMSContainerInvoker to check if the
factory is XA compliant maybe done in the following
kludgy way
if (queueFactory instanceof XAQueueConnectionFactory)
{
queueConnection =
((XAQueueConnectionFactory)queueFactory).createXAQueueConnection();
log.debug("Creating XAQueueConnection");
}
else {
queueConnection =
queueFactory.createQueueConnection();
}
If the problem was not clearly defined then please get
back to me.
Super work guys :)
Thimmaiah
__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development