@Deployment
public static WebArchive createDeployment()
{
return createWebArchive().addClass(ConnectionFactoryProducer.class);
}
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
@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!