Java @当Bean来自其他jar时,EJB(查找)不会被注入JSF管理的Bean中

Java @当Bean来自其他jar时,EJB(查找)不会被注入JSF管理的Bean中,java,jakarta-ee,ejb,jboss7.x,Java,Jakarta Ee,Ejb,Jboss7.x,我在JBoss7.1上部署了三个应用程序:BaseApp、MyApp1、MyApp2。MyApp1和MyApp依赖于BaseApp(它们使用BaseApp中的baseEJB.jar)。我需要创建一个JSF托管bean,在这里我想使用@EJB注释查找EJB: public class BaseAppBean { @EJB(lookup = "java:global/BaseApp/baseEJB/ManagerBean!com.ejb.manager.Manager") priv

我在JBoss7.1上部署了三个应用程序:BaseApp、MyApp1、MyApp2。MyApp1和MyApp依赖于BaseApp(它们使用BaseApp中的baseEJB.jar)。我需要创建一个JSF托管bean,在这里我想使用@EJB注释查找EJB:

public class BaseAppBean {

    @EJB(lookup = "java:global/BaseApp/baseEJB/ManagerBean!com.ejb.manager.Manager")
    private Manager manager;

    public User getUser() {
        return manager.getUser();
    }

    ...
}
BaseAppBean将在MyApp1和MyApp2中使用,因此我决定将此类放在BaseApp中是一个好主意,这样两个应用都可以从baseEJB.jar获得它。但后来我意识到它不起作用,似乎没有注入Manager EJB,并且在
getUser()
方法中抛出了NullPointerException

经过一些试验后,我进入了三种设置:

  • 放置在BaseApp中的BaseAppBean,带有@EJB(查找)注释的EJB注入->未注入EJB,管理器==null
  • BaseAppBean放在BaseApp中,JNDI查找而不是@EJB注释->正确查找EJB,manager!=空的
  • BaseAppBean复制到MyApp1和MyApp2(我希望避免的重复),EJB注入@EJB(查找)->EJB正确注入,manager!=空的

  • 因此我的问题是,为什么1中描述了设置。不工作和3。工作正常吗?在这两种情况下,BaseAppBean都是在相同的web应用程序上下文中创建的,唯一的区别是,在案例3中,类位于同一个jar中,而在案例1中,它取自其他应用程序的jar

    “Manager”是应用程序的远程界面吗?我不确定(必须检查文档),但要与其他应用程序的bean通信,您需要远程接口。因此,请将@Remote注释添加到管理器界面,然后重试。@rmertins,我不怀疑丢失远程注释是一个问题。在备选方案3中。它正在工作,MyApp甚至在没有远程设备的情况下也在调用Manager。是的,因为有一个bean的本地实例。