質問

Axis2 WebサービスをOC4J 10.1.3アプリサーバーにデプロイしようとしています。

以前は軸1.4を使用していましたが、すべてのファイルで独自の共有ライブラリを作成しました。 1.4に問題があり、1.5でパッチが適用されたため、現在それを使用していますが、すべてのライブラリが含まれているわけではありません。今回は、axis2.warをOC4Jサーバーにデプロイし、axis2管理ページを使用してWebサービスをデプロイしようとしています。

axis2を介してWebサービスをデプロイすると、 java.lang.NoSuchMethodError:javax.jws.WebMethod.exclude()Z が発生しますが、競合するライブラリが見つかりません。 Axis2には新しいjax-wsライブラリがありますが、OC4Jアプリサーバー上の問題だと思います。 xml.jarを除外しました(古いJAXB 1.0ライブラリがあるため)。これにより、Linuxマシンではなくローカルマシンで問題が解決します。

最初にローカルフォルダーを検索するように展開計画を編集してみましたが、これによりサービスを展開できますが、サービスまたはWSDLにアクセスしようとすると、クラスキャスト例外とJXDocumentBuilderFactoryに関するエラーが表示されます(現時点では正確なエラーはありません)。

Linuxボックスの共有ライブラリとローカルマシンの共有ライブラリを比較し、それぞれで同じライブラリを使用しました(ただし、各jarのバージョンを確認しませんでした)。 axis2がOC4Jにデプロイされ、サービスをaxis2にデプロイする場合、axis2ライブラリ(jax-wsなど)を継承しませんか?

役に立ちましたか?

解決

これをorion-application.xmlに追加して、競合する継承ライブラリを削除してみてください:

<orion-application>
  <imported-shared-libraries>
    <remove-inherited name="PUT_HERE_THE_NAME_OF_THE_LIBRARY"/>
  </imported-shared-libraries>
</orion-application>

詳細:削除および/またはデフォルトでインポートされたOracle共有ライブラリの置換

編集:
共有ライブラリを検索しましたが、そこにないことがわかりました。jws-api.jarはブート時にロードされ、簡単に削除できません。

OC4J JAX-WSライブラリを置き換える
OC4JはJAX-WSを予備的にサポートしていますが、残念ながらOC4Jの起動中に古いJAX-WS APIとOracleによる実装をロードすることを意味します。これは、OC4Jの起動の非常に早い段階で、共有ライブラリが実行される前でも発生します。
起動時OC4Jライブラリは、$ ORACLE_HOME / j2ee / home / oc4j.jarブートストラップjarのboot.xmlファイルで構成されます。これを取り除くには:

1-jarファイルを$ {oracle.home} / webservices / lib / jaxws
にコピーします 2-OC4J.jarファイルを解凍
3-Locate META-INF / boot.xml
4-この行のパスをjarに置き換えます:

<code-source 
   path="${oracle.home}/webservices/lib/jws-api.jar" 
   if="java.specification.version == /1\.[5-6]/"
/>  

5-oc4j.jarの再パッケージ化(MANIFEST.MFを忘れないでください-jar -m META-INF / MANIFEST.MFを使用してください)

元の記事: WebサービスのOC4J構成

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top