1

EJB3.1 ステートレス セッション Bean を公開する Java EE 6 ボトムアップ JAX-WS を開発しています。WAR 内の Web サービスは、まだロードされていないと想定できる外部 jar (または共有ライブラリ) を参照しているため、展開時にインストールできません。

一般的な提案は、jar を /lib フォルダーに含めることです。これにより問題は解決しますが、jar は 30MB になるため、ear ファイルではなく、この外部共有ライブラリの場所に残す必要があります。

Websphere (WAS v.8) 環境または任意のサーバー環境でこの問題を回避するためのテクニックは何ですか? 私が見つけたいくつかの提案は次のとおりです。

   1. define classpath in META-INF file.    
   2. define the resources in deployment.xml    
   3. alter class loading order    
   4. (from ibm) In the case where the jars are part of a Shared Library configured on WebSphere Application Server, then a User Library must be used to configure the project for development before generating the WebService.

ただし、これらの分野でオンラインでヘルプを見つけることができませんでした. 別のテクニックはありますか、またはこれを達成することについて誰かが知っていますか? 前もって感謝します。

編集:クラスパスを使用してMETA-INFでライブラリを指定すると、それらは拡張機能、共有ライブラリなどの前にロードされますが、WARの後にロードされるため、良くありません。繰り返しますが、これはランタイムの問題ではありません。これは、Web サービスが展開時にその場で作成されるためです。

4

1 に答える 1

1

IBM にチケットを送信しました。Web サービスによって参照されるライブラリは、デプロイ時に必要であり、何らかの方法で Ear にバンドルする必要があります。それらを web-inf/lib フォルダーに入れました。ただし、参照されるライブラリが追加のライブラリに依存する場合は、これらを共有ライブラリに配置できます。私にも奇妙に思えますが、とにかく「共有ライブラリ」がハックであることを認めましょう。

それでも問題が解決しない場合は、クラスの読み込みがparent_lastに設定されていることを確認してください.

于 2012-09-26T20:42:39.147 に答える