Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-3001

NullPointerException when embledded into spring+jetty

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 2.2.10
    • 2.3
    • None
    • None
    • Moderate

    Description

      I'm running embedded jetty inside of a spring ioc container. The spring ioc contains also an embedded hsqldb which makes the whole configuration a nice and complete web application development environment (on a single JVM). Now I'm trying to add apache CXF to this environment to make the jetty host not only servlets but also web services. Unfortunately I'm getting NullPointerException when attempting to access http://127.0.0.1:8080/cxf/* (servlets and static content are served ok). Even if the configuration is wrong NPE should not be thrown.

      stacktrace:

      java.lang.NullPointerException
          at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
          at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
          at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
          at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
          at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
          at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
          at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
          at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
          at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
          at org.mortbay.jetty.Server.handle(Server.java:281)
          at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
          at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
          at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
          at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
          at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
          at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:368)
          at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
      

      I'm initializing spring with:

      public static void main(String[] args) throws Exception {
          ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[] { "jetty-beans.xml" , "cxf-beans.xml" });
          applicationContext.getBean("web-server", Server.class).join();
      }
      

      jetty-beans.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
      
          <bean name="web-server" class="org.mortbay.jetty.Server"
              init-method="start">
              <property name="connectors">
                  <list>
                      <bean class="org.mortbay.jetty.nio.SelectChannelConnector">
                          <property name="host" value="localhost" />
                          <property name="port" value="8080" />
                      </bean>
                  </list>
              </property>
              <property name="handlers">
                  <list>
                      <ref bean="web-server-context-static" />
                      <ref bean="web-server-context-servlet" />
                      <ref bean="web-server-context-cxf" />
                  </list>
              </property>
          </bean>
      
          <bean name="web-server-context-static" class="org.mortbay.jetty.servlet.Context">
              <property name="contextPath" value="/static" />
              <property name="handler">
                  <bean class="org.mortbay.jetty.handler.ResourceHandler">
                      <property name="resourceBase" value="static" />
                  </bean>
              </property>
          </bean>
      
          <bean name="web-server-context-servlet" class="org.mortbay.jetty.servlet.Context">
              <property name="contextPath" value="/servlet" />
              <property name="handler">
                  <bean class="org.mortbay.jetty.servlet.ServletHandler">
                      <property name="servlets">
                          <list>
                              <bean class="org.mortbay.jetty.servlet.ServletHolder">
                                  <property name="name" value="servlet-holder" />
                                  <property name="servlet">
                                      <bean class="test.TestServlet" />
                                  </property>
                              </bean>
                          </list>
                      </property>
                      <property name="servletMappings">
                          <list>
                              <bean class="org.mortbay.jetty.servlet.ServletMapping">
                                  <property name="servletName" value="servlet-holder" />
                                  <property name="pathSpec" value="/*" />
                              </bean>
                          </list>
                      </property>
                  </bean>
              </property>
          </bean>
      
          <bean name="web-server-context-cxf" class="org.mortbay.jetty.servlet.Context">
              <property name="contextPath" value="/cxf" />
              <property name="handler">
                  <bean class="org.mortbay.jetty.servlet.ServletHandler">
                      <property name="servlets">
                          <list>
                              <bean class="org.mortbay.jetty.servlet.ServletHolder">
                                  <property name="name" value="cxf-servlet-holder" />
                                  <property name="servlet">
                                      <bean class="org.apache.cxf.transport.servlet.CXFServlet">
                                      </bean>
                                  </property>
                              </bean>
                          </list>
                      </property>
                      <property name="servletMappings">
                          <list>
                              <bean class="org.mortbay.jetty.servlet.ServletMapping">
                                  <property name="servletName" value="cxf-servlet-holder" />
                                  <property name="pathSpec" value="/*" />
                              </bean>
                          </list>
                      </property>
                  </bean>
              </property>
          </bean>
      
      </beans>
      

      cxf-beans.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
          xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
      
          <import resource="classpath:META-INF/cxf/cxf.xml" />
          <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
          <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
      
          <bean id="test-ws-impl" class="test.TestWSImpl" />
      
          <jaxws:endpoint id="test-ws-endpoint" implementor="#test-ws-impl"
              address="/testWS" />
      
      </beans>
      

      classpath:

      activation-1.1.jar
      commons-logging-1.1.1.jar
      cxf-2.2.10.jar
      jaxb-api-2.1.jar
      jaxb-impl-2.1.13.jar
      jcl-over-slf4j-1.6.1.jar
      jetty-6.1.3.jar
      jetty-annotations-6.1.3.jar
      jetty-util-6.1.3.jar
      log4j-1.2.16.jar
      neethi-2.0.4.jar
      org.springframework.aop-3.0.3.RELEASE.jar
      org.springframework.asm-3.0.3.RELEASE.jar
      org.springframework.beans-3.0.3.RELEASE.jar
      org.springframework.context-3.0.3.RELEASE.jar
      org.springframework.context.support-3.0.3.RELEASE.jar
      org.springframework.core-3.0.3.RELEASE.jar
      org.springframework.expression-3.0.3.RELEASE.jar
      servlet-api-2.5-6.1.3.jar
      slf4j-api-1.6.1.jar
      slf4j-log4j12-1.6.1.jar
      wsdl4j-1.6.2.jar
      XmlSchema-1.4.5.jar
      

      Attachments

        1. cxf3001.tar.gz
          3 kB
          Daniel Kulp

        Activity

          People

            Unassigned Unassigned
            kryr Krystian Siuda
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: