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

Reply via email to