イヤーアプローチ
Tomcat の webapps/ ディレクトリにドロップするだけで、取得されます。
耳の例 (有効):
myapplication.ear
lib/
lib/libraryOne.jar
lib/libraryTwo.jar
redEjbs.jar
blueEjbs.jar
よくある間違い (無効):
myapplication.ear
libraryOne.jar (err. not a javaee module)
libraryTwo.jar (err. not a javaee module)
redEjbs.jar
blueEjbs.jar
ルートでは Java EE モジュールのみが許可されます。これらは、EJB jar、.war ファイル、Connector .rar ファイル、および Application Client jar です。Java EE 5 より前は、ライブラリを明示的に application.xml ファイルにリストする必要がありました。Java EE 5 以降では、lib/ ディレクトリに追加でき、Java EE モジュールとは対照的に単なる jar として理解できます。
崩壊した EAR アプローチ
OpenEJB/Tomcat では、すべてのライブラリを war ファイルに入れることができ、耳の概念から解放されます。これは現在、Java EE 6 の一部です。
mywebapp.war
WEB-INF/lib/libraryOne.jar
WEB-INF/lib/libraryTwo.jar
WEB-INF/lib/redEjbs.jar
WEB-INF/lib/blueEjbs.jar
仕様を含むよくある間違い:
mywebapp.war
WEB-INF/lib/javax.ejb.jar (err. clashes with the related system library)
WEB-INF/lib/libraryOne.jar
WEB-INF/lib/libraryTwo.jar
WEB-INF/lib/redEjbs.jar
WEB-INF/lib/blueEjbs.jar
それが問題であるようには聞こえませんが、完全を期すために追加します。
よくある間違い、壊れた依存関係:
tomcat/lib/libraryTwo.jar
mywebapp.war
WEB-INF/lib/libraryOne.jar
WEB-INF/lib/redEjbs.jar
WEB-INF/lib/blueEjbs.jar
上記は仕様の観点からは無効ではなく、サーバーが検出することは不可能ですが、それでもアプリが正しく読み込まれない可能性があります。libraryTwo.jar が libraryOne.jar のクラスを必要とする場合、Tomcat の「lib」クラスローダーは「webapp」クラスローダーのクラスを認識できないため、このアプリは機能しません。したがって、libraryTwo.jar のクラスは正常に読み込まれません。残念なことに、VM は欠落していた実際のクラスをほとんど言いません。代わりに、欠落していたクラスが必要になる一連のイベントの最初のクラスを報告します。これはほとんどの場合、Bean クラスまたはサーブレット クラスです。