JavaEE @EJB vs @Resource

时间:2015-02-12 06:39:24

标签: java java-ee ejb

我对JavaEE Beans有疑问。 我已经用Spring和Hibernate开发了很长时间,现在我改为JavaEE - 所以很抱歉,如果这是一个非常简单的问题,但目前我不知道如何处理我的问题。

我有两个在JNDI中注册的Beans(在JBoss上 - 见上文)。 - 到目前为止还可以。如果我在我的Servlet中使用@EJB作为依赖注入,那么它可以正常工作:

@EJB(name = "jndi/TestClassBean")
public TestClass testClass;
@EJB(name = "jndi/OtherBean")
public OtherBean otherBean;

如果我用@Resource改变@EJB,那么我得到一个NullPointerException:

@Resource(name = "jndi/TestClassBean")
public TestClass testClass;
@Resource(name = "jndi/OtherBean")
public OtherBean otherBean;

为了完成@Resource的工作,enyone知道该怎么做吗? 我没有在deplyment描述中声明任何内容 - @Resource是否必须在DD中声明它? 谢谢!

  

16:39:51,482 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor](MSC服务线程1-7)部署单元部署中名为OtherBean的会话bean的JNDI绑定...

java:global/salzburgag-javaeetest-frontend/OtherBean!at.maxqu.test.OtherBeanLocal
java:app/...-javaeetest-frontend/OtherBean!at.maxqu.test.OtherBeanLocal
java:module/OtherBean!at.....test.OtherBeanLocal
java:global/...-javaeetest-frontend/OtherBean!at.....test.OtherBean
java:app/...-javaeetest-frontend/OtherBean!at.....test.OtherBean
java:module/OtherBean!at.maxqu.test.OtherBean

16:39:51,490 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor](MSC服务线程1-7)部署单元部署中名为TestClassBean的会话bean的JNDI绑定...

java:global/...-javaeetest-frontend/TestClassBean!at.....javaeesimpletest.TestClass
java:app/...-javaeetest-frontend/TestClassBean!at.....javaeesimpletest.TestClass
java:module/TestClassBean!at.maxqu.javaeesimpletest.TestClass
java:global/...-javaeetest-frontend/TestClassBean!at.....javaeesimpletest.TestClassBean
java:app/...-javaeetest-frontend/TestClassBean!at.....javaeesimpletest.TestClassBean
java:module/TestClassBean!at.....javaeesimpletest.TestClassBean

16:39:52,272提供信息[javax.enterprise.resource.webcontainer.jsf.config](MS

1 个答案:

答案 0 :(得分:0)

尝试使用lookup

@Resource(lookup = "java:global/...-javaeetest-frontend/TestClassBean!at.....javaeesimpletest.TestClass")
public TestClass testClass;

@Resource(lookup = "java:global/salzburgag-javaeetest-frontend/OtherBean!at.maxqu.test.OtherBeanLocal")
public OtherBean otherBean;