1
@Local
public interface EJBA{
// declares a method 'validate'
}

@Stateless
public class EJBABean implements EJBA{
// implements the method 'validate'
}

class Model{
@EJB
private EJBA ejbA;
public void doSomething(){
   ejbA.validate();
}
} 

现在,如果我从 Struts 1.2 动作类的执行方法中执行以下操作

new Model().validate();

Model 的ejbA为 null,导致NullPointerException。问题与类似,但就我而言,我正在运行客户端代码(模型)以及 JBoss 6.1 Final 服务器本身中的 bean。模型和 EJB 位于单独的 jar 文件中,动作类位于 war 文件中。这两个都打包在一个ear文件中。

如果我使用[ear-name]/EJBABean/local使用上下文查找,我可以访问它。我究竟做错了什么 ?

4

1 回答 1

1

您的Model类不由容器管理,因此 JBoss 无法识别ejbA为注入的 EJB。您必须通过使用/ /Model注释来​​将您的类转换为 EJB 。@Stateless@Stateful@Singleton

这就是为什么容器不参与的 JNDI 查找可以完美运行的原因。

于 2011-12-25T23:02:53.153 回答