错误发生在WildFly 10容器中。整个错误看起来像这样:
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.naming.NameNotFoundException: env/com.maggioni.Bean.InfoBean/infoCreator -- service jboss.naming.context.java.module.B77.EJBStatefulBean-Bidder-Demo-web.env."com.maggioni.Bean.InfoBean".infoCreator
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:106)
a...
[0m[31m13:45:26,716 ERROR [io.undertow.request] (default task-8) UT005023: Exception handling request to /web/infobean.jsf: javax.servlet.ServletException: WFLYWELD0044: Error injecting resource into CDI managed bean. Can't find a resource named java:comp/env/com.maggioni.Bean.InfoBean/infoCreatorInfobean.jsf注入如下所示:
@Named("infobean")
@SessionScoped
public class InfoBean implements Serializable{
private static final long serialVersionUID = 1L;
@EJB
private InfoCreator infoCreator;
public String getInfo() {
return infoCreator.getInfo();
}
}EJB信息生成器看起来像这样
@Stateful
public class InfoCreator implements InfoInterface{
@Override
public String getInfo() {
return "Info";
}
}如果你想知道更多细节,请让我知道,我真的不太确定需要在这里张贴什么。
GitHub存储库为here
发布于 2017-03-23 22:56:13
首先,为什么要将有状态EJB注入到CDI bean中?鉴于您发布的代码,我认为没有任何理由使用EJB (对于有状态的EJB更是如此)。
只需移除@Stateful注释并像这样注入它:
@Named("infobean")
@SessionScoped
public class InfoBean implements Serializable{
private static final long serialVersionUID = 1L;
@Inject
private InfoCreator infoCreator;
public String getInfo() {
return infoCreator.getInfo();
}
}https://stackoverflow.com/questions/42979393
复制相似问题