我正在使用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无法实例化:org.jboss.resource.work.WorkWrapper上的java.lang.ClassCastException org.jboss.util.threadpool.BasicTaskWrapper.run (BasicTaskWrapper.java:268)的org.jboss.util.threadpool.BasicTaskWrapper.taskCompleted (BasicTaskWrapper.java:367)的.completed(WorkWrapper.java:283)。 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.util.ServiceLoader处的java.lang.ClassCastException。在java.util.ServiceLoader.access $ 100(ServiceLoader.java:164)处失败(ServiceLoader.java:207)在java.util.ServiceLoader $ 1.next处java.util.ServiceLoader $ LazyIterator.next(ServiceLoader.java:353)处失败(ServiceLoader.java:421),位于javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Provider.java:180),位于javax.xml.ws.spi.Provider.provider(Provider.java:140)。 ws.Service。(Service.java:92) […] … 3更多原因:java.lang.Class.cast(Class.java:2990)处的java.lang.ClassCastException $ LazyIterator.next(ServiceLoader.java:345) …另外14个
java.util.ServiceConfigurationError:javax.xml.ws.spi.Provider:提供者org.jboss.ws.core.jaxws.spi.ProviderImpl无法实例化:org.jboss.resource.work.WorkWrapper上的java.lang.ClassCastException org.jboss.util.threadpool.BasicTaskWrapper.run (BasicTaskWrapper.java:268)的org.jboss.util.threadpool.BasicTaskWrapper.taskCompleted (BasicTaskWrapper.java:367)的.completed(WorkWrapper.java:283)。 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.util.ServiceLoader处的java.lang.ClassCastException。在java.util.ServiceLoader.access $ 100(ServiceLoader.java:164)处失败(ServiceLoader.java:207)在java.util.ServiceLoader $ 1.next处java.util.ServiceLoader $ LazyIterator.next(ServiceLoader.java:353)处失败(ServiceLoader.java:421),位于javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Provider.java:180),位于javax.xml.ws.spi.Provider.provider(Provider.java:140)。 ws.Service。(Service.java:92) […] … 3更多原因:java.lang.Class.cast(Class.java:2990)处的java.lang.ClassCastException $ LazyIterator.next(ServiceLoader.java:345) …另外14个
我还尝试将jbossws从3.1.2.GA更新到版本3.4.0,没有任何更改。我已经阅读了很多与检查JBoss的lib / endorsed中的jar有关的建议,因此内容如下:
activation.jar jaxb-api.jar jaxws-api.jar jbossws-native-factories.jar resolver.jar serializer.jar stax-api.jar xalan.jar xercesImpl.jar
我还向JVM添加了-verbose:class开关:
[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)
javax.xml.ws.spi.Provider
有人可以帮我这里发生什么吗?
编辑1 好的,所以我看到从以下位置引发ClassCastException:ServiceLoader.java第345行
S p = service.cast(Class.forName(cn, true, loader).newInstance());
调用service.cast时,thisis javax.xml.ws.spi.Provider和要转换的arg为org.jboss.ws.core.jaxws.spi.ProviderImpl。我仍然不明白问题所在。
this
org.jboss.ws.core.jaxws.spi.ProviderImpl
最后,我设法解决了我的问题:我jaxws-rt.jar输入$JBOSS_HOME/lib/endorsed。
jaxws-rt.jar
$JBOSS_HOME/lib/endorsed
编辑 我在JBoss 5.1 EAP上遇到了同样的问题,要解决它,步骤有些不同:在$JBOSS_HOME/lib/endorsed我删除了旧的jaxb- api.jar之后,将其复制
来自最新的jaxws-ri软件包,最终成功了。