Axiom和Spring WS集成的异常

时间:2016-04-26 23:29:56

标签: spring web-services

我们正在使用带有Axiom Api版本1.2.14的Spring Web服务版本2.1.3和使用AxiomSoapMessageFactory的Spring核心版本3.1.0来公开Web服务,但会抛出以下异常。我尝试过不同的Axiom Api版本,但我仍然无法解决问题。我正在使用WebSphere 7和Java 6。

4/25/16 16:41:28:006 MST] 0000002c ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service CWSRV0068E: Uncaught exception created in one of the service methods of the servlet spring-ws in application emmam1. Exception created : org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NoSuchMethodError: org/apache/axiom/soap/SOAPFactory.createOMElement(Lorg/apache/axiom/om/OMDataSource;Ljavax/xml/namespace/QName;)Lorg/apache/axiom/om/OMSourcedElement;
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:307)
        at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:576)
        at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:250)
        at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:259)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1694)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1635)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:113)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:80)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:965)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:508)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3994)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:945)
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:191)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:516)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:307)
        at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:84)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture$1.run(AsyncChannelFuture.java:205)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1662)
Caused by: java.lang.NoSuchMethodError: org/apache/axiom/soap/SOAPFactory.createOMElement(Lorg/apache/axiom/om/OMDataSource;Ljavax/xml/namespace/QName;)Lorg/apache/axiom/om/OMSourcedElement;
        at org.springframework.ws.soap.axiom.AxiomSoapBody.setStreamingPayload(AxiomSoapBody.java:71)
        at org.springframework.ws.soap.axiom.AxiomSoapMessage.setStreamingPayload(AxiomSoapMessage.java:175)
        at org.springframework.ws.server.endpoint.adapter.method.jaxb.AbstractJaxb2PayloadMethodProcessor.marshalToResponsePayload(AbstractJaxb2PayloadMethodProcessor.java:95)
        at org.springframework.ws.server.endpoint.adapter.method.jaxb.JaxbElementPayloadMethodProcessor.handleReturnValue(JaxbElementPayloadMethodProcessor.java:60)
        at org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter.handleMethodReturnValue(DefaultMethodEndpointAdapter.java:295)
        at org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter.invokeInternal(DefaultMethodEndpointAdapter.java:248)
        at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:53)
        at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:233)
        at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:173)
        at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
        at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:59)
        at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:239)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
        ... 28 more

[4/25/16 16:41:28:024 MST] 0000002c FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident CWRDC1003I: FFDC Incident emitted on /opt/WebSphere7/AppServer/profiles/wsfpp1/logs/ffdc/wsfpp1lpdza653emmam1Server_543c543c_16.04.25_16.41.28.0108470346255677976768.txt com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter 82
[4/25/16 16:41:28:024 MST] 0000002c FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident CWRDC1003I: FFDC Incident emitted on /opt/WebSphere7/AppServer/profiles/wsfpp1/logs/ffdc/wsfpp1lpdza653emmam1Server_543c543c_16.04.25_16.41.28.0241260189154356098319.txt com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest() 309
[4/25/16 16:41:28:027 MST] 0000002c webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError CWSRV0293E: [Servlet Error]-[spring-ws]: java.lang.NoSuchMethodError: org/apache/axiom/soap/SOAPFactory.createOMElement(Lorg/apache/axiom/om/OMDataSource;Ljavax/xml/namespace/QName;)Lorg/apache/axiom/om/OMSourcedElement;
        at org.springframework.ws.soap.axiom.AxiomSoapBody.setStreamingPayload(AxiomSoapBody.java:71)
        at org.springframework.ws.soap.axiom.AxiomSoapMessage.setStreamingPayload(AxiomSoapMessage.java:175)
        at org.springframework.ws.server.endpoint.adapter.method.jaxb.AbstractJaxb2PayloadMethodProcessor.marshalToResponsePayload(AbstractJaxb2PayloadMethodProcessor.java:95)
        at org.springframework.ws.server.endpoint.adapter.method.jaxb.JaxbElementPayloadMethodProcessor.handleReturnValue(JaxbElementPayloadMethodProcessor.java:60)
        at org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter.handleMethodReturnValue(DefaultMethodEndpointAdapter.java:295)
        at org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter.invokeInternal(DefaultMethodEndpointAdapter.java:248)
        at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:53)
        at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:233)
        at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:173)
        at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
        at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:59)
        at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:239)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:307)
        at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:576)
        at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:250)
        at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:259)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1694)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1635)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:113)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:80)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:965)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:508)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3994)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:945)
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:191)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:516)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:307)
        at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:84)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture$1.run(AsyncChannelFuture.java:205)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1662)

1 个答案:

答案 0 :(得分:0)

这是由WebSphere运行时中存在古老的Apache Axiom代码引起的。解决方案是将应用程序配置为将类加载策略切换为父级。