Exercice 2 - Implémentation d'un client (lourd) Java⚓︎
Nous allons maintenant implémenter la brique "Appli Java" du schéma suivant :
1. Création du projet Java⚓︎
Nous allons pour cela créer un projet Java indépendant, qui va appeler cet EJB, et plus précisément l'interface remote.
Depuis la vue Enterprise Explorer, créer un nouveau Projet Java (sélectionner Java Project) nommé GestionNotesClient, sélectionner la bonne JDK, décocher la case "Create module-info.java file", et enfin cliquer sur
Nous allons avoir besoin du modèle (c'est-à-dire des beans), ainsi que de l'interface remote. Pour cela, nous allons ajouter le projet GestionNotesEJB dans le classpath du projet GestionNotesClient. Nous verrons dans une prochaine version comment faire pour ne pas avoir à importer tout le projet EJB :
Dans ce projet, créer la classe fr.univtours.polytech.gestionnotes.client.NoteClient
, en cochant la case pour avoir la méthode main
. Cette classe va contenir une méthode getBusiness
permettant de manipuler l'EJB session, via son nom JNDI. La méthode main
va appeler cette méthode, et effectuer quelques opérations pour tester le bon fonctionnement de l'EJB.
Pour accéder à l'annuaire JNDI à distance, il faut créer un object Context
paramétré comme indiqué ci-dessous. On utilise ensuite sur cet objet la méthode lookup(url)
qui permet d'accéder à l'objet à distance (depuis une autre JVM, éventuellement sur un autre serveur) uniquement en connaissant son nom JNDI (c'est ce qui est contenu dans la variable url
).
☕ Code Java - NoteClient - La méthode getBusiness() | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
- Attention à adapter le port ici si vous l'avez modifié.
- Cette URL doit exactement correspondre à celle apparaissant dans les logs du Serveur WildFly.
☕ Code Java - NoteClient - La méthode main() | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
2. Test de l'EJB session avec le projet client⚓︎
Pour tester ce client, il suffit de faire un clic droit sur la classe NoteClient
, et de :material-mouse:Run As > Java Application
. En faisant cela, on obtient l'erreur suivante :
java.lang.ClassNotFoundException: org.wildfly.naming.client.WildFlyInitialContextFactory
En effet, si on utilise comme client de l'EJB une projet Java classique, il faut importer un JAR fourni par WildFly. Dans le classpath du projet ClientJava, il faut ajouter le JAR présent ici : 📄<WILDFLY_HOME>/bin/client/jboss-client.jar
(il faut cliquer sur
Lorsqu'on relance le test, on obtient le résultat suivant :
--- Notes ---
Capitaine Haddock : 10.5
Professeur Tournesol : 20.0
La moyenne est de 15.25
On peut également vérifier que les deux notes ont bien été ajoutées dans la table en BDD.
Warning
Attention, à chaque fois qu'on relance le client Java, les notes du Capitaine Haddock et du Professeur Tournesol sont ajoutées dans la liste des notes.
En revanche, si vous avez laissé la configuration "drop and create" dans le 📄persistence.xml
, à chaque redémarrage du serveur, ou à chaque fois que l'application est redéployée, la table est vidée.