Enterprise Java Beans
Les EJB pour Enterprise Java Beans sont un standard de la pateforme JavaEE pour créer des composants serveur.
Projet serveur
Création du projet
Pour créer le projet serveur, lancez IntelliJ IDEA et créer un nouveau projet en utilisant le template Java Entreprise.
Dans le choix des dépendances, cochez ensuite Enterprise Java Beans (EJB) ainsi que Servlet :
Terminez ensuite la création de votre projet en renseignant et un nom et un GroupId.
Création des EJBs
Maintenant que le serveur est configuré nous pouvons créer notre premier EJB. Pour ce faire créez un package sessionBeans. Dans ce package créez une interface pour votre EJB :
@Remote
public interface GestionContactRemote {
public String coucouContact(String nomContact);
}
Créez ensuite votre classe EJB qui implémente cette interface :
@Stateless(mappedName="ContactBean")
public class GestionContactBean implements GestionContactRemote {
public String coucouContact(String nomContact) {
return "Coucou, "+nomContact;
}
}
Une fois ceci fait, lancez votre projet à l'aide de la Run Config créée plus tôt. Regardez ensuite les logs du serveur Wildfly dans l'interface d'IntelliJ IDEA, vous devriez y voir une ligne affirmant que votre EJB a bien été detecté et ajouté à l'annuaire JNDI. Copiez l'URL qui commence par EJB et gardez là dans un bloc note, elle sera utile plus tard.
Projet Client EJB
Configuration du projet
Pour le client EJB, créez un nouveau projet IntelliJ, cette fois en utilisant le template Maven et en utilisant l'archétype Quickstart. Une fois votre projet généré, rajoutez la dépendance suivante dans votre fichier pom.xml
:
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-ejb-client-bom</artifactId>
<version>21.0.0.Final</version>
<type>pom</type>
</dependency>
Mettez à jours vos dépendances Maven, puis ajoutez une Run Config d'application Java normale.
Récupérer les EJB
Dans un premier temps, il faut créer un package sessionBean directement dans le dossier de sources java
.
Dans ce package, copiez votre interface GestionContactRemote
et retirez lui l'annotation @Remote
.
Dans la méthode Main ajoutez d'abord le code suivant, afin de configurer la connexion EJB :
final Hashtable<String, String> jndiProperties = new Hashtable<>();
jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
if(Boolean.getBoolean("http")) {
jndiProperties.put(Context.PROVIDER_URL,"http://localhost:8080/wildfly-services");
} else {
jndiProperties.put(Context.PROVIDER_URL,"remote+http://localhost:8080");
}
final Context context = new InitialContext(jndiProperties);
Ensuite pour récupérer votre EJB, ajouter ce code, en modifiant la string passée à la méthode lookup()
par l'URL ejb que nous avons noté tout à l'heure :
final GestionContactRemote ejb = (GestionContactRemote) context.lookup("ejb:/efrei-m1-jakartaee-tp4-ejb-1.0-SNAPSHOT/GestionContactBean!sessionBeans.GestionContactRemote");
Vous pouvez enfin tester votre EJB :
System.out.println(ejb.coucouContact("test"));
Si tout s'est bien passé, vous devriez observer les logs du client EJB dans votre console ainsi que votre afichage :