@Deployment
public static WebArchive createDeployment()
{
    return createWebArchive().addClass(ConnectionFactoryProducer.class);
}
git clone git://github.com/javaee-samples/javaee7-samples.git
cd javaee7-samples/jms/jms-xa/Now we are ready to start testing. You can run all the tests in this sample by executing:mvn testOr you can run individual tests by executing one of the following:mvn test -Dtest=UserManagerNonXATestmvn test -Dtest=AbstractUserManagerTestmvn test -Dtest=UserManagerXATest@Deployment
public static WebArchive createDeployment()
{
    return createWebArchive().addClass(ConnectionFactoryProducer.class);
}
@Test
public void emailAlreadyRegisteredNonXA() throws Exception
{
    deliveryStats.reset();
    assertEquals(0L, deliveryStats.getDeliveredMessagesCount());
    try {
        /**
         * This email is already in DB so we should get exception trying to register it.
         */
        userManager.register("jack@itcrowd.pl");
    } catch (Exception e) {
        logger.info("Got expected exception " + e);
    }
    try {
        ReceptionSynchronizer.waitFor(JMSMailman.class, "onMessage");
    } catch (AssertionError error) {
        logger.info("Got expected error " + error);
        logger.info("We're just making sure that we have waited long enough to let the message get to MDB");
    }
    assertEquals("Message should be delivered despite transaction rollback", 1L, deliveryStats.getDeliveredMessagesCount());
}
@Test
public void happyPathNonXA() throws Exception
{
    deliveryStats.reset();
    assertEquals(0L, deliveryStats.getDeliveredMessagesCount());
    userManager.register("bernard@itcrowd.pl");
    try {
        ReceptionSynchronizer.waitFor(JMSMailman.class, "onMessage");
    } catch (AssertionError error) {
        logger.info("Got expected error " + error);
        logger.info("We're just making sure that we have waited long enough to let the message get to MDB");
    }
    assertEquals(1L, deliveryStats.getDeliveredMessagesCount());
}
@Deployment
public static WebArchive createDeployment()
{
    return createWebArchive().addClass(XAConnectionFactoryProducer.class);
}
@Test
public void emailAlreadyRegisteredXA() throws Exception
{
    deliveryStats.reset();
    assertEquals(0L, deliveryStats.getDeliveredMessagesCount());
    try {
        /**
         * This email is already in DB so we should get exception trying to register it.
         */
        userManager.register("jack@itcrowd.pl");
    } catch (Exception e) {
        logger.info("Got expected exception " + e);
    }
    try {
        ReceptionSynchronizer.waitFor(JMSMailman.class, "onMessage");
        fail("Method should not have been invoked");
    } catch (AssertionError error) {
        logger.info("Got expected error " + error);
        logger.info("Message should not have been delivered due to transaction rollback");
    }
    assertEquals("Message should not be delivered due to transaction rollback", 0L, deliveryStats.getDeliveredMessagesCount());
}
@Test
public void happyPathXA() throws Exception
{
    deliveryStats.reset();
    assertEquals(0L, deliveryStats.getDeliveredMessagesCount());
    userManager.register("bernard@itcrowd.pl");
    ReceptionSynchronizer.waitFor(JMSMailman.class, "onMessage");
    assertEquals(1L, deliveryStats.getDeliveredMessagesCount());
}
There's a lot more about JavaEE to cover. If you're ready to learn more, check out the other available samples.
git clone git://github.com/javaee-samples/javaee7-samples.git
cd javaee7-samples/jms/jms-xa/Do the changes as you see fit and send a pull request!
Good Luck!