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.

Reply via email to