Jms xa

Run
How to run the sample
The source code for this sample can be found in the javaee7-samples GitHub repository. The first thing we need to do is to get the source by downloading the repository and then go into the samples folder:
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 test
Or you can run individual tests by executing one of the following:
mvn test -Dtest=UserManagerNonXATestmvn test -Dtest=AbstractUserManagerTestmvn test -Dtest=UserManagerXATest

Arquillian test for JMS XA

UserManagerNonXATest

Missing a description for the story. Add some javadoc to the TestClass. Show me how!
Missing a description for the deployment. Add some javadoc to the @Deployment method. Show me how!
@Deployment
public static WebArchive createDeployment()
{
    return createWebArchive().addClass(ConnectionFactoryProducer.class);
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@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());
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@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());
}

AbstractUserManagerTest

Missing a description for the story. Add some javadoc to the TestClass. Show me how!

UserManagerXATest

Missing a description for the story. Add some javadoc to the TestClass. Show me how!
Missing a description for the deployment. Add some javadoc to the @Deployment method. Show me how!
@Deployment
public static WebArchive createDeployment()
{
    return createWebArchive().addClass(XAConnectionFactoryProducer.class);
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@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());
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@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());
}

Share the Knowledge

Find this sample useful? Share on

There's a lot more about JavaEE to cover. If you're ready to learn more, check out the other available samples.

Help Improve

Find a bug in the sample? Something missing? You can fix it by editing the source, making the correction and sending a pull request. Or report the problem to the issue tracker

Recent Changelog

  • Oct 05, 2014: #252 fixed arquillian configuration for the jobs by John D. Ament
  • Sep 30, 2014: #254 added examples w/ new jms apis by John D. Ament
  • Jul 15, 2014: Removed header license. the licensing is now referenced in the license file in the root of the project by Roberto Cortez
  • Dec 04, 2013: #139 arquillian test for jms xa by bernard
How to help improve this sample
The source code for this sample can be found in the javaee7-samples GitHub repository. The first thing you need to do is to get the source by downloading the repository and then go into the samples folder:
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!