クラスパスの通し方。 †
J2EEプロジェクトの構成は
EAR -> EJBプロジェクト(jarファイル) + WARプロジェクト(warファイル)
となりますが、クラスファイルの参照関係は
EAR <- EJB <- WAR
となります。つまりEAR内のjarファイルはEJB、WARともに参照可能だけど、EJBがWARファイルのクラスやjarファイルを参照する事は許されていないようです*1。つまりWARだけが参照するクラスファイルやjarファイルはWARだけで開発するときのようにWEB-INF/libに置けばよいのですが、EJBでも参照するクラスなどはEAR内に置くのがよいようです*2。
ところでWebSphere Studio内で開発するときは以下のようにパスを通しておけばよいようです。
- EAR内のファイルをEJBで参照する
- EARのプロジェクトのルートディレクトリに該当jarを配置。ユーティリティJARというディレクトリにそのjarが表示される。
- EJBプロジェクト内で、META-INF/ejb-jar.xmlをJAR依存関係エディタで開く
- 依存関係の欄に、ユーティリティJARのファイルが一覧されているので、使用したいjarにチェックを入れる
- EJBプロジェクト内で、パスが通る。完了。
- EAR内のファイルをWARで参照する、EJB内のファイルをWARで参照する
- 先のように、EAR内のファイルを参照するEJBプロジェクトがすでにある場合は、WARプロジェクトのプロパティ>>Javaのビルドパス>>プロジェクトで、該当するEJBにチェックする。すると、EARやEJB内のファイルにパスが通る。
- EAR内のファイルを参照するEJBがない場合は、WARプロジェクトのプロパティ>>Javaのビルドパス>>ライブラリで、直接EARのjarにパスを通す。。だけだとランタイム時にクラスが見つからないってなってしまった。これってムリなの???
- WARも同じで、META-INF/MANIFEST.MFをJAR依存関係エディタで開いて、依存関係でチェックを入れればOKみたい。
この記事は
現在のアクセス:46373