¿Cómo llamar a EJB desde Servlet? JBOSS ( TOMCAT)

Foramontano
28 de Julio del 2003
Hola a todos:

Estoy empezando mi "relación" con los EJBs. Hasta ahora he conseguido realizar satisfactoriamente una llamada a un EJB de sesión desde una cliente java(autónomo). Ahora me gustaría realizar la llamada al mismo EJB pero desde un cliente Web ( en mi caso desde un servlet). Én este caso estoy teniendo problemas y no consigo que se produzca la llamada.

Para más información os diré que trabajo con Tomcat4 integrado dentro de Jboss.

No sé si estará bien,pero hasta ahora lo que he hecho de especial en "la parte web" ( en los ficheros/directorios de Tomcat) es, en el fichero web.xml, añadir una referencia al EJB desplegado en Jboss.
...
<ejb-ref>
<description>Referencia externa al Hola
Mundo</description>
<ejb-ref-name>ejb/HolaHome</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>ejb.HolaHome</home>
<remote>ejb.Hola</remote>
</ejb-ref>
...
¿Es esto necesario, o al estar Tomcat integrado en Jboss hay que hacerlo de otra forma?¿Es en el directorio correspondiente de Tomcat donde se despliega la parte web, o es en el directorio deploy del jboss?

Por otra parte la parte "importante" de código del servlet sería:
...
Hola hola=null;
try {
Context ctx = new InitialContext();
System.out.println("Creo initial context");
HolaHome hh = (HolaHome)
javax.rmi.PortableRemoteObject.narrow (ctx.lookup("ejb/HolaHome"),HolaHome.class);
System.out.println("Se encontro Referencia del EJB!");
hola= hh.create();
..

¿Está esto bien planteado, o hay que hacerlo de otra forma?

En fin que si veis que hay algún(unos) conceptos que me fallan, comentádmelo.

Un saludo y gracias de antemano.

Karlus
28 de Julio del 2003
Hola,

yo estoy con este mismo problema. Bueno diria que peor que tu.

Te explico haber si entre los dos lo sacamos:
- Tengo un servlet pero no se donde ponerlo para que se ejecute. Tu has podido realizar la llamado al servlet??? aunque no ejecutes nada de EJBs???

Bueno si consigo algo ya te lo comunicaré. Si sabes como hacerlo te agradeceria me ayudaras.

Muchas gracias,

Ge
28 de Julio del 2003
Tienes que hacer:

Hola hola=null;
try {
Context ctx = new InitialContext();
System.out.println("Creo initial context");
HolaHome hh = (HolaHome)
javax.rmi.PortableRemoteObject.narrow (ctx.lookup("ejb/Hola"),HolaHome.class);
System.out.println("Se encontro Referencia del EJB!");
hola= hh.create();