Bonjour,
Dans un projet Maven, un module construit et déploie un ear dans Glassfish 3.1.
Un autre module produit un autre code et durant la phase de test surefire de Maven, souhaite appeler les services d'un des EJBs précédemment déployés.
Initialement, l'exécution échoue sur
Un classique, car les jars clients gf-client.jar, appserv-rt.jar que l'on emploie habituellement ne sont pas dans le classpath.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Caused by: java.lang.RuntimeException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory
Mais voilà: avec la version 3.1 de Glassfish, il ne servirait à rien de les y mettre puisqu'ils sont vides, ou presque: il ne contiennent aucune des classes utiles à l'invocation des EJBs depuis un client.
La procédure officielle consiste maintenant à se faire générer un environnement pour applications clientes, par le biais de la commande appclient du répertoire bin de Glassfish. Celui-ci produit un jar, appclient.jar.
Mais ce jar n'est pas intégrable en tant que tel. Il s'agit plutôt d'un zip, à dézipper quelque-part. Là, il produit un environnement qui a cet aspect:
qui permet ensuite de lancer une application cliente en substitution d'une commande Java.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 - appclient ----- glassfish ---------- bin ---------- domains ---------- lib ---------- modules ----- javadb ----- mq
Voilà qui est une manière de faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 C:\Logiciels\appclient\glassfish\bin>appclient Usage : appclient [ <classfile> | -client <appjar> ] [-mainclass <appClass-name>|-name <display-name>] [-xml <xml>] [-textauth] [-user <username>] [-password <password>|-passwordfile <password-file>] [-targetserver host[:port][,host[:port]...] [app-args] or : appclient [ <valid JVM options and valid ACC options> ] [ <appClass-name> | -jar <appjar> ] [app args]
Les jars ne sont plus nécessaires (nous ignorons lesquels et combien doivent s'associer au client pour démarrer l'application: Glassfish s'en occupe tout seul) mais alors...
... moi, je suis dans la phase de test de Maven.
pour que ses tests unitaires fonctionnent, il ne doit plus les lancer via une commande Java, mais appclient, donc, cette fois.
Comment puis-je lui le demander?
En vous remerciant,
Grunt.
Partager