CXF实践中异常总结【记录收藏篇】

CXF发布WebService以及调用WebService,网上有很多实践的demo。但是根据网上的 demo不断实践,熟练掌握CXF的使用,以及总结开发CXF的异常。

CXF发布服务,有三种形式:根据main方法发布【Java Project项目】;不基于Spring方式发布到Web容器中,比如Tomcat容器【web项目】;基于Spring方式发布到Web容器中。【web项目】
因为CXF的特性之一,与Spring框架很好的集成。但是若是项目中不要求用Spring框架,但是又必须要求使用CXF框架呢?嘻嘻,所以,每个方式都需要掌握。
但是,既然每个框架都有自己的特性,所以应该扬长避短。

那我们总结一下,开发过程中,遇到的问题:
第一:若出现以下问题:
Exception in thread "main" java.lang.NoSuchMethodError: javax.wsdl.xml.WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition;
     at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:247)
     at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:192)
     at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:78)
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:292)
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:235)
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:228)
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:183)
     at com.client.JaxWsDynamicClient.main(JaxWsDynamicClient.java:10 )

异常分析原因:
jar包冲突问题; 在tomcat下lib下有个wsdl-1.5.jar,而在cxf中则要使用的wsdl-1.6.jar。
解决方案:
把tomcat下的wsdl-1.5.jar去掉。【暂时为了此项目去掉】
第二:若使用动态调用wsdl方式调用服务端时,出现以下异常:
Exception in thread "main" org.apache.cxf.service.factory.ServiceConstructionException : Failed to create service.
     at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:80)
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:292)
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:235)
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:228)
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:183)
     at com.ws.client.ClientTest.main( ClientTest.java:28)
Caused by: javax.wsdl.WSDLException: WSDLException (at /soap:Envelope): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
     at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source)
     at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
     at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:247)
     at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:192)
     at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:78)
     ... 5 more

异常分析原因:
wsdl的问题。
解决方案:注意wsdl后面必须添加上"?wsdl"

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值