jsf - @EJB 在 @ManagedBean 中为空
问题描述
我对 Web 应用程序开发非常陌生。我正在尝试从 JSF 命令按钮实现对我的 ManagedBean 方法的 EJB 调用。
这是示例代码:JSF:
<h:commandButton value="CommandButton" action="#{someBean.someBeanMethod}" />
托管豆:
@ManagedBean
@ViewScoped
public class SomeBeanClient implements Serializable {
private static final long serialVersionUID = 1L;
@EJB
private Service service ;
public String someBeamMethod() throws NamingException {
final Future<String> red = service.someAsyncMethod();
service.someSyncMethod();
return "DummyValue";
}
}
EJB 类:
@Stateless
public class Service {
@Asynchronous
public Future<String> someAsyncMethod(){
try {
System.out.println("Gd nyt");
Thread.sleep(10000);
System.out.println("Gd mrning");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
return new AsyncResult<String>("success");
}
public void someSyncMethod(){
System.out.println("Gd Day");
}
}
期待按照以下顺序执行 SOP : Gd nyt Gd Day Gd mrning
实际结果:
servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception root cause Faces Servlet: javax.servlet.ServletException: Error calling action method of component with id paneForm:content:PushToGIT:_idJsp72:_idJsp165
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1225)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:775)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:457)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
at ilog.rules.teamserver.web.security.SecurityCheckPointFilter.doFilter(SecurityCheckPointFilter.java:112)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at ilog.rules.teamserver.web.servlets.filter.IlrAccessFilter.doFilter(IlrAccessFilter.java:199)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
Caused by: javax.faces.el.EvaluationException: Exception while invoking expression #{someBean.someBeanMethod}
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:156)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
... 49 more
Caused by: java.lang.NullPointerException
at com.tiaa.brms.ejb.SomeBeanClient.someBeanMethod(SomeBeanClient.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:76)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:607)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
... 50 more
解决方案
推荐阅读
- python - 计算pymongo中的所有数组
- java - 我收到空指针异常。尝试在空对象引用上调用接口方法“int java.util.List.size()”。
- sql - 如何通过大查询按 7 天移动平均线的阈值分组
- node.js - 节点模块可以需要一个香草 js 文件吗?
- java - 如何从 Java/Android 中自动获取笔记本电脑的 IP 地址
- c# - 使用HTML提交后如何返回上一个视图
- javascript - 停止视频 3 秒,然后继续
- gradle - 防止 gradle 跳过任务
- c# - Google Data .NET API 安装程序 - 声称我需要 .NET 2.0
- apache-spark - Spark 流式查询两次加载数据源