Package bitronix.tm.resource.jms
Class DualSessionWrapper
java.lang.Object
bitronix.tm.resource.common.AbstractXAStatefulHolder
bitronix.tm.resource.common.AbstractXAResourceHolder
bitronix.tm.resource.jms.DualSessionWrapper
- All Implemented Interfaces:
StateChangeListener,XAResourceHolder,XAStatefulHolder,AutoCloseable,Runnable,javax.jms.Session
public class DualSessionWrapper
extends AbstractXAResourceHolder
implements javax.jms.Session, StateChangeListener
JMS Session wrapper that will send calls to either a XASession or to a non-XA Session depending on the calling
context.
- Author:
- lorban
-
Field Summary
Fields inherited from interface javax.jms.Session
AUTO_ACKNOWLEDGE, CLIENT_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE, SESSION_TRANSACTEDFields inherited from interface bitronix.tm.resource.common.XAStatefulHolder
STATE_ACCESSIBLE, STATE_CLOSED, STATE_IN_POOL, STATE_NOT_ACCESSIBLE -
Constructor Summary
ConstructorsConstructorDescriptionDualSessionWrapper(JmsPooledConnection pooledConnection, boolean transacted, int acknowledgeMode) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Close the physical connection that thisXAStatefulHolderrepresents.voidcommit()javax.jms.QueueBrowsercreateBrowser(javax.jms.Queue queue) javax.jms.QueueBrowsercreateBrowser(javax.jms.Queue queue, String messageSelector) javax.jms.BytesMessagejavax.jms.MessageConsumercreateConsumer(javax.jms.Destination destination) javax.jms.MessageConsumercreateConsumer(javax.jms.Destination destination, String messageSelector) javax.jms.MessageConsumercreateConsumer(javax.jms.Destination destination, String messageSelector, boolean noLocal) javax.jms.MessageConsumercreateDurableConsumer(javax.jms.Topic topic, String name) javax.jms.MessageConsumercreateDurableConsumer(javax.jms.Topic topic, String name, String messageSelector, boolean noLocal) javax.jms.TopicSubscribercreateDurableSubscriber(javax.jms.Topic topic, String name) javax.jms.TopicSubscribercreateDurableSubscriber(javax.jms.Topic topic, String name, String messageSelector, boolean noLocal) javax.jms.MapMessagejavax.jms.Messagejavax.jms.ObjectMessagejavax.jms.ObjectMessagecreateObjectMessage(Serializable serializable) javax.jms.MessageProducercreateProducer(javax.jms.Destination destination) javax.jms.QueuecreateQueue(String queueName) javax.jms.MessageConsumercreateSharedConsumer(javax.jms.Topic topic, String sharedSubscriptionName) javax.jms.MessageConsumercreateSharedConsumer(javax.jms.Topic topic, String name, String messageSelector) javax.jms.MessageConsumercreateSharedDurableConsumer(javax.jms.Topic topic, String name) javax.jms.MessageConsumercreateSharedDurableConsumer(javax.jms.Topic topic, String name, String messageSelector) javax.jms.StreamMessagejavax.jms.TemporaryQueuejavax.jms.TemporaryTopicjavax.jms.TextMessagejavax.jms.TextMessagecreateTextMessage(String text) javax.jms.TopiccreateTopic(String topicName) protected voidEnlist this session into the current transaction if automaticEnlistingEnabled = true for this resource.intCreate a disposable handler used to drive a pooled instance ofXAStatefulHolder.Get the date at which this object was last released to the pool.javax.jms.MessageListenerGet the ResourceBean which created this XAResourceHolder.javax.jms.Sessionjavax.jms.SessiongetSession(boolean forceXa) booleanGet the vendor'sXAResourceimplementation of the wrapped resource.Get the list ofXAResourceHolders created by thisXAStatefulHolderthat are still open.voidrecover()voidrollback()voidrun()voidsetMessageListener(javax.jms.MessageListener listener) voidstateChanged(XAStatefulHolder source, int oldState, int newState) Fired when the internal state of aXAStatefulHolderhas changed.voidstateChanging(XAStatefulHolder source, int currentState, int futureState) Fired before the internal state of aXAStatefulHolderhas changed.toString()voidunsubscribe(String name) Methods inherited from class bitronix.tm.resource.common.AbstractXAResourceHolder
getXAResourceHolderStateGtrids, getXAResourceHolderStatesForGtrid, hasStateForXAResource, isParticipatingInActiveGlobalTransaction, putXAResourceHolderState, removeXAResourceHolderStateMethods inherited from class bitronix.tm.resource.common.AbstractXAStatefulHolder
addStateChangeEventListener, getState, removeStateChangeEventListener, setStateMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface bitronix.tm.resource.common.XAStatefulHolder
addStateChangeEventListener, getState, removeStateChangeEventListener, setState
-
Constructor Details
-
DualSessionWrapper
public DualSessionWrapper(JmsPooledConnection pooledConnection, boolean transacted, int acknowledgeMode)
-
-
Method Details
-
getPoolingConnectionFactory
-
getSession
public javax.jms.Session getSession() throws javax.jms.JMSException- Throws:
javax.jms.JMSException
-
getSession
public javax.jms.Session getSession(boolean forceXa) throws javax.jms.JMSException - Throws:
javax.jms.JMSException
-
toString
-
close
public void close() throws javax.jms.JMSExceptionDescription copied from interface:XAStatefulHolderClose the physical connection that thisXAStatefulHolderrepresents.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfacejavax.jms.Session- Specified by:
closein interfaceXAStatefulHolder- Throws:
javax.jms.JMSException
-
getLastReleaseDate
Description copied from interface:XAStatefulHolderGet the date at which this object was last released to the pool. This is required to check if it is eligible for discard when the containing pool needs to shrink.- Specified by:
getLastReleaseDatein interfaceXAStatefulHolder- Returns:
- the date at which this object was last released to the pool or null if it never left the pool.
-
stateChanged
Description copied from interface:StateChangeListenerFired when the internal state of aXAStatefulHolderhas changed.- Specified by:
stateChangedin interfaceStateChangeListener- Parameters:
source- theXAStatefulHolderchanging state.oldState- the old state of theXAStatefulHolder.newState- the new state of theXAStatefulHolder.
-
stateChanging
Description copied from interface:StateChangeListenerFired before the internal state of aXAStatefulHolderhas changed.- Specified by:
stateChangingin interfaceStateChangeListener- Parameters:
source- theXAStatefulHolderchanging state.currentState- the current state of theXAStatefulHolder.futureState- the future state of theXAStatefulHolder.
-
createProducer
public javax.jms.MessageProducer createProducer(javax.jms.Destination destination) throws javax.jms.JMSException - Specified by:
createProducerin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createConsumer
public javax.jms.MessageConsumer createConsumer(javax.jms.Destination destination) throws javax.jms.JMSException - Specified by:
createConsumerin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createConsumer
public javax.jms.MessageConsumer createConsumer(javax.jms.Destination destination, String messageSelector) throws javax.jms.JMSException - Specified by:
createConsumerin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createConsumer
public javax.jms.MessageConsumer createConsumer(javax.jms.Destination destination, String messageSelector, boolean noLocal) throws javax.jms.JMSException - Specified by:
createConsumerin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createDurableSubscriber
public javax.jms.TopicSubscriber createDurableSubscriber(javax.jms.Topic topic, String name) throws javax.jms.JMSException - Specified by:
createDurableSubscriberin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createDurableSubscriber
public javax.jms.TopicSubscriber createDurableSubscriber(javax.jms.Topic topic, String name, String messageSelector, boolean noLocal) throws javax.jms.JMSException - Specified by:
createDurableSubscriberin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createDurableConsumer
public javax.jms.MessageConsumer createDurableConsumer(javax.jms.Topic topic, String name) throws javax.jms.JMSException - Specified by:
createDurableConsumerin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createDurableConsumer
public javax.jms.MessageConsumer createDurableConsumer(javax.jms.Topic topic, String name, String messageSelector, boolean noLocal) throws javax.jms.JMSException - Specified by:
createDurableConsumerin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
getMessageListener
public javax.jms.MessageListener getMessageListener() throws javax.jms.JMSException- Specified by:
getMessageListenerin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
setMessageListener
public void setMessageListener(javax.jms.MessageListener listener) throws javax.jms.JMSException - Specified by:
setMessageListenerin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
run
public void run() -
getXAResource
Description copied from interface:XAResourceHolderGet the vendor'sXAResourceimplementation of the wrapped resource.- Specified by:
getXAResourcein interfaceXAResourceHolder- Returns:
- the vendor's XAResource implementation.
-
getResourceBean
Description copied from interface:XAResourceHolderGet the ResourceBean which created this XAResourceHolder.- Specified by:
getResourceBeanin interfaceXAResourceHolder- Returns:
- the ResourceBean which created this XAResourceHolder.
-
getXAResourceHolders
Description copied from interface:XAStatefulHolderGet the list ofXAResourceHolders created by thisXAStatefulHolderthat are still open.This method is thread-safe.
- Specified by:
getXAResourceHoldersin interfaceXAStatefulHolder- Returns:
- the list of
XAResourceHolders created by thisXAStatefulHolderthat are still open.
-
getConnectionHandle
Description copied from interface:XAStatefulHolderCreate a disposable handler used to drive a pooled instance ofXAStatefulHolder.This method is thread-safe.
- Specified by:
getConnectionHandlein interfaceXAStatefulHolder- Returns:
- a resource-specific disaposable connection object.
- Throws:
Exception- a resource-specific exception thrown when the disaposable connection cannot be created.
-
getTransacted
public boolean getTransacted() throws javax.jms.JMSException- Specified by:
getTransactedin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
getAcknowledgeMode
public int getAcknowledgeMode() throws javax.jms.JMSException- Specified by:
getAcknowledgeModein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
commit
public void commit() throws javax.jms.JMSException- Specified by:
commitin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
rollback
public void rollback() throws javax.jms.JMSException- Specified by:
rollbackin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
recover
public void recover() throws javax.jms.JMSException- Specified by:
recoverin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createBrowser
public javax.jms.QueueBrowser createBrowser(javax.jms.Queue queue) throws javax.jms.JMSException - Specified by:
createBrowserin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createBrowser
public javax.jms.QueueBrowser createBrowser(javax.jms.Queue queue, String messageSelector) throws javax.jms.JMSException - Specified by:
createBrowserin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createBytesMessage
public javax.jms.BytesMessage createBytesMessage() throws javax.jms.JMSException- Specified by:
createBytesMessagein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createMapMessage
public javax.jms.MapMessage createMapMessage() throws javax.jms.JMSException- Specified by:
createMapMessagein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createMessage
public javax.jms.Message createMessage() throws javax.jms.JMSException- Specified by:
createMessagein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createObjectMessage
public javax.jms.ObjectMessage createObjectMessage() throws javax.jms.JMSException- Specified by:
createObjectMessagein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createObjectMessage
public javax.jms.ObjectMessage createObjectMessage(Serializable serializable) throws javax.jms.JMSException - Specified by:
createObjectMessagein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createStreamMessage
public javax.jms.StreamMessage createStreamMessage() throws javax.jms.JMSException- Specified by:
createStreamMessagein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createTextMessage
public javax.jms.TextMessage createTextMessage() throws javax.jms.JMSException- Specified by:
createTextMessagein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createTextMessage
- Specified by:
createTextMessagein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createQueue
- Specified by:
createQueuein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createTopic
- Specified by:
createTopicin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createTemporaryQueue
public javax.jms.TemporaryQueue createTemporaryQueue() throws javax.jms.JMSException- Specified by:
createTemporaryQueuein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
createTemporaryTopic
public javax.jms.TemporaryTopic createTemporaryTopic() throws javax.jms.JMSException- Specified by:
createTemporaryTopicin interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
unsubscribe
- Specified by:
unsubscribein interfacejavax.jms.Session- Throws:
javax.jms.JMSException
-
enlistResource
protected void enlistResource() throws javax.jms.JMSExceptionEnlist this session into the current transaction if automaticEnlistingEnabled = true for this resource. If no transaction is running then this method does nothing.- Throws:
javax.jms.JMSException
-