我是EJB 3.0的新手,并尝试使用我的ejb进行DI。
我正在使用WAS 7.0作为我的appserver,我在其上部署了两个EAR。两者都有ejb 3会话bean,我需要从耳朵1中的ejb调用耳朵2中的ejb。
在我的两个应用程序中,我有一个包含本地和远程接口的客户端项目,一个 commons 项目,其中包含由远程和本地接口扩展的接口,然后是ejb项目和路由器项目(作为ejb的webservice端点)
现在进行远程调用,我尝试将客户端和公共jar文件放在EAR的lib目录中,更新了ejb项目的META-INF并尝试使用@EJB注释,但它给出了例外,缺少EJB。
我尝试进行JNDI查找,但它给出了NamingException。
在ejb 3.0中执行远程bean调用的正确方法是什么?
请提供您的建议。
答案 0 :(得分:0)
问题不在于调用,问题是首先获得对EJB存根的引用。对于远程EJB,这绝对需要JNDI查找(除非您想通过SOAP或REST调用它)。因此,您需要将lookup
参数添加到@EJB
注释中,并且需要将正确的JNDI查找名称传递给它 - 这是一个困难的部分,因为JNDI名称的组合很复杂且受到影响很多因素。