到现在为止我还是对WebService 迷迷糊糊,前几天工作中遇到了一个调用WebService的问题,让我费尽了脑子查了好久也没有个结果,在我最后失去信心想把它丢给同事的时候(抱歉我自己也觉得有些内疚),一位同事提供的建议让我又起了兴致去解决它。
来说问题:在我的系统调用WebService的时候,程序可恶的给我抛出了这个异常:
严重: Servlet.service()for servlet BasicInfoGet threw exception
java.lang.AbstractMethodError:org.apache.xerces.dom.ElementNSImpl.setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object;
at org.apache.cxf.staxutils.StaxUtils.addLocation(StaxUtils.java:1189)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1077)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1050)
at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:977)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:234)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:192)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:97)
at javax.xml.ws.Service.<init>(Service.java:56)
此处省略。。
我网上查找,得到的答案都是xerces-2.6.2.jar包冲突,其中一个答案如下:
我也把xerces-2.6.2.jar从工程里面删掉(但是我忘记了从build path中删掉,导致引入包显示missing的错误),重新发布后还是报错,这次是报的下面这个错误:
javax.wsdl.xml.WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition;
继续查找资料后,发现这样一个回答: