加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

JBoss调用Webservice出现org.jboss.ws.core.jaxws.spi.ProviderI

发布时间:2020-12-16 22:13:50 所属栏目:安全 来源:网络整理
导读:一、环境介绍 Linux CentOS 6.5 64bit,JDK1.7 ,JBoss 4.3.0-GA,项目工程引用cxf框架,版本号为2.5.0 二、报错信息 项目中自身发布的Webservice没有问题,外部可以正常调用,但项目作为客户端调用其他系统发布的Webservice接口时,任何接口都报如下错误:

一、环境介绍
Linux CentOS 6.5 64bit,JDK1.7 ,JBoss 4.3.0-GA,项目工程引用cxf框架,版本号为2.5.0

二、报错信息
项目中自身发布的Webservice没有问题,外部可以正常调用,但项目作为客户端调用其他系统发布的Webservice接口时,任何接口都报如下错误:

java.util.ServiceConfigurationError:javax.xml.ws.spi.Provider:Provider org.jboss.ws.core.jaxws.spi.ProviderImpl not found
    at java.util.ServiceLoader.fail(ServiceLoader.java:231)
    at java.util.ServiceLoader.access$300(ServiceLoader.java:181)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:365)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:445)
    at javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Provider.java:165)
    at javax.xml.ws.spi.Provider.provider(Provider.java:125)
    at javax.xml.ws.Service.<init>(Service.java:77)

三、原因定位
初步怀疑是Jboss中webservice版本与项目工程中cxf版本有冲突。

四、解决办法
发现在Jboss/Jboss-as/server/xxx/lib下面有一个jar包:jboss-jaxws.jar,删除掉后,webservice恢复正常。

五、原因分析
1)cxf框架中有一个jar包:cxf-rt-frontend-javxws-2.5.0.jar,META-INF/services/javax.xml.ws.spi.Provider文件,里面的内容是org.apache.cxf.jaxws22.spi.ProviderImpl
2)同时在jboss-jaxws.jar文件中相同目录下META-INF/services/也有一个javax.xml.ws.spi.Provider文件,里面的内容却是org.jboss.ws.core.jaxws.spi.ProviderImpl。报错的内容与此类相关。
Jboss里面没找到这个类,所以报错了。

补充:org.jboss.ws.core.jaxws.spi.ProviderImpl这个类原本是在jbossws-core.jar包里的,这个jar包由于之前与cxf框架有冲突已经删除掉了,所以导致这个报错。

六、解决办法
1)直接删除jboss-jaxws.jar文件
2)将jboss-jaxws.jar中javax.xml.ws.spi.Provider文件的内容改为org.apache.cxf.jaxws22.spi.ProviderImpl。

个人建议选择第一个解决办法,简单干脆利落,还可以回避其他类导致的版本不兼容问题。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读