WebSphere 7.从另一个应用程序注入EJB
我正在尝试使用@EJB注释注入EJB:
- 当我将EJB注入同一个耳中的另一个EJB时,它可以正常工作。
- 当我将EJB从同一服务器中的另一个耳朵注入另一个EJB时,我得到一个exception:
EJB在调用方法“sayHello”期间抛出了意外的(未声明的)exception。 exception数据:javax.ejb.EJBException:注入失败; 嵌套exception是:com.ibm.ejs.container.EJBNotFoundException:应用程序myapp1中不存在带有com.mycompany.myapp.ejb.test2接口的EJB
我正在使用WebSphere 7和EJB 3.0。 当我自己进行jndi查找时,它运行正常。 如何让容器知道从哪里注入我的远程bean?
myapp1.ear包含以下内容:myapp1.jar(EJB所在的位置)
myapp1 EJB:
package com.mycompany.myapp1.ejb.test1; @Remote public interface HelloEjb1 { public String sayHello(); }
EJB Impl:
package com.mycompany.myapp.ejb.test1; @Stateless public class HelloEjbImpl1 implements HelloEjb1 { @EJB HelloEjb2 helloEjb2; @Override public String sayHello() { return HelloEjb2.sayHello(); } }
myapp2.ear包含以下内容:myapp2.jar(EJB所在的位置)
myapp2 EJB:
package com.mycompany.myapp2.ejb.test2; @Remote public interface HelloEjb2 { public String sayHello(); }
EJB Impl:
package com.mycompany.myapp2.ejb.test2; @Stateless public class HelloEjbImpl2 implements HelloEjb2 { @Override public String sayHello() { return "Hello"; } }
在部署应用程序时指定绑定( 1,2 ),或在客户端(myapp1)EJB模块中包含META-INF / ibm-ejb-jar-bnd.xml 。 它看起来像这样:
如果使用@EJB(name="myrefname")
则可以简化ejb-ref name="..."
。 如果myapp2.jar包含一个带有
元素的类似绑定文件,则绑定名称可以简化。