在一个采用了XFire作为WebService框架Web项目中,添加由JDK1.6 wsimport命令生成的一个WebService客户端调用,在客户端调用时出现了如下问题

log4j:WARN No appenders could be found for logger (org.codehaus.xfire.jaxws.Provider).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.IllegalStateException: Could not initialize Service.at org.codehaus.xfire.jaxws.ServiceDelegate.<init>(ServiceDelegate.java:77)at org.codehaus.xfire.jaxws.Provider.createServiceDelegate(Provider.java:32)at javax.xml.ws.Service.<init>(Service.java:56)at com.xxx.xxx..XXXService.<init>(XXXService.java:48)at com.xxx.xxx..main(Test.java:8)
Caused by: java.lang.NoSuchMethodException: com.xxx.xxx.getPortClassMap()at java.lang.Class.getMethod(Class.java:1607)at org.codehaus.xfire.jaxws.ServiceDelegate.<init>(ServiceDelegate.java:60)... 4 more

根据错误信息来看,是由于getPortClassMap()方法未找到,导致Could not initialize Service;但是我的客户端是用jdk自带的wsimport生成的,为什么在方法执行过程中会调用XFire相关的代码呢?

    protected Service(java.net.URL wsdlDocumentLocation, QName serviceName) {delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation,serviceName,this.getClass());}

在这个地方调用Provider的方法,而Provider在jdk6中是一个抽象类,jdk6有该类的子类com.sun.xml.internal.ws.spi.ProviderImpl,
XFire也有一个该类的子类org.codehaus.xfire.jaxws.Provider,并且在xfire-all-1.2.6.jar包中/META-INF/services/javax.xml.ws.spi.Provider的文件里,

指定了由org.codehaus.xfire.jaxws.Provider去执行。

那么现在该问题解决方式就是把javax.xml.ws.spi.Provider文件中的

org.codehaus.xfire.jaxws.Provider
改为
com.sun.xml.internal.ws.spi.ProviderImpl

就可以了。

这样java6的wsimport生成的客户端就不会再条用XFire相关的代码了。

参考链接:
https://bbs.csdn.net/topics/390736806
使用wsimport将wsdl生成java

wsimport将wsdl生成java 调用时碰到的一个问题Could not initialize Service相关推荐

  1. 使用wsimport将wsdl生成java

    使用管理员打开cmd wsimport -encoding utf-8 -keep -s D:\temp -p com.lamcy.webService -verbose http://服务地址?ws ...

  2. SQL Server 安装程序遇到以下错误: 无法生成临时类(result=1)。 error CS1567: 生成 Win32 资源时出错: 另一个程序正在使用此文件,进程无法访问。...

    SQL Server 安装程序遇到以下错误: 无法生成临时类(result=1). error CS1567: 生成 Win32 资源时出错: 另一个程序正在使用此文件,进程无法访问. 如果你装了千牛 ...

  3. 【小题目】写JAVA程序时可以创建一个名为123.java的源文件吗

    在写JAVA程序时创建名为123.java的源文件,前提是该源文件中没有public修饰的类,因为一旦使用public修饰后类名必须与文件名相同,而类名为标识符,不能以数字开头.因此,在没有用publ ...

  4. 记录谷歌gn编译时碰到的一个错误“I could not find a “.gn“ file ...”

    应用谷歌gn+nijia,在ubuntu7.9上编译程序时,碰到这么一个错误提示 # gn gen out/ "ERROR Can't find source root. I could n ...

  5. 由wsdl生成java,这是最原始的axis1

    转:http://blog.sina.com.cn/s/blog_63dc0365010186pi.html 1.到www.apache.org上去下载axis-bin-1_4.zip,如要关联源代码 ...

  6. 使用Maven的jaxws-maven-plugin插件,将wsdl生成java

    1.准备一个标准的maven工程,将pom.xml修改成如下: <pre name="code" class="xml"><?xml vers ...

  7. 根据WSDL编写JAVA调用

    在开发过程中获取到了提供方的wsdl服务地址,然后在网页上能够访问wsdl文档以后,如何调用对方的webservic借口呢? 内容说明 1.WSDL文档基本说明 2.httpURLConnection ...

  8. wsdl生成客户端调用代码

    1.jdk自带的"wsimport"命令 wsimport -keep -p 包名 路径 2.wsdl2java工具 请参考另一篇博客:wsdl Java生成webservice客 ...

  9. 使用axis2,根据WSDL生成java客户端代码

    1.axis2-1.6.2.zip客户端下载地址:https://download.csdn.net/download/chen_jl168/10511183: axis2-1.7.8.zip客户端下 ...

最新文章

  1. np.reshape()用法
  2. strongswan技术
  3. session 详解
  4. keytool条目_java keytool 常用命令
  5. 编程实现启用禁用网卡
  6. img pdf 展示_pdf.js实现图片在线预览
  7. 典型案例:Bug 9776608-多个用户使用错误密码登录同一个用户而造成的用户无法登录异常...
  8. IntelliJ IDEA 2017.3-2018.1 全系列汉化包
  9. let的解构赋值_解构赋值还有这么多玩法?
  10. 《嵌入式 Linux C 语言应用程序设计(修订版)》——2.1 嵌入式Linux下C语言概述...
  11. docker学习-狂神视频
  12. 形式语言与自动机 下推自动机
  13. 教你如何批量下载QQ相册或是手机相册里原照片
  14. KIB、MiB、GiB
  15. Fildder主菜单----Edit介绍
  16. python输入成绩判断是否及格_python小练习:读入一个考试得分,判断这个分数是哪个等级,并输出,考虑异常场景...
  17. 使用Minifly打造基于视觉感知的跟踪无人机
  18. TI基于DSP+ARM的双核架构如何相互通信
  19. 异常统一处理[ExceptionAdvice](SpringMVC)
  20. Azkaban环境配置-尚硅谷大数据培训

热门文章

  1. mysql ( )连接_MySQL中concat函数(连接字符串)
  2. (pytorch-深度学习系列)pytorch中backwards()函数对梯度的操作
  3. Win7虚拟无线AP以及Android手机抓包
  4. 【优秀文章保存】webcollector抽取新闻正文
  5. java 正则表达式 手机号 邮箱(转载)
  6. 数据结构实验之栈五:下一较大值(一)
  7. ElasticSearch sql 插件安装
  8. 时序数据库技术体系 – InfluxDB TSM存储引擎之数据写入
  9. 使用AirFlow调度MaxCompute
  10. 看阿里云如何用云上技术创新,帮助哈啰单车实现智能数据收治