Top / WebSphere / J2EEプロジェクトの開発

クラスパスの通し方。

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

全体像.png

ところでWebSphere Studio内で開発するときは以下のようにパスを通しておけばよいようです。

  • EAR内のファイルをEJBで参照する
    • EARのプロジェクトのルートディレクトリに該当jarを配置。ユーティリティJARというディレクトリにそのjarが表示される。
    • EJBプロジェクト内で、META-INF/ejb-jar.xmlをJAR依存関係エディタで開く
    • 依存関係の欄に、ユーティリティJARのファイルが一覧されているので、使用したいjarにチェックを入れる
    • EJBプロジェクト内で、パスが通る。完了。
      JAR依存関係エディタEJB.png
  • EAR内のファイルをWARで参照する、EJB内のファイルをWARで参照する
    • 先のように、EAR内のファイルを参照するEJBプロジェクトがすでにある場合は、WARプロジェクトのプロパティ>>Javaのビルドパス>>プロジェクトで、該当するEJBにチェックする。すると、EARやEJB内のファイルにパスが通る。
    • EAR内のファイルを参照するEJBがない場合は、WARプロジェクトのプロパティ>>Javaのビルドパス>>ライブラリで、直接EARのjarにパスを通す。。だけだとランタイム時にクラスが見つからないってなってしまった。これってムリなの???
    • WARも同じで、META-INF/MANIFEST.MFをJAR依存関係エディタで開いて、依存関係でチェックを入れればOKみたい。
      JAR依存関係エディタWAR.png

RAD7.0では

  • RAD7.0でも、EAR内のjarは勝手にユーティリティjarになるようだ
  • EJBプロジェクトがEAR内のユーティリティjarを使用したい場合。そのユーティリティjarは「J2EEモジュール依存関係」に見えているので、ここにチェックを入れればいい。
  • WARプロジェクトがEJBプロジェクトのソースを参照したい場合、ビルドパス >> プロジェクトでそのEJBプロジェクトを指定する(EAR内のjarにもこれでパスが通せる)
  • WAR->EJBやWAR->EARの解決は、J2EEモジュール依存関係>>J2EE モジュール でやるんではないかなあ?
  • ちなみにJ2EEモジュール依存関係>>Web ライブラリーでプロジェクトにチェックを入れると、パスが通るのはもちろん、デプロイ時にWEB-INF/lib/にそのプロジェクトがjar化されて配備されます。

この記事は

選択肢 投票
おもしろかった 19  
そうでもない 0  
  • WTPでは、EARプロジェクトのプロパティ >> J2EE Module Dependencyでチェックを入れると、application.xmlに反映されます。 -- きの? 2006-01-31 10:12:37 (火)

Top / WebSphere / J2EEプロジェクトの開発

現在のアクセス:46342


*1 確証なし。。J2EEの仕様?
*2 Log4jのjarなどかな

添付ファイル: fileResourceWebKinoEJB.jarの展開図.png 747件 [詳細] fileResourceWebKino.earの展開図.png 766件 [詳細] file全体像.png 1768件 [詳細] fileJAR依存関係エディタWAR.png 1569件 [詳細] fileJAR依存関係エディタEJB.png 1570件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-06 (金) 16:02:12 (3333d)