Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con EJB's

Estas en el tema de Ayuda con EJB's en el foro de Java en Foros del Web. Hola a todos! Estoy implementando una aplicación JEE y tengo algunos SessionBeans EJB 3.x stateless dentro que implementan la lógica de negocio. supongamos que tengo ...
  #1 (permalink)  
Antiguo 15/02/2010, 22:55
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Ayuda con EJB's

Hola a todos!
Estoy implementando una aplicación JEE y tengo algunos SessionBeans EJB 3.x stateless dentro que implementan la lógica de negocio.

supongamos que tengo un SesionBean A y Otro B en el A tengo el siguiente código:

public void save(Zona zona) throws RemoteException {

em.persist(zona);
}


y en el B necesito ejecutar este método, cuando intento hacer por ejemplo

public void otroSave(Pepe p){
Zona z = new Zona();
//lleno los datos de la zona
......................


A otroBean = new A();
otroBean.save(zona);

}

y esto me da un error javax.ejb.EJBException: java.lang.NullPointerException

alguna idea de cómo puedo referenciar un SessionBean desde otro y ejecutar los métodos??? gracias
  #2 (permalink)  
Antiguo 16/02/2010, 09:47
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
De acuerdo Respuesta: Ayuda con EJB's

Me contesto solo.
Lo mejor es usar JNDI al igual que en los clientes, y si usas jboss (como yo) crear el fichero jboss.xml en el META-INF del proyecto EJB, con los nombres que se desean usar para cada uno de los beans.
algo así:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 2.4//EN" "http://www.jboss.org/j2ee/dtd/jboss_2_4.dtd">

<jboss>
<enterprise-beans>
<session>
<ejb-name>A</ejb-name>
<jndi-name>com.pepe.A</jndi-name>
</session>
<session>
<ejb-name>B</ejb-name>
<jndi-name>com.pepe.B</jndi-name>
</session>
</enterprise-beans>
</jboss>

y luego para llamar de uno al otro hacerlo normalmente con jndi con el InitialContext por defecto (ya que estamos en el mismo contenedor)

Context ctx = new InitialContext();
ARemote rem = (ARemote)ctx.lookup("com.pepe.A"); //acá lo llamamos como si fuera un class.forName! (ARemote es la interfaz remota del bean A)

y listo luego se pueden hacer las llamadas como siempre


Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:05.