- - PR -
WEB+EJBでのクラスの配置について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-11-21 13:19
おつかれさまです。
現在WEB+EJBの勉強をしているのですが。 WEB(Strus)のサーブレット、およびEJBどちらからも 使用するようなクラス配置先になやんでいます。 (データを受け渡すTransferObject等) WEB−INF¥libにJarとして配置するとEJBから見えなくなります、 EJB側のJarファイルの中に配置するのが普通なのでしょうか? 環境 WinXP Struts J-Boss J2sdk 現在の構成は以下 TEST.ear---TEST.war + +-TEST.jar(EJB) |
|
投稿日時: 2005-11-21 13:58
EJBの中に入れてしまうと今度はWebアプリケーションから参照できなくなります。
このような場合は、earファイル直下に共有クラスのJarファイルを配置し、ejb.jarや warのマニフェストファイルのClass-Path要素にそのファイルのパスを設定するのが 常套手段です。 |
|
投稿日時: 2005-11-21 14:11
どこに置いたクラスがどのモジュールから参照できるか、という依存関係はアプリケーションサーバの設計によります。
たとえば WebLogic Server では Web アプリケーションのクラスローダは EJB を読み込んでいるクラスローダの子クラスローダになります。よって EJB 内に含まれるクラスは Web アプリケーションから参照可能です。 http://edocs.beasys.co.jp/e-docs/wls/docs81/programming/classloading.html JBoss のクラスローディングのポリシーに依存しますので、ドキュメントを調べてみてはいかがでしょうか。 クラスローダの依存関係を設定するようなファイルもあるようです。 http://www.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration |
|
投稿日時: 2005-11-21 15:21
ukさんインギさんご回答ありがとうございます。
むぅ・・・私にとっては難しい問題になってきました・・・ JBossのクラスローダの設定もEJBの次にWEBのクラスを読み込んでいるようで WEBからEJBのクラスを見ることができるようです。 (そういえば、以前の開発ではWEB、EJB共通のクラスはWEBのLibに 配置し、Webspherのクラスローダーの設定をいじっていたような気が・・) さて結局はトレードオフの問題かもしれませんが、 未熟な私にはどちらがBetterなのか難しい問題です。 未熟な私が個人的に思ったことは以下・・ WEB←→EJB間の依存関係を外だしにできることは重要な気がするので、 共通のクラスはJarとしてまとめ、Earの直下に配置する案を検討しようと思います。 (ただ、EJBのHome、Remoteクラス系はどうしてもWEB→EJBの依存関係が残ってしまいますが・・) 皆さんのご意見があれば聞かせていただけると助かります ご教授よろしくお願いいたしますm(__)m 1.WEB+EJBの共通のクラスをJarにまとめ、Earの直下に配置し Web.war、EJB.jarの両ファイルから参照する(マニュフェストに記述)場合。 ・WEB←→EJB間の依存関係を外だしにできることはGood ・マニュフェストファイルの設定が必要 ・クラスの配置が3箇所になる。 2.EJB側に共通のクラスを配置する場合 ・WEB→EJBへの依存関係が発生する。 ・WEBサーバーとAPPサーバー(EJB)を別にした場合、 共通のクラスへの参照ができない。 ・マニュフェストファイルの設定がないので楽 ・クラスの配置が2箇所 [ メッセージ編集済み 編集者: ペーぺー01 編集日時 2005-11-21 15:25 ] |
1