#topicpath
----
//ここにコンテンツを記述します。

***クラスパスの通し方。 [#ed7268dd]
J2EEプロジェクトの構成は
 EAR -> EJBプロジェクト(jarファイル) + WARプロジェクト(warファイル)
となりますが、クラスファイルの参照関係は
 EAR <- EJB <- WAR
となります。つまりEAR内のjarファイルはEJB、WARともに参照可能だけど、EJBがWARファイルのクラスやjarファイルを参照する事は許されていないようです((確証なし。。J2EEの仕様?))。つまりWARだけが参照するクラスファイルやjarファイルはWARだけで開発するときのようにWEB-INF/libに置けばよいのですが、EJBでも参照するクラスなどはEAR内に置くのがよいようです((Log4jのjarなどかな))。

#ref(全体像.png)


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

-EAR内のファイルをEJBで参照する
--EARのプロジェクトのルートディレクトリに該当jarを配置。ユーティリティJARというディレクトリにそのjarが表示される。
--EJBプロジェクト内で、META-INF/ejb-jar.xmlをJAR依存関係エディタで開く
--依存関係の欄に、ユーティリティJARのファイルが一覧されているので、使用したいjarにチェックを入れる
--EJBプロジェクト内で、パスが通る。完了。
#ref(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みたい。
#ref(JAR依存関係エディタWAR.png)


***RAD7.0では [#r149b759]

-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化されて配備されます。





----
この記事は
#vote(おもしろかった[18],そうでもない[0])
#vote(おもしろかった[19],そうでもない[0])
-WTPでは、EARプロジェクトのプロパティ >> J2EE Module Dependencyでチェックを入れると、application.xmlに反映されます。 -- [[きの]] &new{2006-01-31 10:12:37 (火)};

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS