将bundle部署到玻璃鱼中后无法获取 EJBContext



我的问题基于不能在EJB上获得SessionContext,我想将EJBContext注入我的代码

我的代码是:
import javax.ws.rs.core.Context;
public class EjbContextTest {
    @Resource
    private EJBContext ejbContext;
    @Resource
    private SessionContext sessionContext;
    ......
}

我在激活器中有一个简单的测试,只是想验证我是否可以通过使用CDI获得EJBContext:

public void start(BundleContext context) throws Exception {
    EjbContextTest test = new EjbContextTest();
    if (test.getEjbContext() == null) {
       System.out.println("ejbContext is: null" );
    } else
       System.out.println("ejbContext rollback only is: " + 
           test.getEjbContext().getRollbackOnly());
    }

当将bundle部署到glassfish 3.1.2中时,我无法获得EJBContext的实例:

<>之前2013-03-29 17:11:20,547 |信息| glassfish3.1.2 | javax.enterprise.system.std.com.sun.enterprise.server.logging |_ThreadID = 15; _ThreadName =线程2 ;|-----------> ejbContext是零* | #):之前

如果你有什么建议,我很乐意尝试一下。

您不能通过调用它们的构造函数来访问EJB会话bean或CDI bean。下面两个都可以:

  1. 使用CDI注入(或CDI- ejb集成)

    @Inject
    private EjbContextTest test;
    
  2. 使用纯EJB注释注入

    @EJB
    private EjbContextTest test;
    

则可以调用test.getEjbContext()。

这样,@Resource注释就被处理了。

希望有所帮助

对于那些将来仍然需要…

注入使用:

@Resource
private SessionContext ejbContext;

@Resource(mappedName = "java:comp/EJBContext") // adding 'mappedName' with JNDI name
private EJBContext ejbContext;

相关内容

  • 没有找到相关文章