Package bitronix.tm.resource.messaging
Class DualSessionWrapper
java.lang.Object
bitronix.tm.resource.common.AbstractXAStatefulHolder
bitronix.tm.resource.common.AbstractXAResourceHolder
bitronix.tm.resource.messaging.DualSessionWrapper
- All Implemented Interfaces:
StateChangeListener,XAResourceHolder,XAStatefulHolder,jakarta.jms.Session,AutoCloseable,Runnable
public class DualSessionWrapper
extends AbstractXAResourceHolder
implements jakarta.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 jakarta.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(MessagingPooledConnection pooledConnection, boolean transacted, int acknowledgeMode) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Close the physical connection that thisXAStatefulHolderrepresents.voidcommit()jakarta.jms.QueueBrowsercreateBrowser(jakarta.jms.Queue queue) jakarta.jms.QueueBrowsercreateBrowser(jakarta.jms.Queue queue, String messageSelector) jakarta.jms.BytesMessagejakarta.jms.MessageConsumercreateConsumer(jakarta.jms.Destination destination) jakarta.jms.MessageConsumercreateConsumer(jakarta.jms.Destination destination, String messageSelector) jakarta.jms.MessageConsumercreateConsumer(jakarta.jms.Destination destination, String messageSelector, boolean noLocal) jakarta.jms.MessageConsumercreateDurableConsumer(jakarta.jms.Topic topic, String name) jakarta.jms.MessageConsumercreateDurableConsumer(jakarta.jms.Topic topic, String name, String messageSelector, boolean noLocal) jakarta.jms.TopicSubscribercreateDurableSubscriber(jakarta.jms.Topic topic, String name) jakarta.jms.TopicSubscribercreateDurableSubscriber(jakarta.jms.Topic topic, String name, String messageSelector, boolean noLocal) jakarta.jms.MapMessagejakarta.jms.Messagejakarta.jms.ObjectMessagejakarta.jms.ObjectMessagecreateObjectMessage(Serializable serializable) jakarta.jms.MessageProducercreateProducer(jakarta.jms.Destination destination) jakarta.jms.QueuecreateQueue(String queueName) jakarta.jms.MessageConsumercreateSharedConsumer(jakarta.jms.Topic topic, String sharedSubscriptionName) jakarta.jms.MessageConsumercreateSharedConsumer(jakarta.jms.Topic topic, String name, String messageSelector) jakarta.jms.MessageConsumercreateSharedDurableConsumer(jakarta.jms.Topic topic, String name) jakarta.jms.MessageConsumercreateSharedDurableConsumer(jakarta.jms.Topic topic, String name, String messageSelector) jakarta.jms.StreamMessagejakarta.jms.TemporaryQueuejakarta.jms.TemporaryTopicjakarta.jms.TextMessagejakarta.jms.TextMessagecreateTextMessage(String text) jakarta.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.jakarta.jms.MessageListenerGet the ResourceBean which created this XAResourceHolder.jakarta.jms.Sessionjakarta.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(jakarta.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(MessagingPooledConnection pooledConnection, boolean transacted, int acknowledgeMode)
-
-
Method Details
-
getPoolingConnectionFactory
-
getSession
public jakarta.jms.Session getSession() throws jakarta.jms.JMSException- Throws:
jakarta.jms.JMSException
-
getSession
public jakarta.jms.Session getSession(boolean forceXa) throws jakarta.jms.JMSException - Throws:
jakarta.jms.JMSException
-
toString
-
close
public void close() throws jakarta.jms.JMSExceptionDescription copied from interface:XAStatefulHolderClose the physical connection that thisXAStatefulHolderrepresents.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfacejakarta.jms.Session- Specified by:
closein interfaceXAStatefulHolder- Throws:
jakarta.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 jakarta.jms.MessageProducer createProducer(jakarta.jms.Destination destination) throws jakarta.jms.JMSException - Specified by:
createProducerin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createConsumer
public jakarta.jms.MessageConsumer createConsumer(jakarta.jms.Destination destination) throws jakarta.jms.JMSException - Specified by:
createConsumerin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createConsumer
public jakarta.jms.MessageConsumer createConsumer(jakarta.jms.Destination destination, String messageSelector) throws jakarta.jms.JMSException - Specified by:
createConsumerin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createConsumer
public jakarta.jms.MessageConsumer createConsumer(jakarta.jms.Destination destination, String messageSelector, boolean noLocal) throws jakarta.jms.JMSException - Specified by:
createConsumerin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createDurableSubscriber
public jakarta.jms.TopicSubscriber createDurableSubscriber(jakarta.jms.Topic topic, String name) throws jakarta.jms.JMSException - Specified by:
createDurableSubscriberin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createDurableSubscriber
public jakarta.jms.TopicSubscriber createDurableSubscriber(jakarta.jms.Topic topic, String name, String messageSelector, boolean noLocal) throws jakarta.jms.JMSException - Specified by:
createDurableSubscriberin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createDurableConsumer
public jakarta.jms.MessageConsumer createDurableConsumer(jakarta.jms.Topic topic, String name) throws jakarta.jms.JMSException - Specified by:
createDurableConsumerin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createDurableConsumer
public jakarta.jms.MessageConsumer createDurableConsumer(jakarta.jms.Topic topic, String name, String messageSelector, boolean noLocal) throws jakarta.jms.JMSException - Specified by:
createDurableConsumerin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
getMessageListener
public jakarta.jms.MessageListener getMessageListener() throws jakarta.jms.JMSException- Specified by:
getMessageListenerin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
setMessageListener
public void setMessageListener(jakarta.jms.MessageListener listener) throws jakarta.jms.JMSException - Specified by:
setMessageListenerin interfacejakarta.jms.Session- Throws:
jakarta.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 jakarta.jms.JMSException- Specified by:
getTransactedin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
getAcknowledgeMode
public int getAcknowledgeMode() throws jakarta.jms.JMSException- Specified by:
getAcknowledgeModein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
commit
public void commit() throws jakarta.jms.JMSException- Specified by:
commitin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
rollback
public void rollback() throws jakarta.jms.JMSException- Specified by:
rollbackin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
recover
public void recover() throws jakarta.jms.JMSException- Specified by:
recoverin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createBrowser
public jakarta.jms.QueueBrowser createBrowser(jakarta.jms.Queue queue) throws jakarta.jms.JMSException - Specified by:
createBrowserin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createBrowser
public jakarta.jms.QueueBrowser createBrowser(jakarta.jms.Queue queue, String messageSelector) throws jakarta.jms.JMSException - Specified by:
createBrowserin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createBytesMessage
public jakarta.jms.BytesMessage createBytesMessage() throws jakarta.jms.JMSException- Specified by:
createBytesMessagein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createMapMessage
public jakarta.jms.MapMessage createMapMessage() throws jakarta.jms.JMSException- Specified by:
createMapMessagein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createMessage
public jakarta.jms.Message createMessage() throws jakarta.jms.JMSException- Specified by:
createMessagein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createObjectMessage
public jakarta.jms.ObjectMessage createObjectMessage() throws jakarta.jms.JMSException- Specified by:
createObjectMessagein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createObjectMessage
public jakarta.jms.ObjectMessage createObjectMessage(Serializable serializable) throws jakarta.jms.JMSException - Specified by:
createObjectMessagein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createStreamMessage
public jakarta.jms.StreamMessage createStreamMessage() throws jakarta.jms.JMSException- Specified by:
createStreamMessagein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createTextMessage
public jakarta.jms.TextMessage createTextMessage() throws jakarta.jms.JMSException- Specified by:
createTextMessagein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createTextMessage
- Specified by:
createTextMessagein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createQueue
- Specified by:
createQueuein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createTopic
- Specified by:
createTopicin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createTemporaryQueue
public jakarta.jms.TemporaryQueue createTemporaryQueue() throws jakarta.jms.JMSException- Specified by:
createTemporaryQueuein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
createTemporaryTopic
public jakarta.jms.TemporaryTopic createTemporaryTopic() throws jakarta.jms.JMSException- Specified by:
createTemporaryTopicin interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
unsubscribe
- Specified by:
unsubscribein interfacejakarta.jms.Session- Throws:
jakarta.jms.JMSException
-
enlistResource
protected void enlistResource() throws jakarta.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:
jakarta.jms.JMSException
-