10 Replies Latest reply on Jan 15, 2008 6:50 AM by Henrik Troeng

    webservice class injecting EJB, nullpointerexception

    Henrik Troeng Newbie

      Shouldn't it be possible to inject an EJB into a jax-ws webservice class? I get a nullpointerexception when trying to use the EJB, it doesn't look like the ejb is injected into the webservice class?

      Code:

      Interface:
      @WebService
      public interface MyService {
      public String echoService(String input);
      }

      Implementation:
      @WebService(endpointInterface = "my.package.MyService")
      @SOAPBinding(style = Style.RPC)
      public class MyServiceImpl implements MyService {
      @EJB
      SurveillanceService surveillanceService;
      @WebMethod(operationName="echoService")
      public String echoService(String input) {
      boolean isAvail = surveillanceService.isDatabaseAvailable();
      return "Hi " + input + ", result from ejb: " + isAvail;
      }
      }

      The EJB does work (confirmed, I use it in other places), It seems that it is something with the Webservice > EJB...

      Thanks in advance

        • 1. Re: webservice class injecting EJB, nullpointerexception
          Richard Opalka Master

          Hi,

          your webservice must be EJB3 bean too. Just annotate it with @Stateless annotation

          • 3. Re: webservice class injecting EJB, nullpointerexception
            Henrik Troeng Newbie

            Oh, thanks for the replies! Will try that tomorrow.

            • 4. Re: webservice class injecting EJB, nullpointerexception
              Henrik Troeng Newbie

              I have done exactly according to the http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbossws/stack/native/trunk/src/test/java/org/jboss/test/ws/jaxws/jbws1822/ example, but no success, still got a Nullpointerexception.

              The SurveillanceService is located in the same jar as the webservice.
              Annotated the webservice impl class with @Remote(MyService.class) and @Stateless.

              Any ideas?

              • 5. Re: webservice class injecting EJB, nullpointerexception
                Richard Opalka Master

                Hi,

                could you post the stacktrace and minimized version of your application to reproduce your problem?

                • 6. Re: webservice class injecting EJB, nullpointerexception
                  Henrik Troeng Newbie

                  Ok, starting with the EJB service:

                  Interface:
                  @Local
                  public interface FunnyService {
                  public String getFunnyMessage();
                  }

                  Impl:
                  @Stateless
                  @LocalBinding(jndiBinding = "FunnyService")
                  public class FunnyServiceImpl implements FunnyService {
                  public String getFunnyMessage() {
                  return "Hello my name is earl!";
                  }
                  }

                  Webservice interface:
                  @WebService
                  public interface MyService {
                  public String echoMsg();
                  }

                  Impl:
                  @WebService(endpointInterface = "com.package.MyService")
                  @SOAPBinding(style = Style.RPC)
                  @Remote(MyService.class)
                  @Stateless
                  public class MyServiceImpl implements MyService {
                  @EJB
                  private FunnyService funnyService;
                  @WebMethod(operationName = "echoMsg")
                  public String echoMsg() {
                  String s = funnyService.getFunnyMessage();
                  return s;
                  }
                  }

                  web.xml:

                  <servlet-name>MyService</servlet-name>
                  <servlet-class>com.mypackage.MyServiceImpl</servlet-class>

                  <servlet-mapping>
                  <servlet-name>MyService</servlet-name>
                  <url-pattern>/MyService</url-pattern>
                  </servlet-mapping>

                  Stacktrace:
                  11:24:17,546 INFO org.jboss.deployment.EARDeployer.init(EARDeployer.java:142)
                  Init J2EE application: file:/C:/devel/jboss-4.2.1.GA-2/server/default/deploy/ear-3.0-SNAPSHOT.ear

                  11:24:24,375 INFO org.jboss.deployment.EARDeployer.start(EARDeployer.java:368)
                  Started J2EE application: file:/C:/devel/jboss-4.2.1.GA-2/server/default/deploy/ear-3.0-SNAPSHOT.ear

                  11:24:31,625 ERROR org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.exceptionToFaultMessage(SOAPFaultHelperJAXWS.java:146)
                  SOAP request exception

                  java.lang.NullPointerException
                  at com.mypackage.impl.MyServiceImpl.echoMsg(MyServiceImpl.java:24)
                  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                  at java.lang.reflect.Method.invoke(Method.java:597)
                  at org.jboss.wsf.container.jboss42.DefaultInvocationHandler.invoke(DefaultInvocationHandler.java:102)
                  at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:220)
                  at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:408)
                  at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:272)
                  at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:189)
                  at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:122)
                  at org.jboss.wsf.stack.jbws.EndpointServlet.service(EndpointServlet.java:84)
                  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
                  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                  at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
                  at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
                  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
                  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
                  at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
                  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
                  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
                  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
                  at java.lang.Thread.run(Thread.java:619)
                  11:24:31,734 ERROR org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.exceptionToFaultMessage(SOAPFaultHelperJAXWS.java:146)
                  SOAP request exception

                  java.lang.NullPointerException
                  at com.mypackage.impl.MyServiceImpl.echoMsg(MyServiceImpl.java:24)
                  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                  at java.lang.reflect.Method.invoke(Method.java:597)
                  at org.jboss.wsf.container.jboss42.DefaultInvocationHandler.invoke(DefaultInvocationHandler.java:102)
                  at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:220)
                  at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:408)
                  at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:272)
                  at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:189)
                  at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:122)
                  at org.jboss.wsf.stack.jbws.EndpointServlet.service(EndpointServlet.java:84)
                  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
                  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                  at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
                  at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
                  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
                  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
                  at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
                  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
                  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
                  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
                  at java.lang.Thread.run(Thread.java:619)

                  • 7. Re: webservice class injecting EJB, nullpointerexception
                    Henrik Troeng Newbie

                    The nullpointerexception is on the row:
                    String s = funnyService.getFunnyMessage();
                    so I guess the FunnyService is never set.

                    • 8. Re: webservice class injecting EJB, nullpointerexception
                      Richard Opalka Master

                      Hi,

                      remove the web.xml it is not necessary because your webservice is EJB3 (not POJO)

                      • 9. Re: webservice class injecting EJB, nullpointerexception
                        Richard Opalka Master

                        You can annotate your webservice impl with WebContext annotation to specify the context path and other staff