Async ejb

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/ejb/async-ejb/
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=AsyncClassBeanTestmvn test -Dtest=AsyncMethodBeanTest

AsyncClassBeanTest

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() {
    File[] jars = Maven.resolver().loadPomFromFile("pom.xml")
            .resolve("com.jayway.awaitility:awaitility")
            .withTransitivity().asFile();

    return ShrinkWrap.create(WebArchive.class)
            .addAsLibraries(jars)
            .addClasses(MyAsyncBeanClassLevel.class)
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void should_return_async_sum() throws ExecutionException, InterruptedException {
    final Integer numberOne = 5;
    final Integer numberTwo = 10;


    long start = System.currentTimeMillis();
    final Future<Integer> resultFuture = bean.addNumbers(numberOne, numberTwo);

    assertThat(resultFuture.isDone(), is(equalTo(false)));
    assertThat(System.currentTimeMillis() - start, is(lessThan(MyAsyncBeanMethodLevel.AWAIT)));

    await().until(new Callable<Boolean>() {
        @Override
        public Boolean call() throws Exception {
            return resultFuture.isDone();
        }
    });

    assertThat(resultFuture.get(), is(equalTo(numberOne + numberTwo)));
}

AsyncMethodBeanTest

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() {
    File[] jars = Maven.resolver().loadPomFromFile("pom.xml")
            .resolve("com.jayway.awaitility:awaitility")
            .withTransitivity().asFile();

    return ShrinkWrap.create(WebArchive.class)
            .addAsLibraries(jars)
            .addClasses(MyAsyncBeanMethodLevel.class)
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void should_return_async_sum() throws ExecutionException, InterruptedException {
    final Integer numberOne = 5;
    final Integer numberTwo = 10;


    long start = System.currentTimeMillis();
    final Future<Integer> resultFuture = bean.addNumbers(numberOne, numberTwo);

    assertThat(resultFuture.isDone(), is(equalTo(false)));
    assertThat(System.currentTimeMillis() - start, is(lessThan(MyAsyncBeanMethodLevel.AWAIT)));

    await().until(new Callable<Boolean>() {
        @Override
        public Boolean call() throws Exception {
            return resultFuture.isDone();
        }
    });

    assertThat(resultFuture.get(), is(equalTo(numberOne + numberTwo)));
}

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

  • Jul 15, 2014: Removed default header by Roberto Cortez
  • Dec 07, 2013: Wrong class name by kubamarchwicki
  • Dec 07, 2013: #75 asynchronous ejb test by kubamarchwicki
  • Nov 09, 2013: Adding class-level and method-level annotations by Arun Gupta
  • Nov 09, 2013: Adding @asynchronous on method - works on both wildfly and glassfish by Arun Gupta
  • Nov 09, 2013: New sample for asynchronous ejb - need to add different use cases by Arun Gupta
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/ejb/async-ejb/

Do the changes as you see fit and send a pull request!

Good Luck!