【发布时间】:2012-02-17 08:27:51
【问题描述】:
我正在尝试使用 @EJB 注释注入 EJB:
- 当我将 EJB 注入同一耳朵的另一个 EJB 时,它工作正常。
- 当我将一个 EJB 从另一个耳朵注入另一个 EJB 时 服务器出现异常:
EJB 在调用 方法“sayHello”。异常数据:javax.ejb.EJBException: Injection 失败;嵌套异常是: com.ibm.ejs.container.EJBNotFoundException:带接口的 EJB com.mycompany.myapp.ejb.test2 不在应用程序 myapp1 中
我正在使用 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 实现:
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 实现:
package com.mycompany.myapp2.ejb.test2;
@Stateless
public class HelloEjbImpl2 implements HelloEjb2 {
@Override
public String sayHello() {
return "Hello";
}
}
【问题讨论】: