Usar um Bean num Servlet

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.

Não não,
desculpe se dei a entender isso.

O SessionBean tá no JBoss.
Pra ser mais especifico, o jar tá na pasta /server/default/deploy

Veja:
aplicação WEB no Tomcat
e aplicação EJB no JBoss.

Eu sei que o JBoss tem um conteiner web também. :wink:
Mas eu queria que rodasse assim. Porque quando eu sair desta máquina e for implementar na máquina cliente, esta vai rodar apenas tomcat.

Isso.
Meu objetivo FINAL é esse.
Entretanto eu estou com um problema muito simples que eu não estou conseguindo resolver por falta de conhecimento sobre o seguinte erro (listado acima).
Linha de Erro:

Erro:

javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: ejbs.categoria.listar.ListarProdutoRemoteHome (no security manager: RMI class loader disabled)]

Esse erro se repete, caso eu use a aplicação no Tomcat, no JBoss ou até mesmo numa classe que tenha static void main e tente imprimir no console.
Meu problema atual não é o relacionamento entre JBoss e Tomcat.

Pelo que entendi, vc ta colocando um SessionBean no Tomcat. É isso?

Se for isso, o motivo é simples:
O Tomcat é somente um WEB Container…portanto, nao tem como criar EJBs.
O JBoss é um Container WEB e EJB Container…

Espero ter ajudado

Ok, pelo que entendi, vc tem um servlet que está no Tomcat e o EJB que está no JBoss ou tanto o EJB como a Aplicacao WEB estão no JBOSS?

Entendi…o que vc quer é fazer uma integração entre o JBoss e o Tomcat.
Nunca fiz isso, mas de uma olhada nesse site.

www.jguru.com/faq/view.jsp?EID=385411