有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javajavaee@EJB vs@Resource

我有一个关于javaeebean的问题。 我已经用Spring和Hibernate开发了很长一段时间,现在我改为JavaEE——因此,如果这是一个非常简单的问题,我很抱歉,但目前我不知道如何处理我的问题

我有两个在JNDI中注册的bean(在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;

enyone知道如何使用@Resource完成任务吗? 我没有在解聚描述符中声明任何内容,-@Resource必须在DD中声明吗? 谢谢

16:39:51,482 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-7) JNDI bindings for session bean named OtherBean in deployment unit deployment ...

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:51490信息[org.jboss.as.ejb3.deployment.processors.ejbndibingsdeploymentunitprocessor](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:52272信息[javax.enterprise.resource.webcontainer.jsf.config](MS)


共 (1) 个答案

  1. # 1 楼答案

    尝试使用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;