Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.1.3
-
None
-
Windows, Tomcat with OpenEJB embedded
Description
After upgrading OpenEJB from 3.1.2 (uses CXF 2.0.9) to OpenEJB 3.1.3 (uses CXF 2.2.10) CXF-based web-services are broken with the following exception on a server side:
org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
WARNING: Interceptor for
ProInfoMgmtWebService has thrown exception, unwinding now
java.lang.NullPointerException
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:961)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:949)
at org.apache.cxf.binding.soap.saaj.SAAJInInterceptor.handleMessage(SAAJInInterceptor.java:183)
at org.apache.cxf.binding.soap.saaj.SAAJInInterceptor.handleMessage(SAAJInInterceptor.java:71)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:244)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
at org.apache.openejb.server.cxf.HttpDestination.invoke(HttpDestination.java:123)
at org.apache.openejb.server.cxf.CxfWsContainer.processPOST(CxfWsContainer.java:106)
at org.apache.openejb.server.cxf.CxfWsContainer.onMessage(CxfWsContainer.java:77)
at org.apache.openejb.server.webservices.OpenEJBHttpWsRegistry$ClassLoaderHttpListener.onMessage(OpenEJBHttpWsRegistry.java:117)
at org.apache.openejb.server.httpd.HttpListenerRegistry.onMessage(HttpListenerRegistry.java:43)
at org.apache.openejb.server.httpd.OpenEJBHttpServer.process(OpenEJBHttpServer.java:176)
at org.apache.openejb.server.httpd.OpenEJBHttpServer.processRequest(OpenEJBHttpServer.java:132)
at org.apache.openejb.server.httpd.OpenEJBHttpServer.service(OpenEJBHttpServer.java:78)
at org.apache.openejb.server.httpd.HttpEjbServer.service(HttpEjbServer.java:61)
at org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
at org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
After debugging this with CXF 2.2.10 source we found that SAAJInInterceptor called on each call (from WSS4JInInterceptor interceptor). Calling SAAJInInterceptor by default is apparently new in CXF 2.2.10. When called SAAJInInterceptor attempts to obtain
SOAPMessage doc = msg.getContent(SOAPMessage.class);
which is null in our case. This subsequently brings NullPointerException after few steps.