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.

}

È stato utile?

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
scroll top