3

Moxy 2.4.1(更新されたJAXB impl)とJersey 1.17(更新されたJAX-RS impl)を使用しようとしています。共有ライブラリモジュールを(ライブラリとして)サーバーに問題なくデプロイしています。

私が開発しているアプリ(WAR)では、次のようにweblogic.xmlファイルからそれらを参照しようとしています。

<library-ref>
    <library-name>EclipseLink-2.4.1</library-name>
    <specification-version>2.4.1</specification-version>
    <implementation-version>2.4.1.v20121003-ad44345</implementation-version>
    <exact-match>true</exact-match>
</library-ref>
<library-ref>
    <library-name>Jersey-1.17</library-name>
    <specification-version>1.17</specification-version>
    <implementation-version>1.17.0</implementation-version>
    <exact-match>true</exact-match>
</library-ref>

しかし、最初に参照されたライブラリだけが使用されているようです。クラスローダー分析ツール(wls-cat)を使用すると、FilteringClassLoaderが1つだけ表示され、フィルターパターンは最初の共有ライブラリのパッケージにのみ一致します。順序を切り替えると、他のライブラリが得られます。

http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsdを見ると、library-refに制限がないことがわかります。

共有ライブラリをマージし、アプリケーションごとに1つのlibrary-refのみを使用する以外に、私にできることはありますか?

編集:オプションパッケージ(EE標準機能)ではなく、共有ライブラリ(WebLogic固有の機能)を使用していることに注意してください。ライブラリの定義はどちらの方法でも同じですが、どのタイプのモジュールをライブラリにすることができ、それらを参照する方法が異なります。

4

2 に答える 2

0

WAR ファイルを使用している場合、共有ライブラリを含める適切な方法はマニフェストにあります。

「Java EE アプリケーションまたはモジュールからのオプション パッケージの参照」というタイトルのセクションを参照してください。

Java EE アーカイブ (JAR、WAR、RAR、EAR) は、アーカイブのマニフェスト ファイル内の属性を使用して、1 つ以上の登録済みオプション パッケージを参照できます。

WAR ファイルには、プルする共有ライブラリを定義するマニフェストもあります。weblogic.xml は、WAR ファイルに対してこれを行いません。weblogic.xml の library-ref は、SPI の非共有ライブラリ用です。

あなたが求めていることを行う適切な方法は、MANIFEST.MF ファイルを使用することです。この特定の例では、次のようにします。

Extension-List EclipseLink Jersey
EclipseLink-Extension-Name: EclipseLink
EclipseLink-Specification-Version: 2.4.1
EclipseLink-Implementation-Version: 2.4.1.v20121003-ad44345
Jersey-Extension-Name: Jersey
Jersey-Specification-Version: 1.17
Jersey-Implementation-Version: 1.17.0

必要に応じて、Maven でこれを行う方法の例を提供できます。私はこれを何年もやっています:)

以下は、WebLogic の共有ライブラリの概要です。WARSの具体的な例があると思っていましたが、それを省略したと思います:)

http://www.youtube.com/watch?v=ArLTKapjV_8

于 2013-10-22T01:10:36.520 に答える