未捕获到 servlet CXFServlet 的其中一个服务方法中抛出的错误。java.lang.IncompatibleClassChangeError

未捕获到 servlet CXFServlet 的其中一个服务方法中抛出的异常。java.lang.IncompatibleClassChangeError

环境

JDK15

WAS6.1.0.21

前因后果

使用CXF2.2.3开发ws服务端于WAS6.1.0.21上发布。

具体报错信息

[09-11-3 14:34:59:238 CST] 00000051 ServletWrappe E   SRVE0068E: 未捕获到 servlet CXFServlet 的其中一个服务方法中抛出的异常。抛出的异常:java.lang.IncompatibleClassChangeError
at org.apache.cxf.wsdl11.ServiceWSDLBuilder.addExtensibilityElements(ServiceWSDLBuilder.java:229)
at org.apache.cxf.wsdl11.ServiceWSDLBuilder.buildBindingInput(ServiceWSDLBuilder.java:355)
at org.apache.cxf.wsdl11.ServiceWSDLBuilder.buildBindingOperation(ServiceWSDLBuilder.java:324)
at org.apache.cxf.wsdl11.ServiceWSDLBuilder.buildBinding(ServiceWSDLBuilder.java:305)
at org.apache.cxf.wsdl11.ServiceWSDLBuilder.build(ServiceWSDLBuilder.java:193)
at org.apache.cxf.wsdl11.ServiceWSDLBuilder.build(ServiceWSDLBuilder.java:148)
at org.apache.cxf.transport.http.WSDLQueryHandler.writeResponse(WSDLQueryHandler.java:146)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:182)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:220)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(AbstractCXFServlet.java:158)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFServlet.java:211)

解决之道

put the wsdl4j-1.6.1.jar in the $WebSphere_HOME/java/jre/lib/endorsed folder.

http://cwiki.apache.org/confluence/display/CXF20DOC/Application+Server+Specific+Configuration+Guide

参考此文章中提到了cxf在websphere上需要额外处理的地方,按照方法一修改后访问wsdl正常。