JBoss呼び出しWebserviceにorgが現れる.jboss.ws.core.jaxws.spi.ProviderImple not foundエラー
一、環境紹介Linux CentOS 6.5 64 bit,JDK 1.7,JBoss 4.3.0-GA、プロジェクトプロジェクトプロジェクトはcxfフレームワークを引用し、バージョン番号は2.5.0
二、エラーメッセージ項目の中で自身が発表したWebserviceは問題なく、外部は正常に呼び出すことができるが、プロジェクトがクライアントとして他のシステムが発表したWebserviceインタフェースを呼び出す時、いかなるインタフェースも以下のエラーを報告する.
三、原因の位置づけは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.
個人的には、最初の解決策を選択することをお勧めします.簡単でさっぱりしていて、他のクラスによるバージョンの互換性の問題を回避することもできます.
二、エラーメッセージ項目の中で自身が発表した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.
個人的には、最初の解決策を選択することをお勧めします.簡単でさっぱりしていて、他のクラスによるバージョンの互換性の問題を回避することもできます.