JaxWS ClassCastException на JBoss

Я использую JBoss 5.1.0.GA (для JDK6) и jaxws 2.2.6. Когда я вызываю веб-сервис, я получаю следующее исключение:

java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Provider org.jboss.ws.core.jaxws.spi.ProviderImpl could not be instantiated: java.lang.ClassCastException at org.jboss.resource.work.WorkWrapper.completed(WorkWrapper.java:283)
at org.jboss.util.threadpool.BasicTaskWrapper.taskCompleted(BasicTaskWrapper.java:367) at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:268) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:680)

Caused by: java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Provider org.jboss.ws.core.jaxws.spi.ProviderImpl could not be instantiated: java.lang.ClassCastException at java.util.ServiceLoader.fail(ServiceLoader.java:207) at java.util.ServiceLoader.access$100(ServiceLoader.java:164) at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:353) at java.util.ServiceLoader$1.next(ServiceLoader.java:421) at javax.xml.ws.spi.Provider.getProviderUsingServiceLoader(Provider.java:180) at javax.xml.ws.spi.Provider.provider(Provider.java:140) at javax.xml.ws.Service.(Service.java:92)
[...]
... 3 more Caused by: java.lang.ClassCastException at java.lang.Class.cast(Class.java:2990) at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:345)
... 14 more

Я также пытался обновить jbossws до версии 3.4.0 с 3.1.2.GA, ничего не изменилось. Я прочитал много предложений, связанных с проверкой jar-файлов в 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: class в 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)

Может ли кто-нибудь помочь мне, что здесь происходит?

EDIT 1
Итак, я вижу, что ClassCastException вызывается из строки ServiceLoader.java 345

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

когда вызывается service.cast,this являетсяjavax.xml.ws.spi.Provider и арг для чтенияorg.jboss.ws.core.jaxws.spi.ProviderImpl. I still fail to understand the problem though.

 davidfrancis15 июн. 2012 г., 12:42
Вы можете отладить его с помощью Eclipse и поставить точку останова на исключение: ClassCastException
 davidfrancis15 июн. 2012 г., 13:07
Если вы исправите это, я отвечу на ваш вопрос, чтобы люди, которые ищут, увидели решение. И - молодец;].
 Carlo15 июн. 2012 г., 14:21
Я говорил о другой проблеме, к сожалению, не той, которая связана с вопросом.
 Carlo15 июн. 2012 г., 12:48
У меня были подобные проблемы раньше, фактически в моей зависимости от maven, которую я исключил: javax.xml.stream, stax, saaj-impl, saaj-api и mimepull. И сделал ошибки, которые я сделал исчезнуть.
 davidfrancis15 июн. 2012 г., 12:44
PS У меня было несколько проблем с JAX-WS, потому что он (в любом случае подразумевается ссылка) теперь интегрирован в JDK. Если у вас есть другая его версия на вашем classpath, а также версия в JDK, подобные вещи, как правило, случаются. Никогда не слышал о jbossws, но похоже, что это может быть реализация JAX-WS

Ответы на вопрос(3)

Решение Вопроса

jaxws-rt.jar в$JBOSS_HOME/lib/endorsed.

EDIT
У меня была та же проблема на JBoss 5.1 EAP, и для ее решения шаги немного отличаются: в$JBOSS_HOME/lib/endorsed Я удалил старый jaxb-api.jar, затем скопировал

jaxb-api.jar jaxb-impl.jar jaxws-api.jar jaxws-rt.jar

из последнего пакета jaxws-ri, и в конце концов это сработало.

 Carlo05 окт. 2012 г., 09:34
Ну, для меня это сработало. Может у нас разные библиотеки?
 05 окт. 2012 г., 16:25
Можете ли вы предоставить больше информации. Я использую JBoss 5.1 AS. У меня есть клиент веб-службы, созданный с использованием JDK 1.6_22 с JAXWS RI 2.2.7. Я не могу использовать клиент, когда он развернут на JBoss. Клиент отлично работает в автономном режиме.
 Carlo05 окт. 2012 г., 16:41
JBoss 5.1 или версия EAP? В первом случае я скачал этот файл: jboss-5.1.0.GA-jdk6.zip и больше не помню, чтобы я добавлял jar-файлы. Это было 3 месяца назад, хотя;)
 05 окт. 2012 г., 07:12
Когда я добавил 4 файла jar, указанных выше, мне потребовалось добавить еще несколько файлов. Работает ли выше, как есть, или я что-то здесь упускаю.

K 1.6_22.

Я сделал вещи немного по-другому. Я объединил решение от Carlo plusэто решение.

Я создал одобренную папку в папке $ JBOSS_HOME / server // lib / endorsed. Затем я скопировал файлы 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 / одобренным в одиночку.

Делая это, я смог заставить его работать все это работать

Вместо того, чтобы помещать файлы JAR на сервер приложений JBOSS, он становится более надежным, когда вы изменяете логику загрузки классов, изолируя WAR с помощью Overriding Server Classes (http://www.jboss.org/community/wiki/classloadingconfiguration) В моем случае у меня есть 3 среды. С помощью этого решения я могу переместить файл war из одного экземпляра 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>

...

и добавив в войну необходимые банки (jaxb-api.jar, jaxb-impl.jar, jaxws-api.jar, jaxws-rt.jar)

Ваш ответ на вопрос