GlassFish - 相互依存関係を持つ2つの瓶の展開
-
07-09-2020 - |
質問
私はJava EEへの新人ですのでこれはダミー質問です。しかし、私は戦争とEJBを含む瓶をGlassFish 3.1に展開しています。サーバ。WARは、jarファイル内のEJBの1つを参照しています。この作業を行うために、WARファイルのlib
ディレクトリにEJBジャーを含めることは必須ですか?WARとJARの両方が同じApp Server上で実行されているので、私はこれらの依存関係の世話をする必要がないことを願っていました。ただし、EJB JARが含まれていない場合は、java.lang.NoClassDefFoundError
が入手しています(EJB JARがすでにApp Serverにデプロイされています)。
解決
Java EEの礎の1つは、コンポーネントが同じJVM内で実行されている可能性がある場合でも、名前空間を共有しないコンテナ内で異なるコンポーネントが実行できるという概念です。名前空間を共有する必要があるモジュールがある場合は、(Java EE 6の前に)または単一の戦争に組み合わせる必要があります(EJBを活用する必要があるWebアプリケーション用にJava EE 6によって確立された特別な場合)。。
これは、Java SE開発に精通している人からの重大な変更です。ほとんどのJava SEプログラムでは、コンテナはJVMプロセスです。
だから、あなたの質問への答えは、「いいえ」です。「EJBジャーをWARファイルのlibディレクトリに入れる必要はありません。両方のアーカイブを含むearファイルを作成できます。 "
これはあなたのための状況を明確にするかもしれません...
myEar.ear
+ myEJBs.jar
+ myWAR.war
+ lib
+ a-jar-that-has-classes-used-in-both-archives-above.jar
. 他のヒント
WARファイルとjarファイルをearファイルにまとめて包装しましたか?EARファイルには、エンタープライズアプリケーションのClassPath FBOにJARファイルをロードするLIBディレクトリを持つことができます。
これはあなたのクラスローダーの問題を解決するべきです。