网站首页 > 开源技术 正文
前几天的文章整合Spring和XFire:Spring整合xfire框架,发布wsdl服务
之后发现项目中又出现问题了,之前项目中用到基于JDK实现的webservice服务端和客户端,通过Jax-ws客户端调用Jax-ws服务端的时候老是报如下图的错误:
然后就发现是xfire和jax-ws有冲突。
问题的原因:
通过报错发现getPortClassMap()方法未找到,导致Could not initialize Service。
JDK创建 Service 的代理的时候没有使用 jdk 自带的 javax.xml.ws.spi.Provider,而是使用了 xfire 包中的 javax.xml.ws.spi.Provider。
而Provider在jdk中是一个抽象类,jdk有该类的子类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去执行,所以冲突了。
解决方法:
通过解压软件将xfire-all-1.2.6.jar解压之后会出现四个文件如下图:
然后找到META-INF中的services文件下的 “javax.xml.ws.spi.Provider” 文件,通过记事本或者notepad++等打开它,
里面就一句话:org.codehaus.xfire.jaxws.Provider 。将这句话改为:com.sun.xml.internal.ws.spi.ProviderImpl保存就好。
问题来了。。
怎么将这个四个文件还打包成jar?
从网上找了找有两个方法:通过jdk的jar命令和用eclipse导出,但是发现都不太好弄。
最简单的方法:用压缩软件将之前的jar打开,不是解压,然后将修改的“javax.xml.ws.spi.Provider” 文件还拖到之前的位置,然后替换保存即可。
工作中遇到的问题记录一下。
不定时更新,如果感觉有用关注一波。
猜你喜欢
- 2024-10-09 Java 11新功能揭秘 有哪些值得期待的新特性
- 2024-10-09 java的各版本的新特性(java各个版本有什么特点、什么用途?)
- 2024-10-09 「Java开发指南」如何在Spring中使用JAX-WS注释器?
- 2024-07-04 我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊
- 2024-07-04 JDK/bin下工具列表说明及归纳(jdk安装教程在bin里打开什么)
- 2024-07-04 MyEclipse技术深度剖析——企业级的Java EE & Jakarta EE IDE
- 2024-07-04 SOA、微服务、RMI、RPC、Rest/RestFul、Soap、WebService详解
- 2024-07-04 java JDK1.6版本新特性部分详解(java三大特性)
- 2024-07-04 Java教父对Java基础、Java框架、Java+云数据的学习路线总结
- 2024-07-04 25、高并发Netty相关的开源项目汇总清单有哪些
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)