Java Examples for javax.transaction.xa.XAResource
The following java examples will help you to understand the usage of javax.transaction.xa.XAResource. These source code samples are taken from different open source projects.
Example 1
| Project: activemq-master File: XAConnectionPoolTest.java View source code |
@Override
public Transaction getTransaction() throws SystemException {
return new Transaction() {
@Override
public void commit() throws HeuristicMixedException, HeuristicRollbackException, RollbackException, SecurityException, SystemException {
}
@Override
public boolean delistResource(XAResource xaRes, int flag) throws IllegalStateException, SystemException {
return false;
}
@Override
public boolean enlistResource(XAResource xaRes) throws IllegalStateException, RollbackException, SystemException {
return false;
}
@Override
public int getStatus() throws SystemException {
return 0;
}
@Override
public void registerSynchronization(Synchronization synch) throws IllegalStateException, RollbackException, SystemException {
syncs.add(synch);
}
@Override
public void rollback() throws IllegalStateException, SystemException {
}
@Override
public void setRollbackOnly() throws IllegalStateException, SystemException {
}
};
}Example 2
| Project: byteman-master File: RuleConstructorTestCase.java View source code |
@Test
public void basic() {
String testRule = String.format("RULE basic rule%n" + "CLASS javax.transaction.xa.XAResource%n" + "METHOD commit%n" + "AT ENTRY%n" + "IF NOT flagged(\"commitFlag\")%n" + "DO throw new javax.transaction.xa.XAResource(100)%n" + "ENDRULE%n");
String rule = RuleConstructor.createRule("basic rule").onClass("javax.transaction.xa.XAResource").inMethod("commit").atEntry().ifCondition("NOT flagged(\"commitFlag\")").doAction("throw new javax.transaction.xa.XAResource(100)").build();
Assert.assertEquals("The rule does not match the built one", testRule, rule);
}Example 3
| Project: narayana-master File: EnlistDelistEnlistImpl01.java View source code |
public void begin_begin() throws InvocationException {
boolean correct = true;
try {
XAConnection xaConnection = _xaDataSource.getXAConnection(_databaseUser, _databasePassword);
XAResource xaResource = xaConnection.getXAResource();
javax.transaction.TransactionManager tm = com.arjuna.ats.jta.TransactionManager.transactionManager();
tm.begin();
Transaction transaction = tm.getTransaction();
correct = correct && transaction.enlistResource(xaResource);
if (correct) {
try {
tm.begin();
correct = false;
} catch (NotSupportedException notSupportedException) {
}
}
tm.rollback();
} catch (Exception e) {
e.printStackTrace();
correct = false;
}
_isCorrect = _isCorrect && correct;
return;
}Example 4
| Project: glassfish-main-master File: TransactionManagerHelper.java View source code |
/**
* PreInvoke Transaction configuration for Servlet Container.
* BaseContainer.preInvokeTx() handles all this for CMT EJB.
*
* Compensate that JavaEEInstanceListener.handleBeforeEvent(
* BEFORE_SERVICE_EVENT)
* gets called before WSIT WSTX Service pipe associates a JTA txn with
* incoming thread.
*
* Precondition: assumes JTA transaction already associated with current
* thread.
*/
public void preInvokeTx(boolean checkServletInvocation) {
final ComponentInvocation inv = invocationManager.getCurrentInvocation();
if (inv != null && (!checkServletInvocation || inv.getInvocationType() == ComponentInvocation.ComponentInvocationType.SERVLET_INVOCATION)) {
try {
// Required side effect: note that
// enlistComponentResources calls
// ComponentInvocation.setTransaction(currentJTATxn).
// If this is not correctly set, managed XAResource connections
// are not auto enlisted when they are created.
transactionManager.enlistComponentResources();
} catch (java.rmi.RemoteException re) {
throw new IllegalStateException(re);
}
}
}Example 5
| Project: glassfish-master File: WorkDispatcher.java View source code |
public void run() {
debug("ENTER...");
try {
synchronized (Controls.readyLock) {
debug("WAIT...");
Controls.readyLock.wait();
if (stop) {
return;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
debug("Running...");
//try 3 times to create endpoint (in case of failure)
for (int i = 0; i < 3; i++) {
try {
Method onMessage = getOnMessageMethod();
System.out.println("isDeliveryTransacted = " + factory.isDeliveryTransacted(onMessage));
if (!factory.isDeliveryTransacted(onMessage)) {
//MessageEndpoint ep = factory.createEndpoint(null);
//DeliveryWork d = new DeliveryWork("NO_TX", ep);
//wm.doWork(d, 0, null, null);
} else {
//MessageEndpoint ep = factory.createEndpoint(null);
MessageEndpoint ep = factory.createEndpoint(new FakeXAResource());
int numOfMessages = 5;
//importing transaction
//write/commit
ExecutionContext ec = startTx();
debug("Start TX - " + ec.getXid());
DeliveryWork w = new DeliveryWork(ep, numOfMessages, "WRITE");
wm.doWork(w, 0, ec, null);
xa.commit(ec.getXid(), true);
debug("DONE WRITE TO DB");
Controls.expectedResults = numOfMessages;
notifyAndWait();
//delete/rollback
ec = startTx();
debug("Start TX - " + ec.getXid());
w = new DeliveryWork(ep, numOfMessages, "DELETE");
wm.doWork(w, 0, ec, null);
xa.rollback(ec.getXid());
debug("DONE ROLLBACK FROM DB");
Controls.expectedResults = numOfMessages;
notifyAndWait();
//delete/commit
ec = startTx();
debug("Start TX - " + ec.getXid());
w = new DeliveryWork(ep, numOfMessages, "DELETE");
wm.doWork(w, 0, ec, null);
xa.commit(ec.getXid(), true);
debug("DONE DELETE FROM DB");
Controls.expectedResults = 0;
notifyAndWait();
//write/commit
ec = startTx();
debug("Start TX - " + ec.getXid());
w = new DeliveryWork(ep, numOfMessages, "WRITE");
wm.doWork(w, 0, ec, null);
xa.commit(ec.getXid(), true);
debug("DONE WRITE TO DB");
Controls.expectedResults = numOfMessages;
notifyAndWait();
//delete/commit
ec = startTx();
debug("Start TX - " + ec.getXid());
w = new DeliveryWork(ep, numOfMessages, "DELETE");
wm.doWork(w, 0, ec, null);
xa.commit(ec.getXid(), true);
debug("DONE DELETE FROM DB");
Controls.expectedResults = 0;
notifyAndWait();
//write multiple times using doWork/commit
ec = startTx();
debug("Start TX - " + ec.getXid());
w = new DeliveryWork(ep, 1, "WRITE", true);
wm.doWork(w, 0, ec, null);
wm.doWork(w, 0, ec, null);
wm.doWork(w, 0, ec, null);
xa.commit(ec.getXid(), true);
debug("DONE WRITE TO DB");
Controls.expectedResults = 3;
notifyAndWait();
//write multiple times using doWork/rollback
ec = startTx();
debug("Start TX - " + ec.getXid());
w = new DeliveryWork(ep, 1, "WRITE", true);
wm.doWork(w, 0, ec, null);
wm.doWork(w, 0, ec, null);
wm.doWork(w, 0, ec, null);
xa.rollback(ec.getXid());
debug("DONE WRITE TO DB");
Controls.expectedResults = 3;
notifyAndWait();
ec = startTx();
debug("Start TX - " + ec.getXid());
//write multiple times using doWork/rollback
w = new DeliveryWork(ep, 2, "WRITE", true);
wm.doWork(w, 0, ec, null);
wm.doWork(w, 0, ec, null);
wm.doWork(w, 0, ec, null);
if (XAResource.XA_OK == xa.prepare(ec.getXid())) {
xa.commit(ec.getXid(), false);
debug("XA PREPARE/COMMIT. DONE WRITE TO DB ");
Controls.expectedResults = 9;
notifyAndWait();
} else {
xa.rollback(ec.getXid());
debug("XA PREPARE UNSUCCESSFUL. DONE ROLLBACK");
Controls.expectedResults = 3;
notifyAndWait();
}
//delete all.
ec = startTx();
debug("Start TX - " + ec.getXid());
w = new DeliveryWork(ep, 1, "DELETE_ALL");
wm.doWork(w, 0, ec, null);
xa.commit(ec.getXid(), true);
debug("DONE DELETE ALL FROM DB");
Controls.expectedResults = 0;
notifyAndWait();
done();
}
break;
} catch (UnavailableException ex) {
System.out.println("WorkDispatcher[" + id + "] Endpoint Unavailable");
try {
Thread.currentThread().sleep(3 * 1000);
} catch (Exception e) {
e.printStackTrace();
}
} catch (XAException ex) {
ex.printStackTrace();
System.out.println("ERROR CODE = " + ex.errorCode);
done();
break;
} catch (Exception ex) {
ex.printStackTrace();
done();
break;
}
}
debug("LEAVE...");
}Example 6
| Project: Payara-master File: TransactionManagerHelper.java View source code |
/**
* PreInvoke Transaction configuration for Servlet Container.
* BaseContainer.preInvokeTx() handles all this for CMT EJB.
*
* Compensate that JavaEEInstanceListener.handleBeforeEvent(
* BEFORE_SERVICE_EVENT)
* gets called before WSIT WSTX Service pipe associates a JTA txn with
* incoming thread.
*
* Precondition: assumes JTA transaction already associated with current
* thread.
*/
public void preInvokeTx(boolean checkServletInvocation) {
final ComponentInvocation inv = invocationManager.getCurrentInvocation();
if (inv != null && (!checkServletInvocation || inv.getInvocationType() == ComponentInvocation.ComponentInvocationType.SERVLET_INVOCATION)) {
try {
// Required side effect: note that
// enlistComponentResources calls
// ComponentInvocation.setTransaction(currentJTATxn).
// If this is not correctly set, managed XAResource connections
// are not auto enlisted when they are created.
transactionManager.enlistComponentResources();
} catch (java.rmi.RemoteException re) {
throw new IllegalStateException(re);
}
}
}Example 7
| Project: geronimo-master File: TransactionManagerImplTest.java View source code |
public void testOneResourceCommit() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
Transaction tx = tm.getTransaction();
tx.enlistResource(r1_1);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tx.commit();
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertTrue(r1_1.isCommitted());
assertTrue(!r1_1.isPrepared());
assertTrue(!r1_1.isRolledback());
}Example 8
| Project: MULE-master File: XaTransaction.java View source code |
/**
* @param key Must be the provider of the resource object. i.e. for JDBC it's the XADataSource, for JMS is the
* XAConnectionFactory. It can be a wrapper in which case should be a
* {@link org.mule.runtime.core.util.xa.XaResourceFactoryHolder} to be able to determine correctly if there's already a
* resource for that {@link javax.transaction.xa.XAResource} provider.
* @param resource the resource object. It must be an {@link javax.transaction.xa.XAResource} or a
* {@link MuleXaObject}
* @throws TransactionException
*/
public synchronized void bindResource(Object key, Object resource) throws TransactionException {
ResourceKey normalizedKey = getResourceEntry(key, resource);
if (resources.containsKey(key)) {
throw new IllegalTransactionStateException(CoreMessages.transactionResourceAlreadyListedForKey(key));
}
resources.put(normalizedKey, resource);
if (key == null) {
logger.error("Key for bound resource " + resource + " is null");
}
if (resource instanceof MuleXaObject) {
MuleXaObject xaObject = (MuleXaObject) resource;
xaObject.enlist();
} else if (resource instanceof XAResource) {
enlistResource((XAResource) resource);
} else {
logger.error("Bound resource " + resource + " is neither a MuleXaObject nor XAResource");
}
}Example 9
| Project: activemq-artemis-master File: NIOMultiThreadCompactorStressTest.java View source code |
private void checkEmptyXID(final Xid xid) throws Exception {
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(true, false, false);
Xid[] xids = session.recover(XAResource.TMSTARTRSCAN);
Assert.assertEquals(1, xids.length);
Assert.assertEquals(xid, xids[0]);
session.rollback(xid);
session.close();
sf.close();
}Example 10
| Project: btm-master File: DelistmentTest.java View source code |
public void testDelistErrorOnCommit() throws Exception {
btm.begin();
Connection connection1 = poolingDataSource1.getConnection();
PooledConnectionProxy handle1 = (PooledConnectionProxy) connection1;
XAConnection xaConnection1 = (XAConnection) AbstractMockJdbcTest.getWrappedXAConnectionOf(handle1.getPooledConnection());
MockXAResource xaResource1 = (MockXAResource) xaConnection1.getXAResource();
// triggers enlistment
connection1.createStatement();
xaResource1.setEndException(new BitronixXAException("screw delistment", XAException.XAER_RMERR));
xaResource1.setRollbackException(new BitronixXAException("delistment was screwed, cannot rollback", XAException.XAER_RMERR));
Connection connection2 = poolingDataSource2.getConnection();
PooledConnectionProxy handle2 = (PooledConnectionProxy) connection2;
XAConnection xaConnection2 = (XAConnection) AbstractMockJdbcTest.getWrappedXAConnectionOf(handle2.getPooledConnection());
MockXAResource xaResource2 = (MockXAResource) xaConnection2.getXAResource();
// triggers enlistment
connection2.createStatement();
try {
btm.commit();
fail("expected RollbackException");
} catch (RollbackException ex) {
assertEquals("delistment error caused transaction rollback" + System.getProperty("line.separator") + " resource(s) [pds1] could not be delisted", ex.getMessage());
}
// check flow
List orderedEvents = EventRecorder.getOrderedEvents();
log.info(EventRecorder.dumpToString());
assertEquals(9, orderedEvents.size());
int i = 0;
assertEquals(Status.STATUS_ACTIVE, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertEquals(XAResource.TMNOFLAGS, ((XAResourceStartEvent) orderedEvents.get(i++)).getFlag());
assertEquals(XAResource.TMNOFLAGS, ((XAResourceStartEvent) orderedEvents.get(i++)).getFlag());
assertEquals(XAResource.TMSUCCESS, ((XAResourceEndEvent) orderedEvents.get(i++)).getFlag());
assertEquals(Status.STATUS_MARKED_ROLLBACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertEquals(XAResource.TMSUCCESS, ((XAResourceEndEvent) orderedEvents.get(i++)).getFlag());
assertEquals(Status.STATUS_ROLLING_BACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertTrue(((XAResourceRollbackEvent) orderedEvents.get(i++)).getSource() == xaResource2);
assertEquals(Status.STATUS_ROLLEDBACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
}Example 11
| Project: clearpool-master File: TransactionImpl.java View source code |
/**
* Try to prepared
*/
private boolean tryPrepared() {
status = Status.STATUS_PREPARING;
boolean preparedSuccess = true;
for (ResourceCarry carry : resList) {
try {
int result = carry.xaRes.prepare(carry.xid);
preparedSuccess &= result == XAResource.XA_OK;
} catch (XAException e) {
LOGGER.error("can't prepare XA: (error code = " + e.errorCode + "): ", e);
preparedSuccess = false;
}
}
status = Status.STATUS_PREPARED;
return preparedSuccess;
}Example 12
| Project: genericconnector-master File: AbstractTransactionAssistanceXAResource.java View source code |
@Override
public int prepare(Xid xid) throws XAException {
log.log(Level.INFO, "PREPARE " + XidImpl.asString(xid));
if (!getUnderlyingConnection().wasExecuteSuccessful()) {
//vote to rollback :o(
throw new XAException(XAException.XA_RBROLLBACK);
} else {
//a successful execute is a guarantee that we can commit => therefore vote "OK to commit"
return XAResource.XA_OK;
}
}Example 13
| Project: infinispan-master File: RehashTestBase.java View source code |
@Override
public void run() {
try {
// start a transaction on c1.
TransactionManager t1 = TestingUtil.getTransactionManager(c1);
t1.begin();
c1.put(keys.get(0), "transactionally_replaced");
Transaction tx = t1.getTransaction();
tx.enlistResource(new XAResourceAdapter() {
public int prepare(Xid id) {
// this would be called *after* the cache prepares.
try {
log.debug("Unblocking commit");
l.await();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
return XAResource.XA_OK;
}
});
t1.commit();
} catch (Exception e) {
log.error("Error committing transaction", e);
rollback.set(true);
throw new RuntimeException(e);
}
}Example 14
| Project: nuxeo-core-master File: JDBCMapperConnector.java View source code |
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if (mapper.isConnected()) {
return doInvoke(method, args);
}
// should not operate with tx mamagement (managed connection)
String name = method.getName();
if ("start".equals(name)) {
return XAResource.XA_OK;
}
if ("end".equals(name)) {
return null;
}
if ("prepare".equals(name)) {
return XAResource.XA_OK;
}
if ("commit".equals(name)) {
return null;
}
if ("rollback".equals(name)) {
return null;
}
if ("close".equals(name)) {
return null;
}
if ("clearCache".equals(name)) {
return doInvoke(method, args);
}
if ("close".equals(name)) {
return null;
}
mapper.connect();
try {
return doInvoke(method, args);
} finally {
if (mapper.isConnected()) {
mapper.disconnect();
}
}
}Example 15
| Project: sef4j-master File: SefXAResourceProxy.java View source code |
public boolean isSameRM(XAResource xares) throws XAException { StackPopper toPop = LocalCallStack.meth(CNAME, "isSameRM").withParam("xares", xares).push(); try { XAResource xaresUnwrapped = (xares instanceof SefXAResourceProxy) ? ((SefXAResourceProxy) xares).to : xares; boolean res = to.isSameRM(xaresUnwrapped); return toPop.returnValue(res); } catch (XAException ex) { throw toPop.returnException(ex); } finally { toPop.close(); } }
Example 16
| Project: spring-modules-jcr-master File: LocalTransactionManager.java View source code |
protected void doBegin(Object transaction, TransactionDefinition transactionDefinition) throws TransactionException {
if (transactionDefinition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT) {
throw new InvalidIsolationLevelException("JCR does not support an isolation level concept");
}
Session session = null;
try {
JcrTransactionObject txObject = (JcrTransactionObject) transaction;
if (txObject.getSessionHolder() == null) {
// get the new session
Session newSession = sessionFactory.getSession();
// make sure we have an XAResource
if (!(newSession instanceof XAResource))
throw new IllegalArgumentException("transactions are not supported by your Jcr Repository");
if (logger.isDebugEnabled()) {
logger.debug("Opened new session [" + newSession + "] for JCR transaction");
}
txObject.setSessionHolder(new UserTxSessionHolder(newSession), true);
}
UserTxSessionHolder sessionHolder = txObject.getSessionHolder();
sessionHolder.setSynchronizedWithTransaction(true);
session = sessionHolder.getSession();
/*
* We have no notion of flushing inside a JCR session
*
if (transactionDefinition.isReadOnly() && txObject.isNewSessionHolder()) {
sessionHolder.setReadOnly(true);
}
if (!transactionDefinition.isReadOnly() && !txObject.isNewSessionHolder()) {
if (sessionHolder.isReadOnly()) {
sessionHolder.setReadOnly(false);
}
}
*/
// start the transaction
sessionHolder.getTransaction().begin();
// Register transaction timeout.
if (transactionDefinition.getTimeout() != TransactionDefinition.TIMEOUT_DEFAULT) {
txObject.getSessionHolder().setTimeoutInSeconds(transactionDefinition.getTimeout());
}
// Bind the session holder to the thread.
if (txObject.isNewSessionHolder()) {
TransactionSynchronizationManager.bindResource(getSessionFactory(), sessionHolder);
}
} catch (Exception ex) {
SessionFactoryUtils.releaseSession(session, getSessionFactory());
throw new CannotCreateTransactionException("Could not open JCR session for transaction", ex);
}
}Example 17
| Project: spring-modules-master File: JackRabbitUserTransaction.java View source code |
/**
* @see javax.transaction.UserTransaction#begin
*/
public void begin() throws NotSupportedException, SystemException {
if (status != Status.STATUS_NO_TRANSACTION) {
throw new IllegalStateException("Transaction already active");
}
try {
xid = new XidImpl(counter++);
xares.start(xid, XAResource.TMNOFLAGS);
status = Status.STATUS_ACTIVE;
} catch (XAException e) {
throw new SystemException("Unable to begin transaction: " + "XA_ERR=" + e.errorCode);
}
}Example 18
| Project: teiid-master File: TestXAConnection.java View source code |
@Test
public void testConnectionClose() throws Exception {
final ConnectionImpl mmConn = TestConnection.getMMConnection();
XAConnectionImpl xaConn = new XAConnectionImpl(mmConn);
Connection conn = xaConn.getConnection();
StatementImpl stmt = (StatementImpl) conn.createStatement();
conn.setAutoCommit(false);
conn.close();
ServerConnection sc = xaConn.getConnectionImpl().getServerConnection();
Mockito.verify(sc, VerificationModeFactory.times(1)).cleanUp();
assertTrue(stmt.isClosed());
assertTrue(conn.getAutoCommit());
conn = xaConn.getConnection();
stmt = (StatementImpl) conn.createStatement();
XAResource resource = xaConn.getXAResource();
resource.start(new XidImpl(1, new byte[0], new byte[0]), XAResource.TMNOFLAGS);
conn.close();
assertTrue(stmt.isClosed());
assertTrue(conn.getAutoCommit());
}Example 19
| Project: transactions-essentials-master File: XaResourceRecoveryManager.java View source code |
public void recover(XAResource xaResource) {
List<XID> xidsToRecover = retrievePreparedXidsFromXaResource(xaResource);
Collection<XID> xidsToCommit;
try {
xidsToCommit = retrieveExpiredCommittingXidsFromLog();
for (XID xid : xidsToRecover) {
if (xidsToCommit.contains(xid)) {
replayCommit(xid, xaResource);
} else {
attemptPresumedAbort(xid, xaResource);
}
}
} catch (LogException couldNotRetrieveCommittingXids) {
LOGGER.logWarning("Transient error while recovering - will retry later...", couldNotRetrieveCommittingXids);
}
}Example 20
| Project: bitronix-hp-master File: DelistmentTest.java View source code |
public void testDelistErrorOnCommit() throws Exception {
btm.begin();
Connection connection1 = poolingDataSource1.getConnection();
PooledConnectionProxy handle1 = (PooledConnectionProxy) connection1;
XAConnection xaConnection1 = (XAConnection) AbstractMockJdbcTest.getWrappedXAConnectionOf(handle1.getPooledConnection());
MockXAResource xaResource1 = (MockXAResource) xaConnection1.getXAResource();
// triggers enlistment
connection1.createStatement();
xaResource1.setEndException(new BitronixXAException("screw delistment", XAException.XAER_RMERR));
xaResource1.setRollbackException(new BitronixXAException("delistment was screwed, cannot rollback", XAException.XAER_RMERR));
Connection connection2 = poolingDataSource2.getConnection();
PooledConnectionProxy handle2 = (PooledConnectionProxy) connection2;
XAConnection xaConnection2 = (XAConnection) AbstractMockJdbcTest.getWrappedXAConnectionOf(handle2.getPooledConnection());
MockXAResource xaResource2 = (MockXAResource) xaConnection2.getXAResource();
// triggers enlistment
connection2.createStatement();
try {
btm.commit();
fail("expected RollbackException");
} catch (RollbackException ex) {
assertEquals("delistment error caused transaction rollback" + System.getProperty("line.separator") + " resource(s) [pds1] could not be delisted", ex.getMessage());
}
// check flow
List orderedEvents = EventRecorder.getOrderedEvents();
log.info(EventRecorder.dumpToString());
assertEquals(9, orderedEvents.size());
int i = 0;
assertEquals(Status.STATUS_ACTIVE, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertEquals(XAResource.TMNOFLAGS, ((XAResourceStartEvent) orderedEvents.get(i++)).getFlag());
assertEquals(XAResource.TMNOFLAGS, ((XAResourceStartEvent) orderedEvents.get(i++)).getFlag());
assertEquals(XAResource.TMSUCCESS, ((XAResourceEndEvent) orderedEvents.get(i++)).getFlag());
assertEquals(Status.STATUS_MARKED_ROLLBACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertEquals(XAResource.TMSUCCESS, ((XAResourceEndEvent) orderedEvents.get(i++)).getFlag());
assertEquals(Status.STATUS_ROLLING_BACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertTrue(((XAResourceRollbackEvent) orderedEvents.get(i++)).getSource() == xaResource2);
assertEquals(Status.STATUS_ROLLEDBACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
}Example 21
| Project: btm-fork-master File: DelistmentTest.java View source code |
public void testDelistErrorOnCommit() throws Exception {
btm.begin();
Connection connection1 = poolingDataSource1.getConnection();
JdbcConnectionHandle handle1 = (JdbcConnectionHandle) Proxy.getInvocationHandler(connection1);
XAConnection xaConnection1 = (XAConnection) AbstractMockJdbcTest.getWrappedXAConnectionOf(handle1.getPooledConnection());
MockXAResource xaResource1 = (MockXAResource) xaConnection1.getXAResource();
// triggers enlistment
connection1.createStatement();
xaResource1.setEndException(new BitronixXAException("screw delistment", XAException.XAER_RMERR));
xaResource1.setRollbackException(new BitronixXAException("delistment was screwed, cannot rollback", XAException.XAER_RMERR));
Connection connection2 = poolingDataSource2.getConnection();
JdbcConnectionHandle handle2 = (JdbcConnectionHandle) Proxy.getInvocationHandler(connection2);
XAConnection xaConnection2 = (XAConnection) AbstractMockJdbcTest.getWrappedXAConnectionOf(handle2.getPooledConnection());
MockXAResource xaResource2 = (MockXAResource) xaConnection2.getXAResource();
// triggers enlistment
connection2.createStatement();
try {
btm.commit();
fail("expected RollbackException");
} catch (RollbackException ex) {
assertEquals("delistment error caused transaction rollback" + System.getProperty("line.separator") + " resource(s) [pds1] could not be delisted", ex.getMessage());
}
// check flow
List orderedEvents = EventRecorder.getOrderedEvents();
log.info(EventRecorder.dumpToString());
assertEquals(9, orderedEvents.size());
int i = 0;
assertEquals(Status.STATUS_ACTIVE, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertEquals(XAResource.TMNOFLAGS, ((XAResourceStartEvent) orderedEvents.get(i++)).getFlag());
assertEquals(XAResource.TMNOFLAGS, ((XAResourceStartEvent) orderedEvents.get(i++)).getFlag());
assertEquals(XAResource.TMSUCCESS, ((XAResourceEndEvent) orderedEvents.get(i++)).getFlag());
assertEquals(Status.STATUS_MARKED_ROLLBACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertEquals(XAResource.TMSUCCESS, ((XAResourceEndEvent) orderedEvents.get(i++)).getFlag());
assertEquals(Status.STATUS_ROLLING_BACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
assertTrue(((XAResourceRollbackEvent) orderedEvents.get(i++)).getSource() == xaResource2);
assertEquals(Status.STATUS_ROLLEDBACK, ((JournalLogEvent) orderedEvents.get(i++)).getStatus());
}Example 22
| Project: droolsjbpm-master File: LrcXAResource.java View source code |
public void start(Xid xid, int flag) throws XAException {
if (flag != XAResource.TMNOFLAGS && flag != XAResource.TMJOIN)
throw new BitronixXAException("unsupported start flag " + Decoder.decodeXAResourceFlag(flag), XAException.XAER_RMERR);
if (xid == null)
throw new BitronixXAException("XID cannot be null", XAException.XAER_INVAL);
if (state == NO_TX) {
if (this.xid != null)
throw new BitronixXAException("resource already started on XID " + this.xid, XAException.XAER_PROTO);
else {
if (flag == XAResource.TMJOIN)
throw new BitronixXAException("resource not yet started", XAException.XAER_PROTO);
else {
if (log.isDebugEnabled())
log.debug("OK to start, old state=" + xlatedState() + ", XID=" + xid + ", flag=" + Decoder.decodeXAResourceFlag(flag));
this.xid = xid;
}
}
} else if (state == STARTED) {
throw new BitronixXAException("resource already started on XID " + this.xid, XAException.XAER_PROTO);
} else if (state == ENDED) {
if (flag == XAResource.TMNOFLAGS)
throw new BitronixXAException("resource already registered XID " + this.xid, XAException.XAER_DUPID);
else {
if (xid.equals(this.xid)) {
if (log.isDebugEnabled())
log.debug("OK to join, old state=" + xlatedState() + ", XID=" + xid + ", flag=" + Decoder.decodeXAResourceFlag(flag));
} else
throw new BitronixXAException("resource already started on XID " + this.xid + " - cannot start it on more than one XID at a time", XAException.XAER_RMERR);
}
} else if (state == PREPARED) {
throw new BitronixXAException("resource already prepared on XID " + this.xid, XAException.XAER_PROTO);
}
this.state = STARTED;
}Example 23
| Project: zdal-master File: TxConnectionManager.java View source code |
public ConnectionListener createConnectionListener(ManagedConnection mc, Object context) throws ResourceException {
XAResource xaResource = null;
if (localTransactions) {
xaResource = new LocalXAResource(log);
// if (log.isDebugEnabled() && xaResourceTimeout != 0) {
// log.debug("XAResource transaction timeout cannot be set for local transactions: "
// + getName());
// }
} else {
throw new UnsupportedOperationException("Support local transactions only");
// xaResource = JcaXAResourceWrapperFactory.getResourceWrapper(mc.getXAResource(), isSameRMOverrideValue);
//
// if (xaResourceTimeout != 0)
// {
// try
// {
// if (xaResource.setTransactionTimeout(xaResourceTimeout) == false)
// log.debug("XAResource does not support transaction timeout configuration: " + getName());
// }
// catch (XAException e)
// {
// throw new JBossResourceException("Unable to set XAResource transaction timeout: " + getName(), e);
// }
// }
}
ConnectionListener cli = new TxConnectionEventListener(mc, poolingStrategy, context, log, xaResource);
mc.addConnectionEventListener(cli);
return cli;
}Example 24
| Project: cloudtm-data-platform-master File: RehashTestBase.java View source code |
@Override
public void run() {
try {
// start a transaction on c1.
TransactionManager t1 = TestingUtil.getTransactionManager(c1);
t1.begin();
c1.put(keys.get(0), "transactionally_replaced");
Transaction tx = t1.getTransaction();
tx.enlistResource(new XAResourceAdapter() {
public int prepare(Xid id) {
// this would be called *after* the cache prepares.
try {
l.await();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
return XAResource.XA_OK;
}
});
t1.commit();
} catch (Exception e) {
log.error("Error committing transaction", e);
rollback.set(true);
throw new RuntimeException(e);
}
}Example 25
| Project: ehcache3-master File: EhcacheXAResource.java View source code |
@Override
public Xid[] recover(int flags) throws XAException {
if (flags != XAResource.TMNOFLAGS && flags != XAResource.TMSTARTRSCAN && flags != XAResource.TMENDRSCAN && flags != (XAResource.TMSTARTRSCAN | XAResource.TMENDRSCAN)) {
throw new EhcacheXAException("Recover flags not supported : " + xaResourceFlagsToString(flags), XAException.XAER_INVAL);
}
if ((flags & XAResource.TMSTARTRSCAN) == XAResource.TMSTARTRSCAN) {
List<Xid> xids = new ArrayList<Xid>();
Set<TransactionId> transactionIds = journal.recover().keySet();
for (TransactionId transactionId : transactionIds) {
// filter-out in-flight tx
if (!transactionContextFactory.contains(transactionId)) {
xids.add(transactionId.getSerializableXid());
}
}
return xids.toArray(new Xid[xids.size()]);
}
return new Xid[0];
}Example 26
| Project: haze-master File: ClientXATest.java View source code |
@Test
public void testIsSame() throws Exception {
HazelcastInstance instance1 = Hazelcast.newHazelcastInstance();
HazelcastInstance instance2 = Hazelcast.newHazelcastInstance();
XAResource resource1 = instance1.getXAResource();
XAResource resource2 = instance2.getXAResource();
HazelcastInstance client = HazelcastClient.newHazelcastClient();
XAResource clientResource = client.getXAResource();
assertTrue(clientResource.isSameRM(resource1));
assertTrue(clientResource.isSameRM(resource2));
}Example 27
| Project: hazelcast-code-samples-master File: XATransaction.java View source code |
public static void main(String[] args) throws Exception {
cleanAtomikosLogs();
HazelcastInstance instance = Hazelcast.newHazelcastInstance();
HazelcastXAResource xaResource = instance.getXAResource();
UserTransactionManager tm = new UserTransactionManager();
tm.begin();
Transaction transaction = tm.getTransaction();
transaction.enlistResource(xaResource);
TransactionContext context = xaResource.getTransactionContext();
TransactionalMap<Object, Object> map = context.getMap("map");
map.put("key", "val");
transaction.delistResource(xaResource, XAResource.TMSUCCESS);
tm.commit();
IMap<Object, Object> m = instance.getMap("map");
Object val = m.get("key");
System.out.println("value: " + val);
cleanAtomikosLogs();
Hazelcast.shutdownAll();
}Example 28
| Project: hazelcast-master File: ClientXATest.java View source code |
@Test
public void testIsSame() throws Exception {
HazelcastInstance instance1 = Hazelcast.newHazelcastInstance();
HazelcastInstance instance2 = Hazelcast.newHazelcastInstance();
XAResource resource1 = instance1.getXAResource();
XAResource resource2 = instance2.getXAResource();
HazelcastInstance client = HazelcastClient.newHazelcastClient();
XAResource clientResource = client.getXAResource();
assertTrue(clientResource.isSameRM(resource1));
assertTrue(clientResource.isSameRM(resource2));
}Example 29
| Project: jackrabbit-master File: UserTransactionImpl.java View source code |
/**
* @see javax.transaction.UserTransaction#begin
*/
public void begin() throws NotSupportedException, SystemException {
if (status != Status.STATUS_NO_TRANSACTION) {
throw new IllegalStateException("Transaction already active");
}
try {
for (Iterator it = xaResources.keySet().iterator(); it.hasNext(); ) {
XAResource resource = (XAResource) it.next();
XidImpl xid = (XidImpl) xaResources.get(resource);
resource.start(xid, XAResource.TMNOFLAGS);
}
status = Status.STATUS_ACTIVE;
} catch (XAException e) {
throw new SystemException("Unable to begin transaction: " + "XA_ERR=" + e.errorCode);
}
}Example 30
| Project: JBossAS51-master File: XAResourceUnitTestCase.java View source code |
public void testXAResourceSuspendWorkCommit() throws Exception {
InitialContext context = getInitialContext();
XATopicConnectionFactory factory = (XATopicConnectionFactory) context.lookup(XA_TOPIC_FACTORY);
Topic topic = (Topic) context.lookup(TEST_TOPIC);
XATopicConnection connection = factory.createXATopicConnection();
try {
// Set up
XATopicSession xaSession = connection.createXATopicSession();
TopicSession session = xaSession.getTopicSession();
TopicPublisher publisher = session.createPublisher(topic);
Message message = session.createTextMessage();
// Add the xa resource to xid1
MyXid xid1 = new MyXid();
XAResource resource = xaSession.getXAResource();
resource.start(xid1, XAResource.TMNOFLAGS);
// Do some work
publisher.publish(message);
// Suspend the transaction
resource.end(xid1, XAResource.TMSUSPEND);
// Add the xa resource to xid2
MyXid xid2 = new MyXid();
resource.start(xid2, XAResource.TMNOFLAGS);
// Do some work in the new transaction
publisher.publish(message);
// Commit the first transaction and end the branch
resource.end(xid1, XAResource.TMSUCCESS);
resource.commit(xid1, true);
// Do some more work in the new transaction
publisher.publish(message);
// Commit the second transaction and end the branch
resource.end(xid2, XAResource.TMSUCCESS);
resource.commit(xid2, true);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
connection.close();
}
}Example 31
| Project: JBossAS_5_1_EDG-master File: XAResourceUnitTestCase.java View source code |
public void testXAResourceSuspendWorkCommit() throws Exception {
InitialContext context = getInitialContext();
XATopicConnectionFactory factory = (XATopicConnectionFactory) context.lookup(XA_TOPIC_FACTORY);
Topic topic = (Topic) context.lookup(TEST_TOPIC);
XATopicConnection connection = factory.createXATopicConnection();
try {
// Set up
XATopicSession xaSession = connection.createXATopicSession();
TopicSession session = xaSession.getTopicSession();
TopicPublisher publisher = session.createPublisher(topic);
Message message = session.createTextMessage();
// Add the xa resource to xid1
MyXid xid1 = new MyXid();
XAResource resource = xaSession.getXAResource();
resource.start(xid1, XAResource.TMNOFLAGS);
// Do some work
publisher.publish(message);
// Suspend the transaction
resource.end(xid1, XAResource.TMSUSPEND);
// Add the xa resource to xid2
MyXid xid2 = new MyXid();
resource.start(xid2, XAResource.TMNOFLAGS);
// Do some work in the new transaction
publisher.publish(message);
// Commit the first transaction and end the branch
resource.end(xid1, XAResource.TMSUCCESS);
resource.commit(xid1, true);
// Do some more work in the new transaction
publisher.publish(message);
// Commit the second transaction and end the branch
resource.end(xid2, XAResource.TMSUCCESS);
resource.commit(xid2, true);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
connection.close();
}
}Example 32
| Project: jcr-springextension-master File: JackRabbitUserTransaction.java View source code |
/**
* @see javax.transaction.UserTransaction#begin
*/
public void begin() throws NotSupportedException, SystemException {
if (status != Status.STATUS_NO_TRANSACTION) {
throw new IllegalStateException("Transaction already active");
}
try {
xid = new XidImpl(counter++);
xares.start(xid, XAResource.TMNOFLAGS);
status = Status.STATUS_ACTIVE;
} catch (XAException e) {
final SystemException systemException = new SystemException("Unable to commit transaction: " + "XA_ERR=" + e.errorCode);
systemException.initCause(e);
throw systemException;
}
}Example 33
| Project: Metamorphosis-master File: TransactionProcessorUnitTest.java View source code |
@Test
public void testHandlePrepare() throws Exception {
final String sessionId = "test";
final LocalTransactionId transactionId = new LocalTransactionId(sessionId, 1);
final TransactionInfo info = new TransactionInfo(transactionId, sessionId, TransactionType.PREPARE);
final TransactionCommand tc = new TransactionCommand(info, 1);
EasyMock.expect(this.commandProcessor.prepareTransaction(new SessionContextImpl(sessionId, this.conn), transactionId)).andReturn(XAResource.XA_OK);
this.conn.response(new BooleanCommand(HttpStatus.Success, String.valueOf(XAResource.XA_OK), 1));
this.mockSessionContext(sessionId, sessionId);
this.replay();
this.transactionProcessor.handleRequest(tc, this.conn);
}Example 34
| Project: pentaho-platform-master File: PentahoTransactionManagerTest.java View source code |
@Test
public void getTransactionDefinition() throws Exception {
PentahoTransactionManager transactionManager = new PentahoTransactionManager();
SessionFactory sessionFactory = mock(SessionFactory.class);
XASession xaSession = mock(XASession.class);
when(xaSession.getXAResource()).thenReturn(mock(XAResource.class));
transactionManager.setSessionFactory(sessionFactory);
TransactionDefinition transactionDefinition = mock(TransactionDefinition.class);
when(transactionDefinition.getIsolationLevel()).thenReturn(-1);
// Main assertion. While doBegin is being called, the transactionDefinition can be reached.
AtomicBoolean wasAvailable = new AtomicBoolean(false);
when(sessionFactory.getSession()).then( invocation -> {
assertEquals(transactionDefinition, transactionManager.getTransactionDefinition());
wasAvailable.set(true);
return xaSession;
});
transactionManager.getTransaction(transactionDefinition);
assertTrue(wasAvailable.get());
// after life of doBegin call the definition is not available
assertNull(transactionManager.getTransactionDefinition());
}Example 35
| Project: wunderboss-master File: JMSXAContext.java View source code |
@Override
public boolean enlist() throws Exception {
if (TransactionUtil.tm.getTransaction() == null) {
return super.isXAEnabled();
} else if (!WunderBoss.inContainer() || isRemote()) {
XAResource resource = ((XASession) jmsSession()).getXAResource();
return TransactionUtil.tm.getTransaction().enlistResource(resource);
} else {
return true;
}
}Example 36
| Project: akubra-master File: ServerTransactionListener.java View source code |
public boolean delistResource(XAResource xaRes, int flags) throws IllegalStateException, SystemException {
ServerXAResource xa = xas.get(xaRes);
if (xa == null)
return false;
boolean ret;
try {
ret = executeOnClient(new DelistXAResource(xa, flags));
} catch (ExecutionException e) {
Throwable cause = e.getCause();
if (cause instanceof SystemException)
throw (SystemException) cause;
if (cause instanceof RuntimeException)
throw (RuntimeException) cause;
throw new RuntimeException("Error reported by server", cause);
}
if (ret)
xas.remove(xaRes);
return ret;
}Example 37
| Project: aries-master File: TransactionControlImpl.java View source code |
@Override
public NamedXAResource getNamedXAResource() throws SystemException {
try {
XAResource xaResource = resource.getXAResource();
if (xaResource == null) {
throw new IllegalStateException("The recoverable resource " + resource.getId() + " is currently unavailable");
}
return new NamedXAResourceImpl(resource.getId(), xaResource, transactionManager, false);
} catch (Exception e) {
throw new SystemException("Unable to get recoverable resource " + resource.getId() + ": " + e.getMessage());
}
}Example 38
| Project: camel-trade-master File: DumpTransaction.java View source code |
/**
* Logs current transaction data
* @param exchange An optional exchange
*/
public static void dumpTx(Exchange exchange) {
StringBuilder b = new StringBuilder("\nTransaction Dump:");
if (exchange != null) {
b.append("\n\tExchange ID:").append(exchange.getExchangeId());
if (exchange.getFromRouteId() != null)
b.append("\n\tFrom Route:").append(exchange.getFromRouteId());
}
b.append("\n\tThread:").append(Thread.currentThread().toString());
b.append("\n\tTX Status:").append(TransactionHelper.getTransactionState());
b.append("\n\tTX UID:").append(TransactionHelper.getTransactionUID());
b.append("\n\tXA Resources:");
for (XAResource xar : TransactionHelper.getTransactionResources().keySet()) {
b.append("\n\t\t[").append(xar.getClass().getName()).append("]:").append(xar);
}
b.append("\n===================");
log.info(b);
}Example 39
| Project: graphdb-traversal-context-master File: PersistenceManager.java View source code |
void delistResourcesForTransaction() throws NotInTransactionException {
Transaction tx = this.getCurrentTransaction();
if (tx == null) {
throw new NotInTransactionException();
}
ResourceConnection con = txConnectionMap.get(tx);
if (con != null) {
try {
tx.delistResource(con.getXAResource(), XAResource.TMSUCCESS);
} catch (SystemException e) {
throw new TransactionFailureException("Failed to delist resource '" + con + "' from current transaction.", e);
}
}
}Example 40
| Project: GraphDHT-master File: PersistenceManager.java View source code |
void delistResourcesForTransaction() throws NotInTransactionException {
Transaction tx = this.getCurrentTransaction();
ResourceConnection con = txConnectionMap.get(tx);
if (con != null) {
try {
tx.delistResource(con.getXAResource(), XAResource.TMSUCCESS);
} catch (SystemException e) {
throw new TransactionFailureException("Failed to delist resource '" + con + "' from current transaction.", e);
}
}
}Example 41
| Project: h2-bitmap-master File: TestDataSource.java View source code |
private void testXAConnection(boolean userInDataSource) throws Exception {
deleteDb("dataSource");
JdbcDataSource ds = new JdbcDataSource();
String url = getURL("dataSource", true);
String user = getUser();
ds.setURL(url);
if (userInDataSource) {
ds.setUser(user);
ds.setPassword(getPassword());
}
if (userInDataSource) {
assertEquals("ds" + ds.getTraceId() + ": url=" + url + " user=" + user, ds.toString());
} else {
assertEquals("ds" + ds.getTraceId() + ": url=" + url + " user=", ds.toString());
}
XAConnection xaConn;
if (userInDataSource) {
xaConn = ds.getXAConnection();
} else {
xaConn = ds.getXAConnection(user, getPassword());
}
int traceId = ((JdbcXAConnection) xaConn).getTraceId();
assertTrue(xaConn.toString().startsWith("xads" + traceId + ": conn"));
xaConn.addConnectionEventListener(new ConnectionEventListener() {
public void connectionClosed(ConnectionEvent event) {
// nothing to do
}
public void connectionErrorOccurred(ConnectionEvent event) {
// nothing to do
}
});
XAResource res = xaConn.getXAResource();
assertFalse(res.setTransactionTimeout(1));
assertEquals(0, res.getTransactionTimeout());
assertTrue(res.isSameRM(res));
assertFalse(res.isSameRM(null));
Connection conn = xaConn.getConnection();
assertEquals(user.toUpperCase(), conn.getMetaData().getUserName());
Xid[] list = res.recover(XAResource.TMSTARTRSCAN);
assertEquals(0, list.length);
Statement stat = conn.createStatement();
stat.execute("SELECT * FROM DUAL");
conn.close();
xaConn.close();
}Example 42
| Project: H2-Mirror-master File: TestDataSource.java View source code |
private void testXAConnection(boolean userInDataSource) throws Exception {
deleteDb("dataSource");
JdbcDataSource ds = new JdbcDataSource();
String url = getURL("dataSource", true);
String user = getUser();
ds.setURL(url);
if (userInDataSource) {
ds.setUser(user);
ds.setPassword(getPassword());
}
if (userInDataSource) {
assertEquals("ds" + ds.getTraceId() + ": url=" + url + " user=" + user, ds.toString());
} else {
assertEquals("ds" + ds.getTraceId() + ": url=" + url + " user=", ds.toString());
}
XAConnection xaConn;
if (userInDataSource) {
xaConn = ds.getXAConnection();
} else {
xaConn = ds.getXAConnection(user, getPassword());
}
int traceId = ((JdbcXAConnection) xaConn).getTraceId();
assertTrue(xaConn.toString().startsWith("xads" + traceId + ": conn"));
xaConn.addConnectionEventListener(new ConnectionEventListener() {
@Override
public void connectionClosed(ConnectionEvent event) {
// nothing to do
}
@Override
public void connectionErrorOccurred(ConnectionEvent event) {
// nothing to do
}
});
XAResource res = xaConn.getXAResource();
assertFalse(res.setTransactionTimeout(1));
assertEquals(0, res.getTransactionTimeout());
assertTrue(res.isSameRM(res));
assertFalse(res.isSameRM(null));
Connection conn = xaConn.getConnection();
assertEquals(user.toUpperCase(), conn.getMetaData().getUserName());
Xid[] list = res.recover(XAResource.TMSTARTRSCAN);
assertEquals(0, list.length);
Statement stat = conn.createStatement();
stat.execute("SELECT * FROM DUAL");
conn.close();
xaConn.close();
}Example 43
| Project: H2-Research-master File: TestDataSource.java View source code |
private void testXAConnection(boolean userInDataSource) throws Exception {
deleteDb("dataSource");
JdbcDataSource ds = new JdbcDataSource();
String url = getURL("dataSource", true);
String user = getUser();
ds.setURL(url);
if (userInDataSource) {
ds.setUser(user);
ds.setPassword(getPassword());
}
if (userInDataSource) {
assertEquals("ds" + ds.getTraceId() + ": url=" + url + " user=" + user, ds.toString());
} else {
assertEquals("ds" + ds.getTraceId() + ": url=" + url + " user=", ds.toString());
}
XAConnection xaConn;
if (userInDataSource) {
xaConn = ds.getXAConnection();
} else {
xaConn = ds.getXAConnection(user, getPassword());
}
int traceId = ((JdbcXAConnection) xaConn).getTraceId();
assertTrue(xaConn.toString().startsWith("xads" + traceId + ": conn"));
xaConn.addConnectionEventListener(new ConnectionEventListener() {
@Override
public void connectionClosed(ConnectionEvent event) {
// nothing to do
}
@Override
public void connectionErrorOccurred(ConnectionEvent event) {
// nothing to do
}
});
XAResource res = xaConn.getXAResource();
assertFalse(res.setTransactionTimeout(1));
assertEquals(0, res.getTransactionTimeout());
assertTrue(res.isSameRM(res));
assertFalse(res.isSameRM(null));
Connection conn = xaConn.getConnection();
assertEquals(user.toUpperCase(), conn.getMetaData().getUserName());
Xid[] list = res.recover(XAResource.TMSTARTRSCAN);
assertEquals(0, list.length);
Statement stat = conn.createStatement();
stat.execute("SELECT * FROM DUAL");
conn.close();
xaConn.close();
}Example 44
| Project: h2database-master File: TestDataSource.java View source code |
private void testXAConnection(boolean userInDataSource) throws Exception {
deleteDb("dataSource");
JdbcDataSource ds = new JdbcDataSource();
String url = getURL("dataSource", true);
String user = getUser();
ds.setURL(url);
if (userInDataSource) {
ds.setUser(user);
ds.setPassword(getPassword());
}
if (userInDataSource) {
assertEquals("ds" + ds.getTraceId() + ": url=" + url + " user=" + user, ds.toString());
} else {
assertEquals("ds" + ds.getTraceId() + ": url=" + url + " user=", ds.toString());
}
XAConnection xaConn;
if (userInDataSource) {
xaConn = ds.getXAConnection();
} else {
xaConn = ds.getXAConnection(user, getPassword());
}
int traceId = ((JdbcXAConnection) xaConn).getTraceId();
assertTrue(xaConn.toString().startsWith("xads" + traceId + ": conn"));
xaConn.addConnectionEventListener(new ConnectionEventListener() {
@Override
public void connectionClosed(ConnectionEvent event) {
// nothing to do
}
@Override
public void connectionErrorOccurred(ConnectionEvent event) {
// nothing to do
}
});
XAResource res = xaConn.getXAResource();
assertFalse(res.setTransactionTimeout(1));
assertEquals(0, res.getTransactionTimeout());
assertTrue(res.isSameRM(res));
assertFalse(res.isSameRM(null));
Connection conn = xaConn.getConnection();
assertEquals(user.toUpperCase(), conn.getMetaData().getUserName());
Xid[] list = res.recover(XAResource.TMSTARTRSCAN);
assertEquals(0, list.length);
Statement stat = conn.createStatement();
stat.execute("SELECT * FROM DUAL");
conn.close();
xaConn.close();
}Example 45
| Project: ironjacamar-master File: McCodeGen.java View source code |
/**
* Output class import
*
* @param def definition
* @param out Writer
* @throws IOException ioException
*/
@Override
public void writeImport(Definition def, Writer out) throws IOException {
out.write("package " + def.getRaPackage() + ";\n\n");
if (def.isSupportEis()) {
out.write("import java.io.IOException;\n");
}
out.write("import java.io.PrintWriter;\n");
if (def.isSupportEis()) {
out.write("import java.net.Socket;\n");
}
out.write("import java.util.ArrayList;\n");
out.write("import java.util.Collections;\n");
out.write("import java.util.HashSet;\n");
out.write("import java.util.List;\n");
out.write("import java.util.Set;\n");
importLogging(def, out);
out.write("import javax.resource.NotSupportedException;\n");
out.write("import javax.resource.ResourceException;\n");
out.write("import javax.resource.spi.ConnectionEvent;\n");
out.write("import javax.resource.spi.ConnectionEventListener;\n");
out.write("import javax.resource.spi.ConnectionRequestInfo;\n");
out.write("import javax.resource.spi.LocalTransaction;\n");
out.write("import javax.resource.spi.ManagedConnection;\n");
out.write("import javax.resource.spi.ManagedConnectionMetaData;\n\n");
out.write("import javax.security.auth.Subject;\n");
out.write("import javax.transaction.xa.XAResource;\n\n");
}Example 46
| Project: jboss-messaging-master File: MessagingXAResourceWrapper.java View source code |
/**
* Get the connectionFactory XAResource
*
* @return the connectionFactory
* @throws XAException for any problem
*/
public XAResource getDelegate() throws XAException {
XAResource result = null;
Exception error = null;
try {
result = connect();
} catch (Exception e) {
log.error("********************************Failed to connect to server", e);
error = e;
}
if (result == null) {
XAException xae = new XAException("Error trying to connect to provider " + providerName);
xae.errorCode = XAException.XAER_RMERR;
if (error != null)
xae.initCause(error);
log.debug("Cannot get connectionFactory XAResource", xae);
throw xae;
}
return result;
}Example 47
| Project: mssql-jdbc-master File: SQLServerXAConnection.java View source code |
/**
* Closes the physical connection that this PooledConnection object represents.
*/
public void close() throws SQLException {
synchronized (this) {
if (XAResource != null) {
XAResource.close();
XAResource = null;
}
if (null != physicalControlConnection) {
physicalControlConnection.close();
physicalControlConnection = null;
}
}
super.close();
}Example 48
| Project: neo4j-components-svn-master File: PersistenceManager.java View source code |
void delistResourcesForTransaction() throws NotInTransactionException {
Transaction tx = this.getCurrentTransaction();
if (tx == null) {
throw new NotInTransactionException();
}
ResourceConnection con = txConnectionMap.get(tx);
if (con != null) {
try {
tx.delistResource(con.getXAResource(), XAResource.TMSUCCESS);
} catch (SystemException e) {
throw new TransactionFailureException("Failed to delist resource '" + con + "' from current transaction.", e);
}
}
}Example 49
| Project: neo4j-mobile-android-master File: XaDataSourceManager.java View source code |
synchronized byte[] getBranchId(XAResource xaResource) { if (xaResource instanceof XaResource) { byte branchId[] = ((XaResource) xaResource).getBranchId(); if (branchId != null) { return branchId; } } Iterator<Map.Entry<String, XaDataSource>> itr = dataSources.entrySet().iterator(); while (itr.hasNext()) { Map.Entry<String, XaDataSource> entry = itr.next(); XaDataSource dataSource = entry.getValue(); XAResource resource = dataSource.getXaConnection().getXaResource(); try { if (resource.isSameRM(xaResource)) { String name = entry.getKey(); return sourceIdMapping.get(name); } } catch (XAException e) { throw new TransactionFailureException("Unable to check is same resource", e); } } throw new TransactionFailureException("Unable to find mapping for XAResource[" + xaResource + "]"); }
Example 50
| Project: openknowledge-cdi-extensions-master File: TransactionImpl.java View source code |
public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SecurityException, IllegalStateException, SystemException {
status = Status.STATUS_COMMITTING;
try {
for (XAResource res : resources) {
res.prepare(xid);
}
for (XAResource res : resources) {
res.commit(xid, false);
}
} catch (XAException e) {
throw new SystemException(e.toString());
}
status = Status.STATUS_COMMITTED;
}Example 51
| Project: orientdb-jca-master File: OrientDBTransactionXA.java View source code |
public void start(final Xid xid, final int flags) throws XAException {
boolean tmJoin = (flags & XAResource.TMJOIN) != 0;
boolean tmResume = (flags & XAResource.TMRESUME) != 0;
/* Check flags - only one of TMNOFLAGS, TMJOIN, or TMRESUME. */
if (xid == null || (tmJoin && tmResume) || (!tmJoin && !tmResume && flags != XAResource.TMNOFLAGS)) {
throw new XAException(XAException.XAER_INVAL);
}
database.begin();
logger.info("xa begin");
}Example 52
| Project: pinus4j-master File: GlobalJdbcUpdateImpl.java View source code |
@Override
public PKValue[] saveBatch(List<? extends Object> entities, String clusterName, boolean autoGeneratedKeys) {
Class<?> clazz = entities.get(0).getClass();
String tableName = entityMetaManager.getTableName(clazz);
List<PKValue> pks = new ArrayList<PKValue>();
Transaction tx = null;
IDBResource dbResource = null;
try {
tx = txManager.getTransaction();
dbResource = this.dbCluster.getMasterGlobalDBResource(clusterName, entityMetaManager.getTableName(clazz));
Connection conn = dbResource.getConnection();
int insertCount = 0;
if (autoGeneratedKeys) {
pks = _saveBatchWithAutoGeneratedKeys(conn, entities, -1);
insertCount = pks.size();
} else {
insertCount = _saveBatchWithoutAutoGeneratedKeys(conn, entities, -1);
}
if (tx != null) {
tx.enlistResource((XAResource) dbResource);
} else {
dbResource.commit();
}
if (isCacheAvailable(clazz) && insertCount > 0) {
primaryCache.incrCountGlobal(clusterName, tableName, insertCount);
}
if (isSecondCacheAvailable(clazz) && insertCount > 0) {
secondCache.removeGlobal(clusterName, tableName);
}
} catch (Exception e1) {
if (tx == null && dbResource != null)
dbResource.rollback();
throw new DBOperationException(e1);
} finally {
if (tx == null && dbResource != null) {
dbResource.close();
}
}
return pks.toArray(new PKValue[pks.size()]);
}Example 53
| Project: resin-master File: SpyXAResource.java View source code |
/**
* Returns true if the underlying RM is the same.
*/
@Override
public boolean isSameRM(XAResource resource) throws XAException {
long start = start();
try {
if (resource instanceof SpyXAResource)
resource = ((SpyXAResource) resource).getXAResource();
boolean same = _xaResource.isSameRM(resource);
if (log.isLoggable(Level.FINE))
log(start, "is-same-rm(resource=" + resource + ")->" + same);
return same;
} catch (XAException e) {
log.log(Level.FINE, e.toString(), e);
throw e;
} catch (RuntimeException e) {
log.log(Level.FINE, e.toString(), e);
throw e;
}
}Example 54
| Project: s2util-master File: TransactionUtil.java View source code |
/**
* トランザクションã?«å?‚åŠ ã?—ã?¾ã?™ã€‚
*
* @param tx
* トランザクション。{@literal null}���������ん
* @param xaResource
* XAリソース。{@literal null}���������ん
*/
public static void enlistResource(final Transaction tx, final XAResource xaResource) {
assertArgumentNotNull("tx", tx);
assertArgumentNotNull("xaResource", xaResource);
try {
tx.enlistResource(xaResource);
} catch (final SystemException e) {
throw new SystemRuntimeException(e);
} catch (final RollbackException e) {
throw new RollbackRuntimeException(e);
}
}Example 55
| Project: h-store-master File: JDBCXAResource.java View source code |
/**
* @throws XAException if the given Xid is the not the Xid of the
* current transaction for this XAResource object.
*/
private void validateXid(Xid xid) throws XAException {
if (xid == null) {
throw new XAException("Null Xid");
}
if (this.xid == null) {
throw new XAException("There is no live transaction for this XAResource");
}
if (!xid.equals(this.xid)) {
throw new XAException("Given Xid is not that associated with this XAResource object");
}
}Example 56
| Project: mut4j-master File: JDBCXAResource.java View source code |
/**
* @throws XAException if the given Xid is the not the Xid of the
* current transaction for this XAResource object.
*/
private void validateXid(Xid xid) throws XAException {
if (xid == null) {
throw new XAException("Null Xid");
}
if (this.xid == null) {
throw new XAException("There is no live transaction for this XAResource");
}
if (!xid.equals(this.xid)) {
throw new XAException("Given Xid is not that associated with this XAResource object");
}
}Example 57
| Project: StoryBear-master File: JDBCXAResource.java View source code |
/**
*
* @throws XAException if the given Xid is the not the Xid of the current
* transaction for this XAResource object.
* @param xid Xid
*/
private void validateXid(Xid xid) throws XAException {
if (xid == null) {
throw new XAException("Null Xid");
}
if (this.xid == null) {
throw new XAException("There is no live transaction for this XAResource");
}
if (!xid.equals(this.xid)) {
throw new XAException("Given Xid is not that associated with this XAResource object");
}
}Example 58
| Project: voltdb-master File: JDBCXAResource.java View source code |
/**
* @throws XAException if the given Xid is the not the Xid of the
* current transaction for this XAResource object.
*/
private void validateXid(Xid xid) throws XAException {
if (xid == null) {
throw new XAException("Null Xid");
}
if (this.xid == null) {
throw new XAException("There is no live transaction for this XAResource");
}
if (!xid.equals(this.xid)) {
throw new XAException("Given Xid is not that associated with this XAResource object");
}
}Example 59
| Project: bboss-master File: TransactionContext.java View source code |
/**
* Sets the shared connection for this transaction. The shared connection is enlisted
* in the transaction.
*
* @param sharedConnection the shared connection
* @throws SQLException if a shared connection is already set, if XAResource for the connection
* could not be found in the transaction registry, or if there was a problem enlisting the
* connection in the transaction
*/
public void setSharedConnection(Connection sharedConnection) throws SQLException {
if (this.sharedConnection != null) {
throw new IllegalStateException("A shared connection is already set");
}
// This is the first use of the connection in this transaction, so we must
// enlist it in the transaction
Transaction transaction = getTransaction();
try {
XAResource xaResource = transactionRegistry.getXAResource(sharedConnection);
if (!transaction.enlistResource(xaResource)) {
throw new SQLException("Unable to enlist connection in transaction: enlistResource returns 'false'.");
}
} catch (RollbackException e) {
} catch (SystemException e) {
throw new SQLException("Unable to enlist connection the transaction", e);
}
this.sharedConnection = sharedConnection;
}Example 60
| Project: ByteTCC-master File: SpringCloudCoordinator.java View source code |
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Class<?> clazz = method.getDeclaringClass();
String methodName = method.getName();
if (Object.class.equals(clazz)) {
return method.invoke(this, args);
} else if (RemoteCoordinator.class.equals(clazz)) {
if ("getIdentifier".equals(methodName)) {
return this.identifier;
} else {
throw new XAException(XAException.XAER_RMFAIL);
}
} else if (XAResource.class.equals(clazz)) {
if ("prepare".equals(methodName)) {
return this.invokePostCoordinator(proxy, method, args);
} else if ("commit".equals(methodName)) {
return this.invokePostCoordinator(proxy, method, args);
} else if ("rollback".equals(methodName)) {
return this.invokePostCoordinator(proxy, method, args);
} else if ("recover".equals(methodName)) {
return this.invokeGetCoordinator(proxy, method, args);
} else if ("forget".equals(methodName)) {
return this.invokePostCoordinator(proxy, method, args);
} else {
throw new XAException(XAException.XAER_RMFAIL);
}
} else {
throw new IllegalAccessException();
}
}Example 61
| Project: commons-dbcp-optivo-master File: TransactionContext.java View source code |
/**
* Sets the shared connection for this transaction. The shared connection is enlisted
* in the transaction.
*
* @param sharedConnection the shared connection
* @throws SQLException if a shared connection is already set, if XAResource for the connection
* could not be found in the transaction registry, or if there was a problem enlisting the
* connection in the transaction
*/
public void setSharedConnection(Connection sharedConnection) throws SQLException {
if (this.sharedConnection != null) {
throw new IllegalStateException("A shared connection is alredy set");
}
// This is the first use of the connection in this transaction, so we must
// enlist it in the transaction
Transaction transaction = getTransaction();
try {
XAResource xaResource = transactionRegistry.getXAResource(sharedConnection);
transaction.enlistResource(xaResource);
} catch (RollbackException e) {
} catch (SystemException e) {
throw (SQLException) new SQLException("Unable to enlist connection the transaction").initCause(e);
}
this.sharedConnection = sharedConnection;
}Example 62
| Project: etk-component-master File: TransactionServiceJotmImpl.java View source code |
/**
* {@inheritDoc}
*/
public void enlistResource(ExoResource exores) throws RollbackException, SystemException {
XAResource xares = exores.getXAResource();
ResourceEntry entry = new ResourceEntry(exores);
exores.setPayload(entry);
Transaction tx = getTransactionManager().getTransaction();
if (tx != null) {
current.getTransaction().enlistResource(xares);
} else if (trackWithoutTransaction) {
current.connectionOpened(entry);
// actual only if current.connectionOpened(entry);
// otherwise NPE inside the JOTM's Current
entry.jotmResourceList = popThreadLocalRMEventList();
pushThreadLocalRMEventList(entry.jotmResourceList);
}
}Example 63
| Project: hb-kg-master File: JtaXAResource.java View source code |
public int prepare(Xid xid) throws XAException {
LOG.trace("prepare [" + xid.toString() + "] ");
TransactionState state = xidToTransactionState.get(xid);
int status;
try {
status = this.transactionManager.prepareCommit(state);
} catch (CommitUnsuccessfulException e) {
XAException xae = new XAException(XAException.XA_HEURRB);
xae.initCause(e);
throw xae;
} catch (IOException e) {
XAException xae = new XAException(XAException.XAER_RMERR);
xae.initCause(e);
throw xae;
}
switch(status) {
case TransactionalRegionInterface.COMMIT_OK:
return XAResource.XA_OK;
case TransactionalRegionInterface.COMMIT_OK_READ_ONLY:
return XAResource.XA_RDONLY;
default:
throw new XAException(XAException.XA_RBPROTO);
}
}Example 64
| Project: hbase-secondary-index-master File: JtaXAResource.java View source code |
public int prepare(final Xid xid) throws XAException {
LOG.trace("prepare [" + xid.toString() + "] ");
TransactionState state = xidToTransactionState.get(xid);
int status;
try {
status = this.transactionManager.prepareCommit(state);
} catch (CommitUnsuccessfulException e) {
XAException xae = new XAException(XAException.XA_HEURRB);
xae.initCause(e);
throw xae;
} catch (IOException e) {
XAException xae = new XAException(XAException.XAER_RMERR);
xae.initCause(e);
throw xae;
}
switch(status) {
case TransactionalRegionInterface.COMMIT_OK:
return XAResource.XA_OK;
case TransactionalRegionInterface.COMMIT_OK_READ_ONLY:
return XAResource.XA_RDONLY;
default:
throw new XAException(XAException.XA_RBPROTO);
}
}Example 65
| Project: hbase-transactional-tableindexed-master File: JtaXAResource.java View source code |
public int prepare(final Xid xid) throws XAException {
LOG.trace("prepare [" + xid.toString() + "] ");
TransactionState state = xidToTransactionState.get(xid);
int status;
try {
status = this.transactionManager.prepareCommit(state);
} catch (CommitUnsuccessfulException e) {
XAException xae = new XAException(XAException.XA_HEURRB);
xae.initCause(e);
throw xae;
} catch (IOException e) {
XAException xae = new XAException(XAException.XAER_RMERR);
xae.initCause(e);
throw xae;
}
switch(status) {
case TransactionalRegionInterface.COMMIT_OK:
return XAResource.XA_OK;
case TransactionalRegionInterface.COMMIT_OK_READ_ONLY:
return XAResource.XA_RDONLY;
default:
throw new XAException(XAException.XA_RBPROTO);
}
}Example 66
| Project: jeplayer-master File: JEPLJTAConnectionXAPoolImpl.java View source code |
public void fixXAPool() throws SQLException {
// http://stackoverflow.com/questions/6927561/standardxaconnectionhandlepreparestatement-should-not-be-used-outside-an-ejbser
// http://www.java2s.com/Open-Source/Java-Document/Database-JDBC-Connection-Pool/xapool/org/enhydra/jdbc/standard/StandardXAConnectionHandle.java.htm
// http://websvn.ow2.org/filedetails.php?repname=xapool&path=%2Ftrunk%2Fxapool%2Fsrc%2Forg%2Fenhydra%2Fjdbc%2Fstandard%2FStandardXAConnectionHandle.java
Connection con = getConnection();
// Usando reflection evitamos dependencias con JOTM
try {
if (// jotmCon.tx == null
field_tx.get(con) == null) {
// TransactionManager txnMgr = jotmCon.transactionManager;
TransactionManager txnMgr = (TransactionManager) field_transactionManager.get(con);
Transaction tx = txnMgr.getTransaction();
if (tx != null) {
// jotmCon.tx = tx;
field_tx.set(con, tx);
// boolean autoCommit = jotmCon.getAutoCommit();
boolean autoCommit = (Boolean) method_getAutoCommit.invoke(con, (Object[]) null);
// StandardXAConnection xacon = jotmCon.xacon;
Object xacon = field_xacon.get(con);
// xacon.thisAutoCommit = autoCommit;
field_xacon_thisAutoCommit.set(xacon, autoCommit);
if (autoCommit)
// jotmCon.setAutoCommit(false);
method_setAutoCommit.invoke(con, false);
// tx.enlistResource(xacon.getXAResource());
tx.enlistResource((XAResource) method_xacon_getXAResource.invoke(xacon, (Object[]) null));
}
}
} catch (RollbackException ex1) {
throw new JEPLException(ex1);
} catch (IllegalStateException ex1) {
throw new JEPLException(ex1);
} catch (SystemException ex1) {
throw new JEPLException(ex1);
} catch (IllegalAccessException ex1) {
throw new JEPLException(ex1);
} catch (InvocationTargetException ex1) {
throw new JEPLException(ex1);
}
}Example 67
| Project: JOTMServiceProvider-master File: JOTMServiceImpl.java View source code |
/**
* Starts the registry and binds a JOTM instance to it. Registers the
* resource adapters declared by the neo data source manager to get ready
* for possible recovery.
*/
@Override
public void init(XaDataSourceManager xaDsManager) {
TransactionResourceManager trm = new TransactionResourceManager() {
public void returnXAResource(String rmName, XAResource rmXares) {
return;
}
};
try {
for (XaDataSource xaDs : xaDsManager.getAllRegisteredDataSources()) {
System.out.println("Registering another xa resource named: " + xaDs.getName());
Current.getTransactionRecovery().registerResourceManager(xaDs.getName(), xaDs.getXaConnection().getXaResource(), xaDs.getName(), trm);
}
Current.getTransactionRecovery().startResourceManagerRecovery();
} catch (XAException e) {
throw new Error("Error registering xa datasource", e);
}
}Example 68
| Project: mariadb-connector-j-master File: DistributedTransaction.java View source code |
/**
* 2 phase commit , with either commit or rollback at the end.
*
* @param doCommit must commit
* @throws Exception exception
*/
void test2PhaseCommit(boolean doCommit) throws Exception {
int connectionNumber = 1;
Xid parentXid = newXid();
Connection[] connections = new Connection[connectionNumber];
XAConnection[] xaConnections = new XAConnection[connectionNumber];
XAResource[] xaResources = new XAResource[connectionNumber];
Xid[] xids = new Xid[connectionNumber];
try {
for (int i = 0; i < connectionNumber; i++) {
xaConnections[i] = dataSource.getXAConnection();
connections[i] = xaConnections[i].getConnection();
xaResources[i] = xaConnections[i].getXAResource();
xids[i] = newXid(parentXid);
}
startAllResources(connectionNumber, xaResources, xids);
insertDatas(connectionNumber, connections);
endAllResources(connectionNumber, xaResources, xids);
prepareAllResources(connectionNumber, xaResources, xids);
for (int i = 0; i < connectionNumber; i++) {
if (doCommit) {
xaResources[i].commit(xids[i], false);
} else {
xaResources[i].rollback(xids[i]);
}
}
// check the completion
try (ResultSet rs = sharedConnection.createStatement().executeQuery("SELECT * from xatable order by i")) {
if (doCommit) {
for (int i = 0; i < connectionNumber; i++) {
rs.next();
assertEquals(rs.getInt(1), i);
}
} else {
assertFalse(rs.next());
}
}
} finally {
for (int i = 0; i < connectionNumber; i++) {
try {
if (xaConnections[i] != null) {
xaConnections[i].close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}Example 69
| Project: mulgara-master File: DummyXAResource.java View source code |
/**
* Format bitmasks defined by {@link XAResource}.
*
* @param flags a bitmask composed from the constants defined in {@link XAResource}
* @return a formatted representation of the <var>flags</var>
*/
protected static final String formatFlags(int flags) {
// Short-circuit evaluation if we've been explicitly passed no flags
if (flags == XAResource.TMNOFLAGS) {
return "TMNOFLAGS";
}
StringBuilder buffer = new StringBuilder();
// Add any flags that are present
for (Map.Entry<Integer, String> entry : flagMap.entrySet()) {
int entryFlag = entry.getKey().intValue();
// from the bitmask
if ((entryFlag & flags) == entryFlag) {
if (buffer.length() > 0) {
buffer.append(",");
}
buffer.append(entry.getValue());
flags &= ~entryFlag;
}
}
// If there's some unknown flag we've missed, format it as hexadecimal
if (flags != 0) {
if (buffer.length() > 0) {
buffer.append(",");
}
buffer.append("0x").append(Integer.toHexString(flags));
}
return buffer.toString();
}Example 70
| Project: mycontainer-master File: MyTransaction.java View source code |
public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SecurityException, IllegalStateException, SystemException {
if (status != Status.STATUS_ACTIVE) {
throw new IllegalStateException("tx is not active: " + status);
}
try {
beforeCompletion();
status = Status.STATUS_COMMITTING;
for (XAResource xa : getXas()) {
xa.commit(null, true);
}
status = Status.STATUS_COMMITTED;
} catch (XAException e) {
throw new KernelRuntimeException(e);
}
afterCompletion(status);
}Example 71
| Project: nuxeo-master File: WorkManagerTXTest.java View source code |
@Override
public void work() {
runs++;
if (--throwCount >= 0) {
if (!throwDuringXAResourceEnd) {
throw new ConcurrentUpdateException("run " + runs);
} else {
XAResource xaRes = new XAResource() {
@Override
public void commit(Xid xid, boolean onePhase) throws XAException {
}
@Override
public void start(Xid xid, int flags) throws XAException {
}
@Override
public void end(Xid xid, int flags) throws XAException {
// similar code to what we have in SessionImpl#end to deal with ConcurrentUpdateException
Exception e = new ConcurrentUpdateException("end run " + runs);
TransactionHelper.noteSuppressedException(e);
TransactionHelper.setTransactionRollbackOnly();
}
@Override
public void forget(Xid xid) throws XAException {
}
@Override
public int getTransactionTimeout() throws XAException {
return 0;
}
@Override
public boolean isSameRM(XAResource xares) throws XAException {
return false;
}
@Override
public int prepare(Xid xid) throws XAException {
return 0;
}
@Override
public Xid[] recover(int flag) throws XAException {
return null;
}
@Override
public void rollback(Xid xid) throws XAException {
}
@Override
public boolean setTransactionTimeout(int seconds) throws XAException {
return true;
}
};
Transaction transaction;
try {
transaction = TransactionHelper.lookupTransactionManager().getTransaction();
transaction.enlistResource(xaRes);
} catch (SystemExceptionNamingException | RollbackException | e) {
throw new RuntimeException(e);
}
}
}
}Example 72
| Project: org.ops4j.pax.jdbc-master File: DbcpXAPooledDataSourceFactory.java View source code |
@Override
public DataSource create(DataSourceFactory dsf, Properties props) throws SQLException {
try {
final XADataSource ds = dsf.createXADataSource(getNonPoolProps(props));
DataSourceXAConnectionFactory connFactory = new DataSourceXAConnectionFactory(tm, (XADataSource) ds);
PoolableManagedConnectionFactory pcf = new PoolableManagedConnectionFactory(connFactory, null);
GenericObjectPoolConfig conf = new GenericObjectPoolConfig();
BeanConfig.configure(conf, getPoolProps(props));
BeanConfig.configure(pcf, getPrefixed(props, FACTORY_PREFIX));
GenericObjectPool<PoolableConnection> pool = new GenericObjectPool<PoolableConnection>(pcf, conf);
pcf.setPool(pool);
TransactionRegistry transactionRegistry = connFactory.getTransactionRegistry();
final ServiceRegistration<XAResourceRecovery> registration = bundleContext.registerService(XAResourceRecovery.class, new XAResourceRecovery() {
@Override
public XAResource[] getXAResources() {
try {
return new XAResource[] { new Wrapper(ds.getXAConnection()) };
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}, null);
ManagedDataSource<PoolableConnection> mds = new ManagedDataSource<PoolableConnection>(pool, transactionRegistry) {
@Override
public void close() throws Exception {
registration.unregister();
super.close();
}
};
return mds;
} catch (Throwable e) {
LOG.error("Error creating pooled datasource" + e.getMessage(), e);
if (e instanceof SQLException) {
throw (SQLException) e;
} else if (e instanceof RuntimeException) {
throw (RuntimeException) e;
} else {
throw new RuntimeException(e.getMessage(), e);
}
}
}Example 73
| Project: quercus-master File: TransactionSynchronizationRegistryImpl.java View source code |
// TODO This seems like a strange signature for a transaction resource. // Besides XAResource what other resource type could be used in Resin? @Override public void putResource(Object key, Object value) { if (!(value instanceof XAResource)) { throw new IllegalArgumentException(L.l("{0} is not an XA resource.", value)); } TransactionImpl transaction = _transactionManager.getTransaction(); if (transaction != null) { try { transaction.putResource(key, (XAResource) value); } catch (RollbackException e) { log.log(Level.WARNING, L.l("Error adding resoure to transaction: {0}", e.getMessage()), e); } catch (SystemException e) { log.log(Level.WARNING, L.l("Error adding resoure to transaction: {0}", e.getMessage()), e); } } else { throw new IllegalStateException(L.l("No active transaction.")); } }
Example 74
| Project: seasar2-master File: DefaultXAResourceTest.java View source code |
/**
* @throws Exception
*/
public void testStart() throws Exception {
DefaultXAResource xaRes = new DefaultXAResource();
Xid xid = new XidImpl();
xaRes.start(xid, XAResource.TMNOFLAGS);
assertEquals("1", xid, xaRes.getCurrentXid());
assertEquals("2", DefaultXAResource.RS_ACTIVE, xaRes.getStatus());
try {
xaRes.start(xid, XAResource.TMNOFLAGS);
fail("3");
} catch (XAException ex) {
System.out.println(ex);
}
DefaultXAResource xaRes2 = new DefaultXAResource();
Xid xid2 = new XidImpl();
xaRes2.start(xid2, XAResource.TMNOFLAGS);
xaRes2.end(xid2, XAResource.TMSUSPEND);
xaRes2.start(xid2, XAResource.TMRESUME);
assertEquals("4", xid2, xaRes2.getCurrentXid());
assertEquals("5", DefaultXAResource.RS_ACTIVE, xaRes2.getStatus());
try {
xaRes2.start(xid, XAResource.TMRESUME);
fail("6");
} catch (XAException ex) {
System.out.println(ex);
}
DefaultXAResource xaRes3 = new DefaultXAResource();
try {
xaRes3.start(xid, XAResource.TMJOIN);
fail("7");
} catch (XAException ex) {
System.out.println(ex);
}
DefaultXAResource xaRes4 = new DefaultXAResource();
try {
xaRes4.start(xid, -1);
fail("8");
} catch (XAException ex) {
System.out.println(ex);
}
}Example 75
| Project: spring-boot-master File: DataSourceXAResourceRecoveryHelperTests.java View source code |
@Before
public void before() throws SQLException {
this.xaDataSource = mock(XADataSource.class);
this.xaConnection = mock(XAConnection.class);
this.xaResource = mock(XAResource.class);
this.recoveryHelper = new DataSourceXAResourceRecoveryHelper(this.xaDataSource);
given(this.xaDataSource.getXAConnection()).willReturn(this.xaConnection);
given(this.xaConnection.getXAResource()).willReturn(this.xaResource);
}Example 76
| Project: spring-framework-2.5.x-master File: GenericMessageEndpointFactory.java View source code |
/**
* Wrap each concrete endpoint instance with an AOP proxy,
* exposing the message listener's interfaces as well as the
* endpoint SPI through an AOP introduction.
*/
public MessageEndpoint createEndpoint(XAResource xaResource) throws UnavailableException {
GenericMessageEndpoint endpoint = (GenericMessageEndpoint) super.createEndpoint(xaResource);
ProxyFactory proxyFactory = new ProxyFactory(this.messageListener);
DelegatingIntroductionInterceptor introduction = new DelegatingIntroductionInterceptor(endpoint);
introduction.suppressInterface(MethodInterceptor.class);
proxyFactory.addAdvice(introduction);
return (MessageEndpoint) proxyFactory.getProxy();
}Example 77
| Project: spring-framework-master File: GenericMessageEndpointFactory.java View source code |
/**
* Wrap each concrete endpoint instance with an AOP proxy,
* exposing the message listener's interfaces as well as the
* endpoint SPI through an AOP introduction.
*/
@Override
public MessageEndpoint createEndpoint(XAResource xaResource) throws UnavailableException {
GenericMessageEndpoint endpoint = (GenericMessageEndpoint) super.createEndpoint(xaResource);
ProxyFactory proxyFactory = new ProxyFactory(this.messageListener);
DelegatingIntroductionInterceptor introduction = new DelegatingIntroductionInterceptor(endpoint);
introduction.suppressInterface(MethodInterceptor.class);
proxyFactory.addAdvice(introduction);
return (MessageEndpoint) proxyFactory.getProxy();
}Example 78
| Project: stomple-master File: XAwithJTAExample.java View source code |
@Override
public boolean runExample() throws Exception {
XAConnection connection = null;
InitialContext initialContext = null;
try {
// Step 1. Create an initial context to perform the JNDI lookup.
initialContext = getContext(0);
// Step 2. Lookup on the queue
Queue queue = (Queue) initialContext.lookup("/queue/exampleQueue");
// Step 3. Perform a lookup on the XA Connection Factory
XAConnectionFactory cf = (XAConnectionFactory) initialContext.lookup("/XAConnectionFactory");
// Step 4.Create a JMS XAConnection
connection = cf.createXAConnection();
// Step 5. Start the connection
connection.start();
// Step 6. Create a JMS XASession
XASession xaSession = connection.createXASession();
// Step 7. Create a normal session
Session normalSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Step 8. Create a normal Message Producer
MessageProducer normalProducer = normalSession.createProducer(queue);
// Step 9. Get the JMS Session
Session session = xaSession.getSession();
// Step 10. Create a message consumer
MessageConsumer xaConsumer = session.createConsumer(queue);
// Step 11. Create two Text Messages
TextMessage helloMessage = session.createTextMessage("hello");
TextMessage worldMessage = session.createTextMessage("world");
// Step 12. Get the Transaction Manager
javax.transaction.TransactionManager txMgr = TransactionManager.transactionManager();
// Step 13. Start a transaction
txMgr.begin();
// Step 14. Get the JMS XAResource
XAResource xaRes = xaSession.getXAResource();
// Step 15. enlist the resource in the Transaction work
Transaction transaction = txMgr.getTransaction();
transaction.enlistResource(new DummyXAResource());
transaction.enlistResource(xaRes);
// Step 16. Send two messages.
normalProducer.send(helloMessage);
normalProducer.send(worldMessage);
// Step 17. Receive the message
TextMessage rm1 = (TextMessage) xaConsumer.receive();
System.out.println("Message received: " + rm1.getText());
TextMessage rm2 = (TextMessage) xaConsumer.receive();
System.out.println("Message received: " + rm2.getText());
// Step 18. Roll back the transaction
txMgr.rollback();
// Step 19. Create another transaction
txMgr.begin();
transaction = txMgr.getTransaction();
// Step 20. Enlist the resources to start the transaction work
transaction.enlistResource(new DummyXAResource());
transaction.enlistResource(xaRes);
// Step 21. receive those messages again
rm1 = (TextMessage) xaConsumer.receive();
System.out.println("Message received again: " + rm1.getText());
rm2 = (TextMessage) xaConsumer.receive();
System.out.println("Message received again: " + rm2.getText());
// Step 22. Commit!
txMgr.commit();
// Step 23. Check no more messages are received.
TextMessage rm3 = (TextMessage) xaConsumer.receive(2000);
if (rm3 == null) {
System.out.println("No message received after commit.");
} else {
result = false;
}
return result;
} finally {
// Step 24. Be sure to close our JMS resources!
if (initialContext != null) {
initialContext.close();
}
if (connection != null) {
connection.close();
}
}
}Example 79
| Project: threads-with-transaction-master File: AtomikosDAO.java View source code |
public Integer call() throws Exception {
if (falhar) {
throw new RuntimeException("Falhou inesperadamente!");
}
//enlist xa connection
XAConnection xac = AtomikosDataSource.getDS().getXaDataSource().getXAConnection();
synchronized (transaction) {
transaction.enlistResource(xac.getXAResource());
}
//normal execution, update row with OK
Connection c = xac.getConnection();
Statement s = c.createStatement();
s.executeUpdate("update teste set processado = 'ok' where id = " + id);
s.close();
c.close();
//delist xa connection
synchronized (transaction) {
transaction.delistResource(xac.getXAResource(), XAResource.TMSUCCESS);
}
return id;
}Example 80
| Project: tomee-master File: GetterConnectorTest.java View source code |
@Override
public ManagedConnection createManagedConnection(final Subject subject, final ConnectionRequestInfo cxRequestInfo) throws ResourceException {
return new ManagedConnection() {
@Override
public Object getConnection(Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
connections.add(this);
return this;
}
@Override
public void destroy() throws ResourceException {
connections.remove(this);
destroyed.set(true);
}
@Override
public void cleanup() throws ResourceException {
// no-op
}
@Override
public void associateConnection(Object connection) throws ResourceException {
// no-op
}
@Override
public void addConnectionEventListener(ConnectionEventListener listener) {
// no-op
}
@Override
public void removeConnectionEventListener(ConnectionEventListener listener) {
// no-op
}
@Override
public XAResource getXAResource() throws ResourceException {
return null;
}
@Override
public LocalTransaction getLocalTransaction() throws ResourceException {
return new LocalTransaction() {
@Override
public void begin() throws ResourceException {
}
@Override
public void commit() throws ResourceException {
}
@Override
public void rollback() throws ResourceException {
}
};
}
@Override
public ManagedConnectionMetaData getMetaData() throws ResourceException {
return null;
}
@Override
public void setLogWriter(PrintWriter out) throws ResourceException {
// no-op
}
@Override
public PrintWriter getLogWriter() throws ResourceException {
return null;
}
};
}Example 81
| Project: tuscany-sca-2.x-master File: TransactionManagerHelperTestCaseOFF.java View source code |
public void testHelper() throws Exception {
TransactionManagerWrapper activator = new TransactionManagerWrapper();
activator.start();
TransactionManager tm = activator.getTransactionManager();
// GeronimoUserTransaction tx = new GeronimoUserTransaction(tm);
TransactionManagerHelper helper = new TransactionManagerHelper(tm);
// No TX yet
assertNull(tm.getTransaction());
Transaction t1 = helper.managedGlobalTransactionPreInvoke();
// Should create T1
assertNotNull(t1);
// The current TX should be T1
assertSame(t1, tm.getTransaction());
XAResource res1 = new MockXAResource("Derby", "001");
XAResource res2 = new MockXAResource("DB2", "002");
tm.getTransaction().enlistResource(res1);
tm.getTransaction().enlistResource(res2);
Transaction suspended = helper.suspendsTransactionPreInvoke();
suspended.delistResource(res1, XAResource.TMSUSPEND);
suspended.delistResource(res2, XAResource.TMSUSPEND);
// T1 is suspended
assertSame(t1, suspended);
// No more active TX
assertNull(tm.getTransaction());
Transaction t2 = helper.managedGlobalTransactionPreInvoke();
assertNotNull(t2);
// The current TX should be T2
assertSame(t2, tm.getTransaction());
XAResource res3 = new MockXAResource("Oracle", "003");
tm.getTransaction().enlistResource(res3);
tm.getTransaction().delistResource(res3, XAResource.TMSUCCESS);
tm.rollback();
// Skip post
// helper.managedGlobalTransactionPostInvoke(t2);
helper.suspendsTransactionPostInvoke(suspended);
suspended.enlistResource(res1);
suspended.enlistResource(res2);
// T1 is now resumed
assertSame(t1, tm.getTransaction());
helper.managedGlobalTransactionPostInvoke(t1, false);
assertNotNull(tm.getTransaction());
assertEquals(6, t1.getStatus());
activator.stop();
}Example 82
| Project: wildfly-master File: TestXAResource.java View source code |
@Override
public int prepare(Xid xid) throws XAException {
LOG.debugf("prepare xid: [%s]", xid);
switch(prepareOp) {
case THROW_KNOWN_XA_EXCEPTION:
throw new XAException(XAException.XAER_RMERR);
case THROW_UNKNOWN_XA_EXCEPTION:
throw RM_SPECIFIC_EXCEPTION;
case NONE:
default:
return XAResource.XA_OK;
}
}Example 83
| Project: geode-master File: AbstractPoolCacheJUnitTest.java View source code |
/**
* Tests if an XAresource obtained from an XAConnection which is already closed , can return null
* or not.
*/
@Ignore("TODO: test used to eat its own exception and it fails")
@Test
public void testEffectOfBlockingTimeoutOnXAConnection() throws Exception {
Map map = new HashMap();
map.put("init-pool-size", "2");
map.put("jndi-name", "TestXAPooledDataSource");
map.put("max-pool-size", "7");
map.put("idle-timeout-seconds", "20");
map.put("blocking-timeout-seconds", "2");
map.put("login-timeout-seconds", "5");
// map.put("xa-datasource-class","org.apache.derby.jdbc.EmbeddedXADataSource");
map.put("jdbc-driver-class", "org.apache.derby.jdbc.EmbeddedDriver");
map.put("user-name", "mitul");
map.put("password", "83f0069202c571faf1ae6c42b4ad46030e4e31c17409e19a");
map.put("connection-url", "jdbc:derby:newDB;create=true");
List props = new ArrayList();
props.add(new ConfigProperty("databaseName", "newDB", "java.lang.String"));
GemFireBasicDataSource gbds = (GemFireBasicDataSource) DataSourceFactory.getSimpleDataSource(map, props);
map.put("xa-datasource-class", "org.apache.derby.jdbc.EmbeddedXADataSource");
map.put("connection-url", "jdbc:derby:newDB;create=true");
GemFireTransactionDataSource gtds = (GemFireTransactionDataSource) DataSourceFactory.getTranxDataSource(map, props);
XAConnection xaconn = (XAConnection) gtds.provider.borrowConnection();
try {
Thread.sleep(4);
} catch (InterruptedException e) {
fail("interrupted");
}
for (int i = 0; i < 1000; ++i) {
XAResource xar = xaconn.getXAResource();
System.out.println("XAResource=" + xar);
assertNotNull(xar);
}
}Example 84
| Project: clinic-softacad-master File: JtaAwareConnectionProviderImpl.java View source code |
@Override
public void closeConnection(Connection conn) throws SQLException {
if (conn == null) {
return;
}
if (nonEnlistedConnections.contains(conn)) {
nonEnlistedConnections.remove(conn);
delegate.closeConnection(conn);
} else {
// do nothing. part of the enlistment contract here is that the XAResource wrapper
// takes that responsibility.
}
}Example 85
| Project: easybeans-master File: MDBCMTRequiredTransactionInterceptor.java View source code |
/**
* Execute transaction as specified with the REQUIRED attribute.
* @param invocationContext
* context with useful attributes on the current invocation
* @return result of the next invocation (to chain interceptors)
* @throws Exception
* if interceptor fails
* @see <a href="http://www.jcp.org/en/jsr/detail?id=220">EJB 3.0
* specification ?12.6.2.2</a>
*/
@Override
public Object intercept(final EasyBeansInvocationContext invocationContext) throws Exception {
this.logger.debug("Calling Required TX interceptor");
// Get current transaction
Transaction transaction;
try {
transaction = getTransactionManager().getTransaction();
} catch (SystemException se) {
throw new EJBException("Cannot get the current transaction on transaction manager.", se);
}
this.logger.debug("Transaction found = {0}", transaction);
/*
* If the client invokes the enterprise bean's method while the client
* is not associated with a transaction context, the container
* automatically starts a new transaction before delegating a method
* call to the enterprise bean business method.
*/
boolean startedTransaction = false;
if (transaction == null) {
try {
getTransactionManager().begin();
startedTransaction = true;
} catch (NotSupportedException nse) {
throw new EJBException("Transaction Manager implementation does not support nested transactions.", nse);
} catch (SystemException se) {
throw new EJBException("Cannot call begin() on the transaction manager.", se);
}
}
// Get XA Resource
Object target = invocationContext.getTarget();
EasyBeansMDB mdbInstance = null;
XAResource xaResource = null;
if (target instanceof EasyBeansMDB) {
mdbInstance = (EasyBeansMDB) target;
if (mdbInstance != null) {
xaResource = mdbInstance.getXaResource();
}
}
// Enlist XA Resource
if (xaResource != null) {
getTransactionManager().getTransaction().enlistResource(xaResource);
}
// else
/*
* If a client invokes the enterprise bean's method while the client is
* associated with a transaction context, the container invokes the
* enterprise bean's method in the client's transaction context.
*/
boolean gotBusinessException = false;
try {
return invocationContext.proceed();
} catch (Exception e) {
gotBusinessException = true;
if (!startedTransaction) {
handleContextClientTransaction(invocationContext, e);
} else {
handleContextContainerTransaction(invocationContext, e);
}
return null;
} finally {
if (!gotBusinessException) {
// invoking the method.
if (startedTransaction) {
// sanity check.
Transaction transactionAfter = null;
try {
transactionAfter = getTransactionManager().getTransaction();
} catch (SystemException se) {
throw new EJBException("Cannot get the current transaction on transaction manager.", se);
}
if (transactionAfter == null) {
throw new RuntimeException("Transaction disappeared.");
}
/*
* The container attempts to commit the transaction when the
* business method has completed. The container performs the
* commit protocol before the method result is sent to the
* client.
*/
try {
switch(getTransactionManager().getStatus()) {
case STATUS_ACTIVE:
// Delist XA Resource
if (xaResource != null) {
transactionAfter.delistResource(xaResource, XAResource.TMSUCCESS);
}
getTransactionManager().commit();
break;
case STATUS_MARKED_ROLLBACK:
// Delist XA Resource
if (xaResource != null) {
transactionAfter.delistResource(xaResource, XAResource.TMFAIL);
}
getTransactionManager().rollback();
break;
default:
throw new RuntimeException("Unexpected transaction status" + getTransactionManager().getStatus());
}
} catch (RollbackException e) {
throw new TransactionRolledbackLocalException("Could not commit transaction", e);
} catch (Exception e) {
throw new EJBException("Container exception", e);
}
}
}
}
}Example 86
| Project: featurehouse_fstcomp_examples-master File: XAEnvironment.java View source code |
/**
* Javadoc for this public method is generated via
* the doc templates in the doc_src directory.
*/
public void end(Xid xid, int flags) throws XAException {
if (DEBUG) {
System.out.println("*** end called " + xid + "/" + flags);
}
boolean tmFail = (flags & XAResource.TMFAIL) != 0;
boolean tmSuccess = (flags & XAResource.TMSUCCESS) != 0;
boolean tmSuspend = (flags & XAResource.TMSUSPEND) != 0;
if ((tmFail && tmSuccess) || ((tmFail || tmSuccess) && tmSuspend)) {
throw new XAException(XAException.XAER_INVAL);
}
try {
if (DEBUG) {
System.out.println("Transaction for " + Thread.currentThread() + " is " + environmentImpl.getTxnManager().getTxnForThread());
}
Transaction txn = environmentImpl.getTxnManager().unsetTxnForThread();
if (txn == null) {
txn = getXATransaction(xid);
boolean isSuspended = (txn != null) && txn.getTxn().isSuspended();
if (!isSuspended) {
throw new XAException(XAException.XAER_NOTA);
}
}
if (tmFail) {
txn.getTxn().setOnlyAbortable();
}
if (tmSuspend) {
txn.getTxn().setSuspended(true);
}
} catch (DatabaseException DE) {
throwNewXAException(DE);
}
}Example 87
| Project: ha-jdbc-master File: XAResourceInvocationHandler.java View source code |
/**
* @see net.sf.hajdbc.sql.AbstractInvocationHandler#getInvocationStrategy(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
*/
@Override
protected InvocationStrategy getInvocationStrategy(XAResource resource, Method method, Object... parameters) throws XAException {
if (driverReadMethodSet.contains(method)) {
return InvocationStrategies.INVOKE_ON_ANY;
}
if (databaseWriteMethodSet.contains(method)) {
return InvocationStrategies.INVOKE_ON_ALL;
}
boolean start = method.equals(startMethod);
boolean end = endTransactionMethodSet.contains(method);
if (start || end || intraTransactionMethodSet.contains(method)) {
final InvocationStrategy strategy = end ? InvocationStrategies.END_TRANSACTION_INVOKE_ON_ALL : InvocationStrategies.TRANSACTION_INVOKE_ON_ALL;
Xid xid = (Xid) parameters[0];
DatabaseCluster<XADataSource, XADataSourceDatabase> cluster = this.getProxyFactory().getDatabaseCluster();
if (start) {
final Lock lock = cluster.getLockManager().readLock(null);
// Lock may already exist if we're resuming a suspended transaction
if (lockMap.putIfAbsent(xid, lock) == null) {
return new InvocationStrategy() {
@Override
public <Z, D extends Database<Z>, T, R, E extends Exception> SortedMap<D, R> invoke(ProxyFactory<Z, D, T, E> proxy, Invoker<Z, D, T, R, E> invoker) throws E {
lock.lock();
try {
return strategy.invoke(proxy, invoker);
} catch (Exception e) {
lock.unlock();
throw proxy.getExceptionFactory().createException(e);
}
}
};
}
}
Durability.Phase phase = phaseRegistry.get(method);
if (phase != null) {
final InvocationStrategy durabilityStrategy = cluster.getDurability().getInvocationStrategy(strategy, phase, xid);
if (endTransactionMethodSet.contains(method)) {
final Lock lock = lockMap.remove(xid);
return new InvocationStrategy() {
@Override
public <Z, D extends Database<Z>, T, R, E extends Exception> SortedMap<D, R> invoke(ProxyFactory<Z, D, T, E> proxy, Invoker<Z, D, T, R, E> invoker) throws E {
try {
return durabilityStrategy.invoke(proxy, invoker);
} finally {
if (lock != null) {
lock.unlock();
}
}
}
};
}
return durabilityStrategy;
}
return strategy;
}
return super.getInvocationStrategy(resource, method, parameters);
}Example 88
| Project: hibernate-core-ogm-master File: XaTransactionImpl.java View source code |
private boolean runXaResourcePrepare() throws SystemException {
Collection<XAResource> resources = getEnlistedResources();
for (XAResource res : resources) {
try {
res.prepare(xid);
} catch (XAException e) {
log.trace("The resource wants to rollback!", e);
return false;
} catch (Throwable th) {
log.error("Unexpected error from resource manager!", th);
throw new SystemException(th.getMessage());
}
}
return true;
}Example 89
| Project: hibernate-orm-master File: JtaAwareConnectionProviderImpl.java View source code |
@Override
public void closeConnection(Connection conn) throws SQLException {
if (conn == null) {
return;
}
if (nonEnlistedConnections.contains(conn)) {
nonEnlistedConnections.remove(conn);
delegate.closeConnection(conn);
} else {
// do nothing. part of the enlistment contract here is that the XAResource wrapper
// takes that responsibility.
}
}Example 90
| Project: ignite-master File: WebSphereTmFactory.java View source code |
@SuppressWarnings("SimplifiableIfStatement")
@Override
public boolean enlistResource(final XAResource xaRes) throws RollbackException, IllegalStateException, SystemException {
if (xaRes == null)
return false;
// final XAResource res = new IgniteOnePhaseXAResource(xaRes);
Object ibmProxy = Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class[] { onePhaseXAResourceCls }, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method mtd, Object[] args) throws Throwable {
return mtd.invoke(xaRes, args);
}
});
return tx.enlistResource((XAResource) ibmProxy);
}Example 91
| Project: metamorphosis-example-master File: XATransactionTemplate.java View source code |
private Transaction beginTx(final XAMessageProducer producer, final XAConnection conn) throws SystemException, MetaClientException, SQLException, RollbackException, NotSupportedException {
this.transactionManager.begin();
final Transaction tx = this.transactionManager.getTransaction();
if (tx == null) {
throw new IllegalStateException("Could not get transaction from tm");
}
final XAResource metaXares = producer.getXAResource();
final XAResource jdbcXares = conn.getXAResource();
tx.enlistResource(metaXares);
tx.enlistResource(jdbcXares);
return tx;
}Example 92
| Project: Phynixx-master File: XATransactionalBranch.java View source code |
int prepare() throws XAException {
// must find connection for this transaction
if (// must
!this.isProgressStateIn(XAResourceProgressState.ACTIVE)) {
// have
// had
// start()
// called
LOG.error("XAResource " + this + " must have start() called ");
throw new XAException(XAException.XAER_PROTO);
}
if (this.progressState == XAResourceProgressState.PREPARED) {
if (this.isReadOnly()) {
return (XAResource.XA_RDONLY);
} else {
return XAResource.XA_OK;
}
}
// check if resource is READONLY -> no prepare is required
if (this.isReadOnly()) {
this.setProgressState(XAResourceProgressState.PREPARED);
return (XAResource.XA_RDONLY);
}
if (this.progressState == XAResourceProgressState.PREPARING) {
throw new IllegalStateException("XAResource already preparing");
}
if (!checkTXRequirements()) {
throw new SampleTransactionalException("State not transactional " + this);
}
if (this.hasHeuristicOutcome()) {
throw new XAException(this.heuristicState);
}
this.checkRollback();
this.setProgressState(XAResourceProgressState.PREPARING);
try {
this.getManagedConnection().prepare();
} catch (Exception e) {
throwXAException(XAException.XAER_PROTO, e);
}
this.setProgressState(XAResourceProgressState.PREPARED);
// anything to commit?
if (this.isReadOnly()) {
return (XAResource.XA_RDONLY);
} else {
return XAResource.XA_OK;
}
}Example 93
| Project: agile4techos-master File: XATest.java View source code |
/**
* Tests that simple distributed transaction processing works as expected.
*
* @throws Exception
* if the test fails.
*/
public void testCoordination() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
createTable("testCoordination", "(field1 int) ENGINE=InnoDB");
Connection conn1 = null;
Connection conn2 = null;
XAConnection xaConn1 = null;
XAConnection xaConn2 = null;
try {
xaConn1 = getXAConnection();
XAResource xaRes1 = xaConn1.getXAResource();
conn1 = xaConn1.getConnection();
xaConn2 = getXAConnection();
XAResource xaRes2 = xaConn2.getXAResource();
conn2 = xaConn2.getConnection();
Xid xid1 = createXid();
Xid xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.commit(xid1, false);
xaRes2.commit(xid2, false);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(this.rs.next());
assertEquals(1, this.rs.getInt(1));
assertTrue(this.rs.next());
assertEquals(2, this.rs.getInt(1));
this.stmt.executeUpdate("TRUNCATE TABLE testCoordination");
//
// Now test rollback
//
xid1 = createXid();
xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
// ensure visibility
assertEquals("1", getSingleIndexedValueWithQuery(conn1, 1, "SELECT field1 FROM testCoordination WHERE field1=1").toString());
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
// ensure visibility
assertEquals("2", getSingleIndexedValueWithQuery(conn2, 1, "SELECT field1 FROM testCoordination WHERE field1=2").toString());
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.rollback(xid1);
xaRes2.rollback(xid2);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(!this.rs.next());
} finally {
if (conn1 != null) {
conn1.close();
}
if (conn2 != null) {
conn2.close();
}
if (xaConn1 != null) {
xaConn1.close();
}
if (xaConn2 != null) {
xaConn2.close();
}
}
}Example 94
| Project: Airscribe-master File: XATest.java View source code |
/**
* Tests that simple distributed transaction processing works as expected.
*
* @throws Exception
* if the test fails.
*/
public void testCoordination() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
createTable("testCoordination", "(field1 int) ENGINE=InnoDB");
Connection conn1 = null;
Connection conn2 = null;
XAConnection xaConn1 = null;
XAConnection xaConn2 = null;
try {
xaConn1 = getXAConnection();
XAResource xaRes1 = xaConn1.getXAResource();
conn1 = xaConn1.getConnection();
xaConn2 = getXAConnection();
XAResource xaRes2 = xaConn2.getXAResource();
conn2 = xaConn2.getConnection();
Xid xid1 = createXid();
Xid xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.commit(xid1, false);
xaRes2.commit(xid2, false);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(this.rs.next());
assertEquals(1, this.rs.getInt(1));
assertTrue(this.rs.next());
assertEquals(2, this.rs.getInt(1));
this.stmt.executeUpdate("TRUNCATE TABLE testCoordination");
//
// Now test rollback
//
xid1 = createXid();
xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
// ensure visibility
assertEquals("1", getSingleIndexedValueWithQuery(conn1, 1, "SELECT field1 FROM testCoordination WHERE field1=1").toString());
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
// ensure visibility
assertEquals("2", getSingleIndexedValueWithQuery(conn2, 1, "SELECT field1 FROM testCoordination WHERE field1=2").toString());
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.rollback(xid1);
xaRes2.rollback(xid2);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(!this.rs.next());
} finally {
if (conn1 != null) {
conn1.close();
}
if (conn2 != null) {
conn2.close();
}
if (xaConn1 != null) {
xaConn1.close();
}
if (xaConn2 != null) {
xaConn2.close();
}
}
}Example 95
| Project: aramis-build-toolkit-master File: XATest.java View source code |
/**
* Tests that simple distributed transaction processing works as expected.
*
* @throws Exception
* if the test fails.
*/
public void testCoordination() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
createTable("testCoordination", "(field1 int) ENGINE=InnoDB");
Connection conn1 = null;
Connection conn2 = null;
XAConnection xaConn1 = null;
XAConnection xaConn2 = null;
try {
xaConn1 = getXAConnection();
XAResource xaRes1 = xaConn1.getXAResource();
conn1 = xaConn1.getConnection();
xaConn2 = getXAConnection();
XAResource xaRes2 = xaConn2.getXAResource();
conn2 = xaConn2.getConnection();
Xid xid1 = createXid();
Xid xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.commit(xid1, false);
xaRes2.commit(xid2, false);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(this.rs.next());
assertEquals(1, this.rs.getInt(1));
assertTrue(this.rs.next());
assertEquals(2, this.rs.getInt(1));
this.stmt.executeUpdate("TRUNCATE TABLE testCoordination");
//
// Now test rollback
//
xid1 = createXid();
xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
// ensure visibility
assertEquals("1", getSingleIndexedValueWithQuery(conn1, 1, "SELECT field1 FROM testCoordination WHERE field1=1").toString());
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
// ensure visibility
assertEquals("2", getSingleIndexedValueWithQuery(conn2, 1, "SELECT field1 FROM testCoordination WHERE field1=2").toString());
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.rollback(xid1);
xaRes2.rollback(xid2);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(!this.rs.next());
} finally {
if (conn1 != null) {
conn1.close();
}
if (conn2 != null) {
conn2.close();
}
if (xaConn1 != null) {
xaConn1.close();
}
if (xaConn2 != null) {
xaConn2.close();
}
}
}Example 96
| Project: Banc-master File: XATest.java View source code |
/**
* Tests that simple distributed transaction processing works as expected.
*
* @throws Exception
* if the test fails.
*/
public void testCoordination() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
createTable("testCoordination", "(field1 int) ENGINE=InnoDB");
Connection conn1 = null;
Connection conn2 = null;
XAConnection xaConn1 = null;
XAConnection xaConn2 = null;
try {
xaConn1 = getXAConnection();
XAResource xaRes1 = xaConn1.getXAResource();
conn1 = xaConn1.getConnection();
xaConn2 = getXAConnection();
XAResource xaRes2 = xaConn2.getXAResource();
conn2 = xaConn2.getConnection();
Xid xid1 = createXid();
Xid xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.commit(xid1, false);
xaRes2.commit(xid2, false);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(this.rs.next());
assertEquals(1, this.rs.getInt(1));
assertTrue(this.rs.next());
assertEquals(2, this.rs.getInt(1));
this.stmt.executeUpdate("TRUNCATE TABLE testCoordination");
//
// Now test rollback
//
xid1 = createXid();
xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
// ensure visibility
assertEquals("1", getSingleIndexedValueWithQuery(conn1, 1, "SELECT field1 FROM testCoordination WHERE field1=1").toString());
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
// ensure visibility
assertEquals("2", getSingleIndexedValueWithQuery(conn2, 1, "SELECT field1 FROM testCoordination WHERE field1=2").toString());
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.rollback(xid1);
xaRes2.rollback(xid2);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(!this.rs.next());
} finally {
if (conn1 != null) {
conn1.close();
}
if (conn2 != null) {
conn2.close();
}
if (xaConn1 != null) {
xaConn1.close();
}
if (xaConn2 != null) {
xaConn2.close();
}
}
}Example 97
| Project: Bescrewed-master File: XATest.java View source code |
/**
* Tests that simple distributed transaction processing works as expected.
*
* @throws Exception
* if the test fails.
*/
public void testCoordination() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
createTable("testCoordination", "(field1 int) ENGINE=InnoDB");
Connection conn1 = null;
Connection conn2 = null;
XAConnection xaConn1 = null;
XAConnection xaConn2 = null;
try {
xaConn1 = getXAConnection();
XAResource xaRes1 = xaConn1.getXAResource();
conn1 = xaConn1.getConnection();
xaConn2 = getXAConnection();
XAResource xaRes2 = xaConn2.getXAResource();
conn2 = xaConn2.getConnection();
Xid xid1 = createXid();
Xid xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.commit(xid1, false);
xaRes2.commit(xid2, false);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(this.rs.next());
assertEquals(1, this.rs.getInt(1));
assertTrue(this.rs.next());
assertEquals(2, this.rs.getInt(1));
this.stmt.executeUpdate("TRUNCATE TABLE testCoordination");
//
// Now test rollback
//
xid1 = createXid();
xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
// ensure visibility
assertEquals("1", getSingleIndexedValueWithQuery(conn1, 1, "SELECT field1 FROM testCoordination WHERE field1=1").toString());
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
// ensure visibility
assertEquals("2", getSingleIndexedValueWithQuery(conn2, 1, "SELECT field1 FROM testCoordination WHERE field1=2").toString());
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.rollback(xid1);
xaRes2.rollback(xid2);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(!this.rs.next());
} finally {
if (conn1 != null) {
conn1.close();
}
if (conn2 != null) {
conn2.close();
}
if (xaConn1 != null) {
xaConn1.close();
}
if (xaConn2 != null) {
xaConn2.close();
}
}
}Example 98
| Project: castor-master File: XAResourceImpl.java View source code |
public synchronized void start(final Xid xid, final int flags) throws XAException {
// General checks.
if (xid == null) {
throw new XAException(XAException.XAER_INVAL);
}
switch(flags) {
case TMNOFLAGS:
TransactionContext tx1;
// for a given Xid
synchronized (_engine.getXATransactions()) {
tx1 = _engine.getXATransactions().get(xid);
if (tx1 == null) {
tx1 = _xaSource.createTransactionContext(xid);
_engine.getXATransactions().put(xid, tx1);
}
}
// Associate XAResource with transaction
_xaSource.setTransactionContext(tx1);
break;
case TMJOIN:
case TMRESUME:
TransactionContext tx2 = _engine.getXATransactions().get(xid);
if ((tx2 == null) || !tx2.isOpen()) {
throw new XAException(XAException.XAER_NOTA);
}
// Associate XAResource with transaction
_xaSource.setTransactionContext(tx2);
break;
default:
// No other flags supported in start().
throw new XAException(XAException.XAER_INVAL);
}
}Example 99
| Project: cloudera-cli-scripts-master File: XATest.java View source code |
/**
* Tests that simple distributed transaction processing works as expected.
*
* @throws Exception
* if the test fails.
*/
public void testCoordination() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
createTable("testCoordination", "(field1 int) ENGINE=InnoDB");
Connection conn1 = null;
Connection conn2 = null;
XAConnection xaConn1 = null;
XAConnection xaConn2 = null;
try {
xaConn1 = getXAConnection();
XAResource xaRes1 = xaConn1.getXAResource();
conn1 = xaConn1.getConnection();
xaConn2 = getXAConnection();
XAResource xaRes2 = xaConn2.getXAResource();
conn2 = xaConn2.getConnection();
Xid xid1 = createXid();
Xid xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.commit(xid1, false);
xaRes2.commit(xid2, false);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(this.rs.next());
assertEquals(1, this.rs.getInt(1));
assertTrue(this.rs.next());
assertEquals(2, this.rs.getInt(1));
this.stmt.executeUpdate("TRUNCATE TABLE testCoordination");
//
// Now test rollback
//
xid1 = createXid();
xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
// ensure visibility
assertEquals("1", getSingleIndexedValueWithQuery(conn1, 1, "SELECT field1 FROM testCoordination WHERE field1=1").toString());
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
// ensure visibility
assertEquals("2", getSingleIndexedValueWithQuery(conn2, 1, "SELECT field1 FROM testCoordination WHERE field1=2").toString());
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.rollback(xid1);
xaRes2.rollback(xid2);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(!this.rs.next());
} finally {
if (conn1 != null) {
conn1.close();
}
if (conn2 != null) {
conn2.close();
}
if (xaConn1 != null) {
xaConn1.close();
}
if (xaConn2 != null) {
xaConn2.close();
}
}
}Example 100
| Project: GestionBibliotheque-master File: XATest.java View source code |
/**
* Tests that simple distributed transaction processing works as expected.
*
* @throws Exception
* if the test fails.
*/
public void testCoordination() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
createTable("testCoordination", "(field1 int) ENGINE=InnoDB");
Connection conn1 = null;
Connection conn2 = null;
XAConnection xaConn1 = null;
XAConnection xaConn2 = null;
try {
xaConn1 = getXAConnection();
XAResource xaRes1 = xaConn1.getXAResource();
conn1 = xaConn1.getConnection();
xaConn2 = getXAConnection();
XAResource xaRes2 = xaConn2.getXAResource();
conn2 = xaConn2.getConnection();
Xid xid1 = createXid();
Xid xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.commit(xid1, false);
xaRes2.commit(xid2, false);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(this.rs.next());
assertEquals(1, this.rs.getInt(1));
assertTrue(this.rs.next());
assertEquals(2, this.rs.getInt(1));
this.stmt.executeUpdate("TRUNCATE TABLE testCoordination");
//
// Now test rollback
//
xid1 = createXid();
xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
// ensure visibility
assertEquals("1", getSingleIndexedValueWithQuery(conn1, 1, "SELECT field1 FROM testCoordination WHERE field1=1").toString());
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
// ensure visibility
assertEquals("2", getSingleIndexedValueWithQuery(conn2, 1, "SELECT field1 FROM testCoordination WHERE field1=2").toString());
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.rollback(xid1);
xaRes2.rollback(xid2);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(!this.rs.next());
} finally {
if (conn1 != null) {
conn1.close();
}
if (conn2 != null) {
conn2.close();
}
if (xaConn1 != null) {
xaConn1.close();
}
if (xaConn2 != null) {
xaConn2.close();
}
}
}Example 101
| Project: gestion_autoecole_xelais-master File: XATest.java View source code |
/**
* Tests that simple distributed transaction processing works as expected.
*
* @throws Exception
* if the test fails.
*/
public void testCoordination() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
createTable("testCoordination", "(field1 int) ENGINE=InnoDB");
Connection conn1 = null;
Connection conn2 = null;
XAConnection xaConn1 = null;
XAConnection xaConn2 = null;
try {
xaConn1 = getXAConnection();
XAResource xaRes1 = xaConn1.getXAResource();
conn1 = xaConn1.getConnection();
xaConn2 = getXAConnection();
XAResource xaRes2 = xaConn2.getXAResource();
conn2 = xaConn2.getConnection();
Xid xid1 = createXid();
Xid xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.commit(xid1, false);
xaRes2.commit(xid2, false);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(this.rs.next());
assertEquals(1, this.rs.getInt(1));
assertTrue(this.rs.next());
assertEquals(2, this.rs.getInt(1));
this.stmt.executeUpdate("TRUNCATE TABLE testCoordination");
//
// Now test rollback
//
xid1 = createXid();
xid2 = createXid(xid1);
xaRes1.start(xid1, XAResource.TMNOFLAGS);
xaRes2.start(xid2, XAResource.TMNOFLAGS);
conn1.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (1)");
// ensure visibility
assertEquals("1", getSingleIndexedValueWithQuery(conn1, 1, "SELECT field1 FROM testCoordination WHERE field1=1").toString());
conn2.createStatement().executeUpdate("INSERT INTO testCoordination VALUES (2)");
// ensure visibility
assertEquals("2", getSingleIndexedValueWithQuery(conn2, 1, "SELECT field1 FROM testCoordination WHERE field1=2").toString());
xaRes1.end(xid1, XAResource.TMSUCCESS);
xaRes2.end(xid2, XAResource.TMSUCCESS);
xaRes1.prepare(xid1);
xaRes2.prepare(xid2);
xaRes1.rollback(xid1);
xaRes2.rollback(xid2);
this.rs = this.stmt.executeQuery("SELECT field1 FROM testCoordination ORDER BY field1");
assertTrue(!this.rs.next());
} finally {
if (conn1 != null) {
conn1.close();
}
if (conn2 != null) {
conn2.close();
}
if (xaConn1 != null) {
xaConn1.close();
}
if (xaConn2 != null) {
xaConn2.close();
}
}
}