Re: Patouille ear, ejb, web-services et Glassfish
Nicolas Delsaux <[email protected]> Thu, 31 Mar 2011 17:46:43 +0200
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <[email protected]> |
2011/3/31 Nicolas Delsaux <[email protected]>: > Salut, > malgré la simplification de JEE, j'ai l'impression d'être encore trop > bête pour comprendre. > J'essaye de faire un EJB/web-service qui soit embarqué dans un EAR, le > tout avec maven (je sais pas si ça joue, mais ça peut, alors je > préfère le dire). > A priori, tout va bien : je crée mon EJB, je lui mets les bonnes > annotations, j'ai ma palanquée de modules maven pour créer le war et > l'ear qui va le contenir, quand je compile, ça compile sans problème. > Je me retrouve donc avec un EAR que j'uploade dans mon glassfish (oui, > je sais, à terme, il faudra sans doute faire en sorte que ce soit > automatiquement uploadé grâce à maven, mais pour l'instant > j'expérimente). > Quand j'uploade mon EAR, Glassfish l'accepte sans problème, la preuve : > > E:\java-ext\glassfish3>bin\asadmin list-components --long=true > --subcomponents --resources > NAME TYPE STATUS > application-ear-0.0.1-SNAPSHOT <ear, ejb, webservices, web> enabled > ejb-entities-0.0.1-SNAPSHOT.war <WebModule> > Command list-components executed successfully. > > Seulement, dans mon war ejb-entities, j'ai un ejb qui s'appelle > TemplateEJB, qui devrait apparaître, non ? > Et si il n'appraît pas, d'où est-ce que ça peut venir ? > Bon, je me réponds, essentiellement parce que je pense que ça va plaire (ou pas) à Alexis ;-) Donc, j'ai pas mal galéré là-dessus, et finallement, j'ai essayé une autre méthode. J'ai créé le fameux web-service HelloWorld : @WebService public class Hello { public String hello(String world) { return "Salut, "+world+" !"; } } Lui, pas de problème, je le déploie bien dans Glassfish, et je peux même tester le web-service avec la super page magique de Glassfish (très pratique, cette page). ejb-entities-0.0.1-SNAPSHOT.war [ejb, jpa, web, webservices] ----------- ----------- Launch ejb-entities-0.0.1-SNAPSHOT.war default Servlet ejb-entities-0.0.1-SNAPSHOT.war jsp Servlet ejb-entities-0.0.1-SNAPSHOT.war TemplateEJB StatelessSessionBean ejb-entities-0.0.1-SNAPSHOT.war Hello Servlet View Endpoint Donc, ensuite, j'en fais un EJB stateless en rajoutant @Stateless. Et là, surprise : ejb-entities-0.0.1-SNAPSHOT.war [ejb, jpa, web, webservices] ----------- ----------- Launch ejb-entities-0.0.1-SNAPSHOT.war default Servlet ejb-entities-0.0.1-SNAPSHOT.war jsp Servlet ejb-entities-0.0.1-SNAPSHOT.war TemplateEJB StatelessSessionBean ejb-entities-0.0.1-SNAPSHOT.war Hello StatelessSessionBean Vous voyez comme Hello est devenu un StatelessSessionBean sans possibilité d'interaction ? Heureusement, un tour dans les logs m'indique qu'Hello est quand même déployé : EJB Endpoint deployed application-ear-0.0.1-SNAPSHOT listening at address at http://le_nom_windows_de_ma_machine_qui_m_a_soule_pendant_deux_heures:8080/HelloService/Hello Bon, par contre, il semble que je perde la possibilité de le tester. Mais alors, vous vous dites que mon autre EJB est bien déployé ... Ben c'est une autre salade. En fouillant encore dans les logs, je suis tombé là-dessus : [#|2011-03-31T17:13:16.637+0200|WARNING|glassfish3.1|com.sun.xml.ws.transport.http.servlet.ServletAdapter|_ThreadID=20;_ThreadName=Thread-1;|Container org.glassfish.webservices.JAXWSContainer@9bd714 doesn't support class com.sun.xml.ws.api.server.Module|#] C'est louche, hein ? Et en bonus, ça semble correspondre à un vieux bug relatif à uen classe de ce "pauvre" Koshuke : http://www.docjar.com/docs/api/com/sun/xml/ws/api/server/Module.html Alors maintenant je fais quoi ? Ben j'en sais rien. Me dites pas que je vais devoir faire des classes non EJB pour uy reproduire les méthodes des EJBs en les injectant, parce que ça va me faire de la peine. -- Nicolas Delsaux