J2EEパッケージング戦略

ということで、earプロジェクトを構成する際に参考になる資料。
http://www-06.ibm.com/jp/software/websphere/developer/j2ee/strategy/3.html
これによると、earプロジェクトに含まれる複数のプロジェクト(EJBやWebなど)から参照する「Bundled Optional Package(ユーティリティーJar)」をEarContent配下に含めるだけではクラスローダによって発見されないそうです。
しかしJ2EEモジュールなライブラリは、クラスローダによってロードされすそうです。しかしクラスローダには親子関係があるようで、WebプロジェクトからEJBJavaプロジェクトなどのJ2EEモジュールは参照できるようです。ですがWebプロジェクトから隣のWebプロジェクトは参照できないそうです。
ここから考えると、EJBプロジェクトからJ2EEモジュールも同列なので、ただでは参照できません。
そこで出てくるのが、マニュフェストファイル「META-INF/MANIFEST.MF」です。
このファイルのClassPathエントリにjarファイル名を追加することにより、そのJ2EEモジュールやユーティリティjarを参照することができるそうです。ちなみに依存ライブラリの発見は連鎖するそうです。

(注)正確には、全てのJ2EEモジュールのマニフェスト・ファイルに該当エントリーを記述する必要はありません。たとえ、そのモジュールがそのライブラリーを必要としていても、です。ひとつのJ2EEアプリケーション内では、アプリケーション・クラスローダーはひとつです。全J2EEモジュールで共通に使用されます。そのため、あるひとつのJ2EEモジュールのマニフェスト・ファイルに使用ライブラリーが宣言されていれば、そのライブラリーは全J2EEモジュールから見えることになります。

ということで、どこか共通のJavaプロジェクトのマニュフェストファイルのClassPathエントリに、ユーティリティjarを入れることによって、問題は解決するはずってことで。