@Test public void testXASimple() throws Exception { XAConnection connection = xaFactory.createXAConnection(); Collection<Session> sessions = new LinkedList<>(); for (int i = 0; i < 10; i++) { XASession session = connection.createXASession(); session.getXAResource().start(newXID(), XAResource.TMNOFLAGS); sessions.add(session); } connection.close(); }
try (XAConnection xaconnection = xaFactory.createXAConnection()) { Xid xid = newXID();
@Test public void testXAPrepare() throws Exception { try { XAConnection connection = xaFactory.createXAConnection(); XASession xasession = connection.createXASession(); Xid xid = newXID(); xasession.getXAResource().start(xid, XAResource.TMNOFLAGS); Queue queue = xasession.createQueue(queueName); MessageProducer producer = xasession.createProducer(queue); producer.send(xasession.createTextMessage("hello")); producer.send(xasession.createTextMessage("hello")); xasession.getXAResource().end(xid, XAResource.TMSUCCESS); xasession.getXAResource().prepare(xid); connection.close(); System.err.println("Done!!!"); } catch (Exception e) { e.printStackTrace(); } }
try (XAConnection xaconnection = xaFactory.createXAConnection()) { Xid xid = newXID();
try (XAConnection xaconnection = xaFactory.createXAConnection()) { xaconnection.start();
@Test public void testXAResourceCommittedRemoved() throws Exception { Queue queue = null; Xid xid = newXID(); try (XAConnection xaconnection = xaFactory.createXAConnection()) { XASession session = xaconnection.createXASession(); queue = session.createQueue(queueName); session.getXAResource().start(xid, XAResource.TMNOFLAGS); MessageProducer producer = session.createProducer(queue); producer.send(session.createTextMessage("xa message")); session.getXAResource().end(xid, XAResource.TMSUCCESS); session.getXAResource().commit(xid, true); } XidImpl xid1 = new XidImpl(xid); Transaction transaction = server.getResourceManager().getTransaction(xid1); assertNull(transaction); }
@Test public void testXAResourceRolledBackRemoved() throws Exception { Queue queue = null; Xid xid = newXID(); try (XAConnection xaconnection = xaFactory.createXAConnection()) { XASession session = xaconnection.createXASession(); queue = session.createQueue(queueName); session.getXAResource().start(xid, XAResource.TMNOFLAGS); MessageProducer producer = session.createProducer(queue); producer.send(session.createTextMessage("xa message")); session.getXAResource().end(xid, XAResource.TMSUCCESS); session.getXAResource().rollback(xid); } XidImpl xid1 = new XidImpl(xid); Transaction transaction = server.getResourceManager().getTransaction(xid1); assertNull(transaction); }
@Test public void testXAResourceRolledBackSuspendedNotRemoved() throws Exception { Queue queue = null; Xid xid = newXID(); try (XAConnection xaconnection = xaFactory.createXAConnection()) { XASession session = xaconnection.createXASession(); queue = session.createQueue(queueName); session.getXAResource().start(xid, XAResource.TMNOFLAGS); session.getXAResource().end(xid, XAResource.TMSUSPEND); XidImpl xid1 = new XidImpl(xid); Transaction transaction = server.getResourceManager().getTransaction(xid1); //directly suspend the tx transaction.suspend(); session.getXAResource().rollback(xid); } catch (XAException ex) { //ignore } finally { XidImpl xid1 = new XidImpl(xid); Transaction transaction = server.getResourceManager().getTransaction(xid1); assertNotNull(transaction); } }
@Test public void testXAResourceCommitSuspendedNotRemoved() throws Exception { Queue queue = null; Xid xid = newXID(); try (XAConnection xaconnection = xaFactory.createXAConnection()) { XASession session = xaconnection.createXASession(); queue = session.createQueue(queueName); session.getXAResource().start(xid, XAResource.TMNOFLAGS); session.getXAResource().end(xid, XAResource.TMSUSPEND); XidImpl xid1 = new XidImpl(xid); Transaction transaction = server.getResourceManager().getTransaction(xid1); //amq5.x doesn't pass suspend flags to broker, //directly suspend the tx transaction.suspend(); session.getXAResource().commit(xid, true); } catch (XAException ex) { //ignore } finally { XidImpl xid1 = new XidImpl(xid); Transaction transaction = server.getResourceManager().getTransaction(xid1); assertNotNull(transaction); } }