2

Axis2WebサービスをOC4J10.1.3アプリサーバーにデプロイしようとしています。

以前はaxis1.4を使用していて、すべてのファイルを使用して独自の共有ライブラリを作成しました。1.5でパッチされた1.4に問題があったので、今はそれを使用していますが、すべてのライブラリが含まれているわけではありません。今回は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など)を継承しませんか?

4

1 に答える 1

4

これを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-WSAPIとOracleによる実装をロードすることを意味します。これは、共有ライブラリが動作する前でも、OC4Jブートの非常に早い段階で発生します。
起動時のOC4Jライブラリは、$ ORACLE_HOME / j2ee / home / oc4j.jarbootstrapjarのboot.xmlファイルで構成されます。これを取り除くには:

1-jarファイルを${oracle.home}/webservices/lib/jaxwsにコピーします
2-OC4J.jarファイルを解凍します
3-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構成

于 2009-09-20T21:29:31.630 に答える