TheXASession
interface extends the capability ofSession
by adding access to a JMS provider's support for the Java Transaction API (JTA) (optional). This support takes the form of ajavax.transaction.xa.XAResource
object. The functionality of this object closely resembles that defined by the standard X/Open XA Resource interface.
An application server controls the transactional assignment of anXASession
by obtaining itsXAResource
. It uses theXAResource
to assign the session to a transaction, prepare and commit work on the transaction, and so on.
AnXAResource
provides some fairly sophisticated facilities for interleaving work on multiple transactions, recovering a list of transactions in progress, and so on. A JTA aware JMS provider must fully implement this functionality. This could be done by using the services of a database that supports XA, or a JMS provider may choose to implement this functionality from scratch.
A client of the application server is given what it thinks is a regular JMSSession
. Behind the scenes, the application server controls the transaction management of the underlyingXASession
.
Session
Fields inherited from interface javax.jms.Session |
AUTO_ACKNOWLEDGE,CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE |
commit() Throws a TransactionInProgressException , since it should not be called for anXASession object. | |
getTransacted() Indicates whether the session is in transacted mode. | |
getXAResource() Returns an XA resource to the caller. | |
rollback() Throws a TransactionInProgressException , since it should not be called for anXASession object. |
Methods inherited from interface javax.jms.Session |
close,createBytesMessage,createMapMessage,createMessage,createObjectMessage,createObjectMessage,createStreamMessage,createTextMessage,createTextMessage,getMessageListener,recover,run,setMessageListener |
publicXAResourcegetXAResource()
public booleangetTransacted() throwsJMSException
getTransacted
in interfaceSession
JMSException
- if the JMS provider fails to return the transaction mode due to some internal error.public voidcommit() throwsJMSException
TransactionInProgressException
, since it should not be called for anXASession
object.commit
in interfaceSession
TransactionInProgressException
- if the method is called on anXASession
.public voidrollback() throwsJMSException
TransactionInProgressException
, since it should not be called for anXASession
object.rollback
in interfaceSession
TransactionInProgressException
- if the method is called on anXASession
.