Web Service 一点小事儿

来源:互联网 发布:zol软件 编辑:程序博客网 时间:2024/06/03 21:02

    到现在为止我还是对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包冲突,其中一个答案如下:

项目是:hibernate3.0整合cxf。

cxf 以Endpoint方式发布服务,报如上的错误,就知道是jar冲突。找了半天把xerces-2.6.2.jar remove form build 重新发布,成功!


我也把xerces-2.6.2.jar从工程里面删掉(但是我忘记了从build path中删掉,导致引入包显示missing的错误),重新发布后还是报错,这次是报的下面这个错误:

javax.wsdl.xml.WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition;

继续查找资料后,发现这样一个回答:

异常分析原因:
jar包冲突问题;在tomcat下lib下有个wsdl-1.5.jar,而在cxf中则要使用的wsdl-1.6.jar。
原文链接:http://blog.csdn.net/yuebinghaoyuan/article/details/8456779
我按照这个说法去查找我的tomcat下是否存在这两个包,结果并没有,而且就像一开始说的,我对Webservice还是不太熟悉,项目也不是我搭建起来的,所以我也不清楚项目里使用了哪些包,既然tomcat下没有,我就去项目中查看都有哪些包,果然被我发现了:项目中有两个类似的wsdl4j-1.5.1.jarwsdl4j-1.6.2.jar !!,虽然名称略不相同,我就抱着试试看的态度,把低版本的那个包也删除了,这次记得在配置中也删除。然后重新发布,测试,成功!
    非常感谢大家提供的帮助!谢谢网友们把经验分享出来!






1 0