Unwrapped XAResource objects used by JMS JCA consumer classes cause problems 
with Howl logging
----------------------------------------------------------------------------------------------

                 Key: SM-1138
                 URL: https://issues.apache.org/activemq/browse/SM-1138
             Project: ServiceMix
          Issue Type: Bug
          Components: servicemix-jms
    Affects Versions: 3.2
            Reporter: Craig Muchinsky


The org.apache.servicemix.jms.endpoints.JmsJcaConsumerEndpoint and 
org.apache.servicemix.jms.jca.JcaConsumerProcessor classes both leverage the 
org.jencks.SingletonEndpointFactory class, however they are not setting the 
name property, which leads to problems when using journaled JDBC persistence 
backed by Howl. This manifests itself with the following errors when trying to 
run the "basic" example with a Jencks connection factory:

java.lang.IllegalStateException: Cannot log transactions unles XAResources are 
named! org.apache.activemq.ra.LocalAndXATransaction

A quick and dirty fix that worked for me was to add:

((SingletonEndpointFactory)endpointFactory).setName("");

immediately after the endpointFactory was created in the JmsJcaConsumerEndpoint 
and JcaConsumerProcessor classes. I'm not sure if setting the name to a blank 
string is valid, but it does seem to cause the SingletonEndpointFactory to wrap 
the XAResource objects with a 
org.apache.geronimo.transaction.manager.WrapperNamedXAResource. Another option 
might be to modify the Jencks SingletonEndpointFactory class to always default 
the name to "" internally, but I don't know if that would have negative side 
effects anywhere else.

Related issues:
https://issues.apache.org/activemq/browse/SM-622
https://issues.apache.org/activemq/browse/SM-778


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to