統合は、conf/server.xml
:のこの行を介してブートストラップされます。
<Listener className="org.apache.tomee.loader.OpenEJBListener" />
これは、アプリケーションが開始される前の起動直後に発生します。ディレクトリのライブラリ<tomcat-home>/webapps/openejb/lib
がTomcatシステムクラスローダーに追加され、デプロイメントに参加するために別のリスナーがインストールされ、それ以降、Tomcatライフサイクルのイベントを使用してすべてが実行されます。Tomcatは、アプリケーションの起動(デプロイ)およびシャットダウン時にいくつかのイベントを発行します。Tomcat自体がサーブレットのデプロイメントにそれらを使用し、基本的に統合はほとんど同じです。Tomcatを含む他のベンダーもこれらのフックを使用しています。その観点から、統合は本当に非常に退屈です:)
唯一の興味深い工夫は、追加のライブラリをwarファイルに入れることです。これは、実際には、既存のTomcatインストールへのライブラリの配信と追加を可能な限り簡単にする(そして削除するのを可能な限り簡単にする)ためにのみ行われます。からのすべてのライブラリは、<tomcat-home>/webapps/openejb/lib
同じように簡単にに入ることができ<tomcat-home>/lib
ます。その時点で、webapss/openejb/
戦争が必要になる可能性があるのは、HTTPを介してEJBを呼び出せるようにすることだけです。
したがって、簡単な答えは次のとおりです。
- アプリケーションの起動順序は関係ありません
- EJBデプロイメントはサーブレットデプロイメントと並行して行われます
- ジャーは、Tomcat自体が起動するとすぐにTomcatシステムクラスローダーに追加されます
他の回答で注目すべき興味深い点は、Tomcatは実際にはクラスパス内の2つのjarのみで起動することです。<tomcat-home>/lib/
Tomcat自体は、実際には起動時にすべてのjarファイルを自動的に追加します。私たちは基本的に同じことをしています<tomcat-home>/webapps/openejb/lib
<tomcat-home>/lib/
ライブラリをopenejbwebapp(tomee.war
次の最終リリースで呼び出されます)に移動して削除することを実際にテストしたとは思いませんが、それを試すためにメモしておきます。サポートするのは良いことのようですが、デフォルトでサポートすることもできます。TomcatマネージャーとROOTWebアプリケーションを削除できるので、openejb.warも簡単に削除できるようにすることをお勧めします。