Transaction suspended = TransactionManagerLocator.getInstance().locate().suspend();
try
{
ConnectionFactory mcf =
(ConnectionFactory)initialContext.lookup("java:/JCAConnectionFactory");
Connection conn = mcf.createConnection();
conn.start();
UserTransaction ut = ServerManagement.getUserTransaction();
ut.begin();
Session s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer p = s.createProducer(queue);
Message m = s.createTextMessage("one");
p.send(m);
ut.commit();
conn.close();
ConnectionFactory cf = (ConnectionFactory)initialContext.lookup("ConnectionFactory");
conn = cf.createConnection();
s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
TextMessage rm = (TextMessage)s.createConsumer(queue).receive(500);
assertEquals("one", rm.getText());
conn.close();
// make sure there's no active JTA transaction
assertNull(TransactionManagerLocator.getInstance().locate().getTransaction());
// send a message to the queue, using a JCA wrapper
mcf = (ConnectionFactory)initialContext.lookup("java:/JCAConnectionFactory");
conn = mcf.createConnection();
s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
p = s.createProducer(queue);
p.setDeliveryMode(DeliveryMode.PERSISTENT);
m = s.createTextMessage("one");
p.send(m);
conn.close();
// receive the message
cf = (ConnectionFactory)initialContext.lookup("/ConnectionFactory");
conn = cf.createConnection();
conn.start();
s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer c = s.createConsumer(queue);
rm = (TextMessage)c.receive(1000);