activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eugene Rodos (JIRA)" <j...@apache.org>
Subject [jira] Created: (AMQ-2659) Incorrect Exception when using XAConnection/XASession outside a transaction
Date Fri, 19 Mar 2010 16:31:45 GMT
Incorrect Exception when using XAConnection/XASession outside a transaction
---------------------------------------------------------------------------

                 Key: AMQ-2659
                 URL: https://issues.apache.org/activemq/browse/AMQ-2659
             Project: ActiveMQ
          Issue Type: Bug
    Affects Versions: 5.3.0
            Reporter: Eugene Rodos


Currently, if one attempts to use an XAConnection (implemented by ActiveMQXAConnection) and
consequently an XASession (implemented by ActiveMQXASession) outside a transaction, a JMSException
is thrown.  However, nowhere in the JMS Spec does it say that if an XAConnection/XASession
is used, it _*must*_ be enlisted in a transaction.  It is perfectly legal to _*not*_ start
a transaction but still use the XA objects.

I propose that the following 2 methods in ActiveMQXASession be changed as follows to resolve
this bug:
{noformat}
    public boolean getTransacted() throws JMSException {
        return getTransactionContext().isInXATransaction();
    }

    /**
     * This is called before transacted work is done by the session.
     * XA transactions are controlled outside of the session so
     * nothing has to be done here.  The only reason for this method
     * to be here is to override the parent.
     */
    protected void doStartTransaction() {
    }
{noformat}
\\
The current version of these methods is as follows (for reference):

{noformat}
    public boolean getTransacted() throws JMSException {
        return true;
    }

    /**
     * This is called before transacted work is done by
     * the session.  XA Work can only be done when this
     * XA resource is associated with an Xid.
     *
     * @throws JMSException not associated with an Xid
     */
    protected void doStartTransaction() throws JMSException {

        if (!getTransactionContext().isInXATransaction()) {
            throw new JMSException("Session's XAResource has not been enlisted in a distributed
transaction.");
        }

    }
{noformat}

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


Mime
View raw message