EJB in SEAM Component (progetti diversi e lo stesso JBoss)
Domanda
Ho la seguente configurazione:
JBoss 4.2.3
sotto quello che ho:
--> 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
Sul componente X ho l'attuale codice:
@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")
}
Qualche idea su come risolverlo?
Grazie in anticipo.
}
Soluzione
La tua classe ComponentX non è un EJB, quindi non puoi usare l'annotazione @EJB per iniettarli. Hai alcune opzioni. Converti il ??tuo ComponentX in EJB aggiungendo @Stateless o @Statefull e un'interfaccia @Local o @Remote, in questo modo l'AS noterà che ComponentX è un EJB e saprà cosa fare con l'iniezione desiderata. L'altra opzione è lasciare che ComponentX sia semplicemente un componente e utilizzare la ricerca InitialContext # per ottenere il riferimento a "beanA / remote" a mano.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow