Appeler EJB3 asynchrone sous JBoss
Voici une façon simple de faire un EJB3 asynchrone dans votre application.
Il faut utiliser la classe AsyncUtils disponible dans jboss-ejb3-common.jar qui doit être dans le répertoire common\lib\ de votre Jboss.
Si vous utulisez Maven, vous pourvez l'inclure dans le pom :
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-common</artifactId>
<version>1.0.2</version>
<scope>provided</scope>
</dependency>
Pour appeler une méthode en asynchrone, vous devez faire ça:
Injecter normalement votre EJB dans votre service
@EJB
private MonService monService;
Ensuite dans votre code, quand vous avez besoin d'appeler ce service en asynchrone, faites:
MonService monServiceAsynch = AsyncUtils.mixinAsync(monService);
Ceci permet de créer un EJB asynchrone à partir d'un EJB "normal".
Il ne reste plus qu'à appeller la méthode du service :
monServiceAsync.maMethode();
Si vous avez besoin de la réponse vous pouvez utiliser la méthode getFutureResult.