8

WebスタッフとEJBで構成され、WARのみ(EJB3.1を使用)としてデプロイされるJavaEE6アプリケーションがあります。ビルドはMavenに基づいています。ここで、Java EE 6でモジュールの初期化を注文する新しい可能性について読みました。これは、アプリケーションにも必要です。また、XMLでいくつかのEJBプロパティを定義するオプションが欲しいです。

この例はEARプロジェクトとしてデプロイされているため、順序はapplication.xmlで定義されています。ただし、WARでデプロイされたプロジェクトには、application.xmlはありません。今、私はそのような情報をどこで定義できるのだろうか?または、WAR-deployed-appでapplication.xmlを使用することは可能ですか?

編集:

モジュールの順序の例を正しく読んでいませんでした。最初の瞬間、アプリのEJBが読み込まれる順序について考えました。もちろん、WARアプリにはモジュールが1つしかないので、順序付けは意味がありません。

わかりました、しかし私がそれをしているとき、1つの大きな質問が残っています(変更を反映するために質問のタイトルも変更されました):ejb-jar.xmlはどうですか?どういうわけかXMLでEJBに関するものを定義できますか(再コンパイルを避けるために、いくつかの設定に役立ちます)?

4

2 に答える 2

9

つまり、WARベースの展開では不可能です。

Java EE 6のモジュール初期化機能は、アプリケーションのさまざまなモジュールを特定の順序で初期化することを目的としています。WARベースのEJBアプリケーションを使用すると、EJBアプリケーションとWebアプリケーション用に別々のモジュールがなくなります。モジュールは1つだけです。WARベースのデプロイメントのWebアプリケーションモジュールです。

したがって、Java EE 6で提供されるモジュールの初期化順序と同じ機能を実現する必要がある場合は、次のいずれかを実行する必要があります。

  • EJBを別のモジュールに分離し、EARベースのデプロイメントを使用します。
  • これは、Java EE 5で行われたように、多かれ少なかれトリッキーであり、回避する必要があります。コードで使用する前に、ロジックでコーディングして、シングルトンEJBが作成されていることを確認することをお勧めします(これは、アプリケーションでのシングルトンの使用によるものと想定しています)。

WARファイル内のejb-jar.xmlの場所

EJB 3.1仕様(パッケージ化の章)は、WARにデプロイされたときのejb-jar.xmlファイルの場所の問題に対処します。

.warファイルでは、デプロイメント記述子はWEB-INF/ejb-jar.xmlという名前で保管されます。

PS:私はまだこのスタイルの展開を試していません。YMMV。

于 2010-07-26T16:35:24.510 に答える
5

.warsおよびejb-jar.xml処理でのEJBに関する補足。すでに述べたように、場所はWEB-INF / ejb-jar.xmlですが、WEB-INF / lib/内にejbsjarがある場合でも、これがチェックされる唯一の場所であることに注意してください。そこにあるjar.xmlファイルは無視されます。

エキスパートグループはそのグループに分割されていたため、好みがあれば、EJB.nextで検討するためにEJB3.1エキスパートグループリストにフィードバックを送信するのに遅すぎることはありません。

私の投票は、これらのjarがpersistence.xmls、beans.xmls、webフラグメントなどを持つことができるように、個々のjarがMETA-INF/ejb-jar.xmlファイルを持つことを引き続き許可することでした。 EARスタイルのクラスパスをサポートするEmbeddedEJBContainer APIを使用して、それぞれがMETA-INF/ejb-jar.xmlファイルを含む可能性のある複数のjar/モジュールを許可します。その結果、Embedded APIを使用して、単一の.warファイルに構成されるマルチjar ejbアプリをテストすると、所有しているejb-jar.xmlデータを単一のejbにマージするタスクに直面します。 -webappのjar.xml。ユーザーにとっては一種の苦痛です。

于 2010-08-02T00:03:23.733 に答える