Hashtable<String, String> env = new Hashtable<>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "localhost:1099");
Context ctx = new InitialContext(env);
ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup("XAConnectionFactory");
XAConnection connection = ((XAConnectionFactory) connectionFactory).createXAConnection();
XASession session = connection.createXASession();
session.getXAResource().start(xid, XAResource.TMNOFLAGS);
Destination destination = (Destination) ctx.lookup("queue/exampleQueue");
MessageProducer producer = session.createProducer(destination);
Message message = session.createMessage();
message.setStringProperty("key", "value");
producer.send(message);
session.getXAResource().end(xid, XAResource.TMSUCCESS);
session.getXAResource().prepare(xid);
session.getXAResource().commit(xid, false);
session.close();
connection.close();
<connector name="in-vm">
<factory-class>org.hornetq.core.remoting.impl.invm.InVMConnectorFactory</factory-class>
</connector>
<transaction-manager-locator-class-name>org.jnp.interfaces.NamingContextFactory</transaction-manager-locator-class-name>
<transaction-locator-class-name>org.hornetq.core.transaction.impl.HornetQTransactionManagerLocator</transaction-locator-class-name>
<persistence-enabled>true</persistence-enabled>