Olá Pessoal,
Estou com uma dúvida aparentemente muito simples. Deixem-me lhes contar o básico.
SO: Ubuntu 6.06
AppServer: JBoss 4.0.0
WebServer: Tomcat 5.x na porta 8084
Eu tenho duas aplicações. Uma no JBoss com o ListarProdutoBean e outra no Tomcat com o Servlet.
Meu objetivo é fazer com que o Servlet utilize um método do SessionBean que retorna uma lista de produtos. Porém não estou conseguindo nem acessar o SessionBean.
O Servlet recebe uma chamada e responde no doGet. Vejam o código resumido do método doGet:
Hashtable props = new Hashtable();
props.put(InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
props.put(InitialContext.PROVIDER_URL,"jnp://localhost:1099");
Context ctx = new InitialContext(props);
Object pobj = ctx.lookup("ListarProdutoBean"); /* LINHA DO ERRO DESCRITO ABAIXO */
ListarProdutoRemoteHome lphome = (ListarProdutoRemoteHome) PortableRemoteObject.narrow(
pobj,ListarProdutoRemoteHome.class);
ListarProdutoRemote lpremote = lphome.create();
Ele lança o seguinte erro no log do Tomcat, pois a exception é lançada no servlet.
javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: ejbs.categoria.listar.ListarProdutoRemoteHome (no security manager: RMI class loader disabled)]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:653)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:508)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at servlets.ActionServlet.doGet(ActionServlet.java:76) /* ESSA EH A LINHA DO ERRO, OLHAR CODIGO ACIMA */
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Parece ser a coisa mais simples do mundo, mas eu já fiz de tudo. Já troquei as interfaces para ver se o acesso via servlet era local; Já mudei o nome do bean; Já desconectei da internet (superstição); Já fiz o cast do objeto direto e falhou; Já fiz de tudo…
ajuda por favor, peço penico.