EJB en el componente SEAM (diferentes proyectos y el mismo JBoss)
Pregunta
Tengo la siguiente configuración:
JBoss 4.2.3
debajo de eso tengo:
--> Project A (Wich is not SEAM 2.1.2GA based) EJBs: * beanA (JNDI = beanA/remote) * beanB (JNDI = beanB/remote) --> Project B (SEAM based) EJBs / Components: * ComponentX * ComponentY
En el componente X tengo el código actual:
@Scope(ScopeType.CONVERSATION)
@Name("ComponentX")
public class ComponentX implements java.io.Serializable {
...
@EJB
beanAInterface beanA;
....
public foo(){
beanA.bar(); // <--------- beanA is null, even with mapped name and etc, only works
// if i direct lookup with Context().lookup("beanA/remote")
}
¿Alguna idea sobre cómo resolver esto?
Gracias de antemano.
}
Solución
Su clase ComponentX no es un EJB, por lo que no puede usar la anotación @EJB para inyectarlos. Tienes pocas opciones. Convierta su ComponentX en EJB agregando @Stateless o @Statefull y una interfaz @Local o @Remote, de esta manera el AS notará que ComponentX es un EJB y sabrá qué hacer con la inyección deseada. La otra opción es permitir que ComponentX sea simplemente un componente y usar la búsqueda de InitialContext # para obtener la referencia a " beanA / remote " a mano.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow