web-dev-qa-db-ja.com

JBoss AS7スタンドアロンデプロイメントでサードパーティJARをロードするためのベストプラクティス?

JBoss-as-7.0.xスタンドアロンデプロイメントでサードパーティのJARをロードするためのベストプラクティスは何ですか?

私が試してみました:

  1. 独自のmodule.xml記述子を使用して、各JARを独立したモジュールとしてデプロイします。
  2. wARのWEB-INF/libディレクトリにJARをデプロイします。
  3. また、複数のWARで共有されるJARのfoo.ear/libディレクトリ。

上記のアプローチ1の明らかな利点は、アプローチ2およびアプローチ3よりも、デプロイ時のメモリフットプリントの削減です。ただし、JARが持つ各依存関係をmodule.xmlで明示的に定義する必要があるため、維持するのはかなり難しいようです。これは、多数のサードパーティライブラリではメンテナンスが難しいようです。

26
travega

デプロイ専用の小さな依存関係の場合は、WEB-INF/lib.warに入れてください。それが目的です。 Mavenを使用している場合、それは<compile />スコープ内のすべてに対してほとんど自動で透過的でなければなりません。

大きく複雑な依存関係、または複数のアプリ間で共有される依存関係の場合は、オプション(4)を使用します。

「OpenJPA」や「Log4J」などの各論理ライブラリを、apiとimpl jar、および他のAS7モジュールでまだ提供されていない依存関係JARを含むモジュールとしてデプロイします。モジュールがすでにある場合は、JARをモジュールに追加するのではなく、モジュールに依存関係を追加します。複数の異なるライブラリがいくつかの共通の依存関係を共有している場合は、それらをモジュールに分割し、module.xmlにモジュールの依存関係として追加します。

jboss-deployment-structure.xml を使用して、.war/.ear /モジュールが自動検出および自動ロードされない場合は、モジュールへの依存関係を宣言するデプロイメントを行います。

私はこれがうまく機能する中低の手間のかかるアプローチだと思います。すべてを展開内のWEB-INF/libにダンプするよりも面倒です。これは、Java EEの標準的なことです。再展開を高速化し、クラスを減らすことで、展開/テスト時間を大幅に節約します。/versionが競合しています。

Mavenとmaven-dependency-pluginを使用して、少し作業をするつもりであれば、推移的な依存関係がすでに含まれているモジュールを生成できます。その一例を AS 7のEclipseLink統合用に作成したモジュール で確認できます。 AS7モジュールの作成は可能な限り自動化しています。

16
Craig Ringer