首页 > 解决方案 > @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

标签: jsfejbwebsphere-8managed-bean

解决方案


推荐阅读