Class ActiveMQXAResourceWrapper
- java.lang.Object
-
- org.apache.activemq.artemis.service.extensions.xa.recovery.ActiveMQXAResourceWrapper
-
- All Implemented Interfaces:
javax.transaction.xa.XAResource,org.apache.activemq.artemis.api.core.client.SessionFailureListener,org.apache.activemq.artemis.core.remoting.FailureListener
public class ActiveMQXAResourceWrapper extends java.lang.Object implements javax.transaction.xa.XAResource, org.apache.activemq.artemis.api.core.client.SessionFailureListenerXAResourceWrapper. Mainly from org.jboss.server.XAResourceWrapper from the JBoss AS server module The reason why we don't use that class directly is that it assumes on failure of connection the RM_FAIL or RM_ERR is thrown, but in ActiveMQ Artemis we throw XA_RETRY since we want the recovery manager to be able to retry on failure without having to manually retry
-
-
Constructor Summary
Constructors Constructor Description ActiveMQXAResourceWrapper(XARecoveryConfig... xaRecoveryConfigs)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbeforeReconnect(org.apache.activemq.artemis.api.core.ActiveMQException me)protected javax.transaction.xa.XAExceptioncheck(javax.transaction.xa.XAException e)Check whether an XAException is fatal.voidclose()Close the connectionvoidcommit(javax.transaction.xa.Xid xid, boolean onePhase)protected javax.transaction.xa.XAResourceconnect()Connect to the server if not already done sovoidconnectionFailed(org.apache.activemq.artemis.api.core.ActiveMQException me, boolean failedOver)voidconnectionFailed(org.apache.activemq.artemis.api.core.ActiveMQException me, boolean failedOver, java.lang.String scaleDownTargetNodeID)voidend(javax.transaction.xa.Xid xid, int flags)voidforget(javax.transaction.xa.Xid xid)intgetTransactionTimeout()booleanisSameRM(javax.transaction.xa.XAResource xaRes)intprepare(javax.transaction.xa.Xid xid)javax.transaction.xa.Xid[]recover(int flag)voidrollback(javax.transaction.xa.Xid xid)booleansetTransactionTimeout(int seconds)voidstart(javax.transaction.xa.Xid xid, int flags)java.lang.StringtoString()
-
-
-
Constructor Detail
-
ActiveMQXAResourceWrapper
public ActiveMQXAResourceWrapper(XARecoveryConfig... xaRecoveryConfigs)
-
-
Method Detail
-
recover
public javax.transaction.xa.Xid[] recover(int flag) throws javax.transaction.xa.XAException- Specified by:
recoverin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
commit
public void commit(javax.transaction.xa.Xid xid, boolean onePhase) throws javax.transaction.xa.XAException- Specified by:
commitin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
rollback
public void rollback(javax.transaction.xa.Xid xid) throws javax.transaction.xa.XAException- Specified by:
rollbackin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
forget
public void forget(javax.transaction.xa.Xid xid) throws javax.transaction.xa.XAException- Specified by:
forgetin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
isSameRM
public boolean isSameRM(javax.transaction.xa.XAResource xaRes) throws javax.transaction.xa.XAException- Specified by:
isSameRMin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
prepare
public int prepare(javax.transaction.xa.Xid xid) throws javax.transaction.xa.XAException- Specified by:
preparein interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
start
public void start(javax.transaction.xa.Xid xid, int flags) throws javax.transaction.xa.XAException- Specified by:
startin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
end
public void end(javax.transaction.xa.Xid xid, int flags) throws javax.transaction.xa.XAException- Specified by:
endin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
getTransactionTimeout
public int getTransactionTimeout() throws javax.transaction.xa.XAException- Specified by:
getTransactionTimeoutin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
setTransactionTimeout
public boolean setTransactionTimeout(int seconds) throws javax.transaction.xa.XAException- Specified by:
setTransactionTimeoutin interfacejavax.transaction.xa.XAResource- Throws:
javax.transaction.xa.XAException
-
connectionFailed
public void connectionFailed(org.apache.activemq.artemis.api.core.ActiveMQException me, boolean failedOver)- Specified by:
connectionFailedin interfaceorg.apache.activemq.artemis.core.remoting.FailureListener
-
connectionFailed
public void connectionFailed(org.apache.activemq.artemis.api.core.ActiveMQException me, boolean failedOver, java.lang.String scaleDownTargetNodeID)- Specified by:
connectionFailedin interfaceorg.apache.activemq.artemis.core.remoting.FailureListener
-
beforeReconnect
public void beforeReconnect(org.apache.activemq.artemis.api.core.ActiveMQException me)
- Specified by:
beforeReconnectin interfaceorg.apache.activemq.artemis.api.core.client.SessionFailureListener
-
connect
protected javax.transaction.xa.XAResource connect() throws java.lang.ExceptionConnect to the server if not already done so- Returns:
- the connectionFactory XAResource
- Throws:
java.lang.Exception- for any problem
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
close
public void close()
Close the connection
-
check
protected javax.transaction.xa.XAException check(javax.transaction.xa.XAException e) throws javax.transaction.xa.XAExceptionCheck whether an XAException is fatal. If it is an RM problem we close the connection so the next call will reconnect.- Parameters:
e- the xa exception- Returns:
- never
- Throws:
javax.transaction.xa.XAException- always
-
-