我有这个类来生成一些Java EE资源。我的项目是带有EJB和CDI的EAR。
public class Resources {
@Dependent
@Produces
@Resource(mappedName = "java:comp/EJBContext")
protected SessionContext sessionContext;
}
它在JBoss AS 7中运行良好。但是当我使用Wildfly(今天从github编译的beta1)时,我得到了这个例外。
Caused by: org.jboss.weld.exceptions.NullInstanceException: WELD-000044: Unable to obtain instance from null
怎么了?如何使用Wildfly生成SessionContext? Wildfly有一种不同的方式,或者它是一个bug(因为Wildfly尚未准备好生产)?
更新使用从Github编译的Wildfly的最新版本,此代码可以正常工作。我认为这是一个预期的错误,因为Wildfly是测试版。谢谢你们。
答案 0 :(得分:2)
SessionContext是与当前会话bean相关的上下文。 在你的情况下,Resources类不是任何类型的ejb bean,这就是未注入SessionContext的原因。
尝试将@Stateless添加到Resources类。 在任何情况下,你想为SessionContext创建生成器似乎有点奇怪,它只对当前bean有效。 请参阅有关SC有效的javadoc以及它与http://docs.oracle.com/javaee/7/api/javax/ejb/SessionContext.html
的相关内容