Salve a tutti,
ho un EJB su Glassfish v3.1. Ho creato un client ad hoc come applicazione java normale (semplicemente includendo la libreria gf-client.jar) e funziona alla grande. Se provo ad accederci da una servlet che si trova su un server Tomcat v6.0.32 non va. In realtà è una quasi faq visto che su internet hanno tutti lo stesso problema, ma non c'è una soluzione che sia una... Ho seguito questo semplice tutorial (ufficiale!!!!) http://glassfish.java.net/javaee5/ej...ainerRemoteEJB ma quando tento di ottenere l'InitialContext ricevo questo errore:
Pensando che fosse un bug di Tomcat ho provato a farlo girare anche su Tomcat v7.0.19 ma stessa storia (in realtà il log qui sopra è proprio di Tomcat 7).codice:javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory] at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:657) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) at javax.naming.InitialContext.init(InitialContext.java:223) at javax.naming.InitialContext.<init>(InitialContext.java:197) at mwt.j2ee.gescuola.client.TestServlet.process(TestServlet.java:47) at mwt.j2ee.gescuola.client.TestServlet.doGet(TestServlet.java:22) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:851) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:278) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:654) ... 23 more
Quella maledetta classe SerialInitContextFactory si trova in glassfish-naming.jar. Includendo anche questa libreria il risultato non cambia. Così ho provato a creare da codice un semplice oggetto di questa classe e guardacaso non va, mi dà lo stesso errore. Ho provato a crearmi una mia classe custom che estende dalla precedente: nulla.
E' possibile risolvere questa storia una volta per tutte? Sto diventando matto... :muro: