- All Implemented Interfaces:
public class NarayanaTransactionHelper extends org.jboss.narayana.jta.jms.TransactionHelperImpl
Constructors Constructor Description
All Methods Instance Methods Concrete Methods Modifier and Type Method Description
isTransactionAvailable()Connections were not always closed, because the super implementation of this method returns false too often.
Methods inherited from class org.jboss.narayana.jta.jms.TransactionHelperImpl
deregisterXAResource, registerSynchronization, registerXAResource
public boolean isTransactionAvailable() throws javax.jms.JMSExceptionConnections were not always closed, because the super implementation of this method returns false too often.
SessionProxy.close()both call this method before attempting to close the connection. When the connection is marked as
STATUS_ROLLEDBACKthis method will return true, claiming it's available. This scenario happened when a JMSMessage was marked for rollback by the
ReaperThreadwhile being detected as 'stuck' because of a (too) short timeout. While, even though the timeout was too short, no other unexpected behavior was detected. This mechanism however, will prevent the connection from being closed, causing a connection-leak to occur.
NOTE: This problem is caused because in the
internal connection statusis
javax.transaction.Status. Because of the conversion the actual state is lost, and
ActionStatus.ABORTEDconnections are marked as
- Specified by: