2

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 .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) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) で java.lang.Thread.run(Thread.java:680) で

原因: java.util.ServiceConfigurationError: javax.xml.ws.spi.Provider: Provider org.jboss.ws.core.jaxws.spi.ProviderImpl をインスタンス化できませんでした: java.util.ServiceLoader での java.lang.ClassCastException。失敗 (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)
[...]
... 3 つ以上の原因: java.lang.ClassCastException at java.lang.Class.cast(Class.java:2990) at java.util.ServiceLoader $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

スイッチ -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 が呼び出されると、thisjavax.xml.ws.spi.Providerキャストされ、キャストする引数は になりorg.jboss.ws.core.jaxws.spi.ProviderImplます。私はまだ問題を理解していません。

4

3 に答える 3

2

最後に、問題を解決することができまし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パッケージから、最終的には機能しました。

于 2012-06-15T12:47:41.980 に答える
2

私は同じ問題に直面しました。JBoss 5.1 EAP と JDK 1.6_22 を実行しています。

少し違うことをしました。Carlo のソリューションとこのソリューションを組み合わせました。

$JBOSS_HOME/server//lib/endorsed の下に 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/endorsed はそのままにしました。

これを行うと、すべてを機能させることができました

于 2012-10-05T15:15:27.717 に答える