JAXWS ClassCastException异常在JBoss(JaxWS ClassCastEx

2019-07-29 22:29发布

我使用JBoss 5.1.0.GA(为JDK6),和JAXWS 2.2.6。 当我调用web服务,我得到以下异常:

java.util.ServiceConfigurationError:javax.xml.ws.spi.Provider:提供org.jboss.ws.core.jaxws.spi.ProviderImpl无法实例:java.lang.ClassCastException在org.jboss.resource.work.WorkWrapper .completed(WorkWrapper.java:283)
在org.jboss.util.threadpool.BasicTaskWrapper.taskCompleted(BasicTaskWrapper.java:367)在org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:268)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask (ThreadPoolExecutor.java:886)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908)在java.lang.Thread.run(Thread.java:680)

java.util.ServiceConfigurationError:由造成javax.xml.ws.spi.Provider:提供org.jboss.ws.core.jaxws.spi.ProviderImpl无法实例:java.lang.ClassCastException在java.util.ServiceLoader。失败(ServiceLoader.java:207)在java.util.ServiceLoader.access $ 100(ServiceLoader.java:164)在java.util.ServiceLoader $ LazyIterator.next(ServiceLoader.java:353)在java.util.ServiceLoader $ 1.next (ServiceLoader.java:421)在javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Provider.java:180)在javax.xml.ws.spi.Provider.provider(Provider.java:140)在javax.xml。 ws.Service。(Service.java:92)
[...]
java.lang.ClassCastException在java.lang.Class.cast(Class.java:2990)在java.util.ServiceLoader $ LazyIterator.next(ServiceLoader.java:345):... 3个所致
... 14个

我也试图从3.1.2.GA更新将JBossWS到3.4.0版本,什么都没有改变。 我已经读了很多有关检查的lib /核准的JBoss罐的建议,所以这是内容:

activation.jar
jaxb-api.jar
jaxws-api.jar
jbossws-native-factories.jar
resolver.jar
serializer.jar stax-api.jar
xalan.jar
xercesImpl.jar

我还添加了开关-verbose:类到JVM:

[Loaded org.jboss.ws.core.jaxws.spi.ProviderImpl from jar:file:/Users/carlo/jboss-5.1.0.GA/common/lib/jbossws-native-core.jar!/]

和类扩展javax.xml.ws.spi.Provider (http://bit.ly/LK9bNE)

有人可以帮助我这是怎么回事呢?

编辑1
好了,我看到ClassCastException异常从提出:ServiceLoader.java线345

S p = service.cast(Class.forName(cn, true, loader).newInstance());

当service.cast被调用, thisjavax.xml.ws.spi.Provider和铸造的arg org.jboss.ws.core.jaxws.spi.ProviderImpl 。 我还是不明白,虽然这个问题。

Answer 1:

最后,我已经成功地解决我的问题:我把jaxws-rt.jar$JBOSS_HOME/lib/endorsed

编辑
我曾在JBoss EAP 5.1同样的问题,并解决它,操作步骤有一点不同:在$JBOSS_HOME/lib/endorsed我删除了旧的JAXB api.jar文件,然后复制

  • JAXB-api.jar文件
  • JAXB - impl.jar中
  • JAXWS-api.jar文件
  • JAXWS-的rt.jar

从最新的JAXWS里包,最终它的工作。



Answer 2:

我面临着同样的问题。 我与JDK 1.6_22一起运行JBoss EAP 5.1。

我做的事情略有不同。 我结合卡罗加上解决方案这个解决方案 。

我在$ JBOSS_HOME /服务器// LIB /批准创建的认可文件夹。 然后我在streambuffer.jar复制,STAX-ex.jar,policy.jar,JAXWS-rt.jar中,JAXWS-api.jar中,JAXB - impl.jar中,JAXB-api.jar文件和gmbal-API only.jar。

我离开了$ JBOSS_HOME / lib目录/独认可。

这样做,我能得到它的工作一切工作



Answer 3:

我对JBoss的同样的问题5.1 EAP而不是把jar文件到JBoss应用服务器,当你用重载服务器类隔离WAR改变类加载逻辑,更强劲的( http://www.jboss.org/community/wiki/ classloadingconfiguration )在我来说,我有3个环境。 有了这个解决方案,我可以从一个JBOSS实例战争文件移动到另一个,它仍然可以工作。

添加此到JBoss-web.xml中:我的解决了这个问题:

<class-loading java2ClassLoadingCompliance="false">
    <loader-repository>
        com.example:archive=unique-archive-name
        <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
    </loader-repository>
</class-loading>

...

并通过加入requierd罐子进入战斗(JAXB-api.jar文件,JAXB-impl.jar中,JAXWS-api.jar文件,JAXWS-rt.jar中)



文章来源: JaxWS ClassCastException on JBoss