Glen, I tested in Tomcat and JDK 6 and I still landed up in the same error.

Below is the stack trace.

java.lang.NullPointerException
        at 
org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:916)
        at 
org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:903)
        at
org.apache.cxf.binding.soap.saaj.SAAJInInterceptor.handleMessage(SAAJInInterceptor.java:185)
        at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getSOAPMessage(WSS4JInInterceptor.java:130)
        at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:168)
        at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:81)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
        at
org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
        at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
        at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
        at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
        at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
        at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
        at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
        at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
        at java.lang.Thread.run(Thread.java:662)
Jan 21, 2011 12:04:49 PM
org.apache.cxf.interceptor.AbstractLoggingInterceptor log


I'm using CXF 2.3.1 and below is my CXF configuration.

Server 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:cxf="http://cxf.apache.org/core";
       xmlns:http="http://cxf.apache.org/transports/http/configuration";
       xmlns:jaxws="http://cxf.apache.org/jaxws";
       xsi:schemaLocation="
    http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
    http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
    http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.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"/>

    <cxf:bus>
      <cxf:features>
        <cxf:logging/>
      </cxf:features>
    </cxf:bus>

  <bean id="wss4jInInterceptor"
class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
    <constructor-arg>
      <map>
        <entry key="action" value="Timestamp Signature Encrypt"/>
        <entry key="signaturePropFile" value="serviceKeystore.properties"/>
        <entry key="decryptionPropFile" value="serviceKeystore.properties"/>
        <entry key="passwordCallbackClass"
value="com.test.webservices.PasswordCallback"/>
      </map>
    </constructor-arg>
  </bean>

  <bean id="wss4jOutInterceptor"
class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
    <constructor-arg>
      <map>
        <entry key="action" value="Timestamp Signature Encrypt"/>
        <entry key="user" value="myservicekey"/>
        <entry key="signaturePropFile" value="serviceKeystore.properties"/>
        <entry key="encryptionPropFile" value="serviceKeystore.properties"/>
        <entry key="encryptionUser" value="useReqSigCert"/>
        <entry key="passwordCallbackClass"
value="com.test.webservices.PasswordCallback"/>
        <entry key="signatureParts"
value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
        <entry key="encryptionParts"
value="{Element}{http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
        <entry key="encryptionSymAlgorithm"
value="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
      </map>
    </constructor-arg>
  </bean>

  <jaxws:endpoint id="HelloService" address="/HelloService">
    <jaxws:implementor>
      <bean id="helloServices" class="com.test.examples.HelloImpl"/>
    </jaxws:implementor>
    <jaxws:outInterceptors>
      <ref bean="wss4jOutInterceptor"/>
    </jaxws:outInterceptors>
    <jaxws:inInterceptors>
      <ref bean="wss4jInInterceptor"/>
    </jaxws:inInterceptors>
  </jaxws:endpoint>

</beans>

Client 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:cxf="http://cxf.apache.org/core";
       xmlns:http="http://cxf.apache.org/transports/http/configuration";
       xmlns:jaxws="http://cxf.apache.org/jaxws";
       xsi:schemaLocation="
    http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
    http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
    http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.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" />

  <cxf:bus>
    <cxf:features>
      <cxf:logging/>
    </cxf:features>
  </cxf:bus>

  <bean id="wss4jInInterceptor"
class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
    <constructor-arg>
      <map>
        <entry key="action" value="Timestamp Signature Encrypt"/>
        <entry key="signaturePropFile" value="clientKeystore.properties"/>
        <entry key="decryptionPropFile" value="clientKeystore.properties"/>
        <entry key="passwordCallbackClass"
value="com.test.service.ClientPasswordCallback"/>
      </map>
    </constructor-arg>
  </bean>

  <bean id="wss4jOutInterceptor"
class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
    <constructor-arg>
      <map>
        <entry key="action" value="Timestamp Signature Encrypt"/>
        <entry key="user" value="myclientkey"/>
        <entry key="signaturePropFile" value="clientKeystore.properties"/>
        <entry key="encryptionPropFile" value="clientKeystore.properties"/>
        <entry key="encryptionUser" value="myservicekey"/>
        <entry key="passwordCallbackClass"
value="com.test.service.ClientPasswordCallback"/>
        <entry key="signatureParts"
value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
        <entry key="encryptionParts"
value="{Element}{http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
        <entry key="encryptionSymAlgorithm"
value="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>        
      </map>
    </constructor-arg>
  </bean>

  <bean id="helloServiceClient" class="com.test.examples.Hello"
        factory-bean="helloServiceClientFactory" factory-method="create"/>

  <bean id="helloServiceClientFactory"
class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
    <property name="serviceClass" value="com.test.examples.Hello"/>
    <property name="address"
value="http://localhost:8080/services/HelloService"/>
    <property name="inInterceptors">
      <list>
        <ref bean="wss4jInInterceptor"/>
      </list>
    </property>
    <property name="outInterceptors">
      <list>
        <ref bean="wss4jOutInterceptor"/>
      </list>
    </property>
  </bean>

  <http:conduit name="*.http-conduit">
    <http:client Connection="Keep-Alive" ReceiveTimeout="0"
ConnectionTimeout="0" />
  </http:conduit>

</beans>


I verified the SOAP Request by enabling the logging and it looks fine and
was same as your provided example in
http://www.jroller.com/gmazza/entry/cxf_x509_profile

The exception is thrown when the request reaches server side.

Kindly let me know if there is anything missing or wrong in my
configuration.

Thanks in advance

Thanks,
Manoj

-- 
View this message in context: 
http://cxf.547215.n5.nabble.com/CXF-3170-NullPointerException-in-StaxUtils-java-961-tp3350913p3352176.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to