- PR -

WEB+EJBでのクラスの配置について

1
投稿者投稿内容
ペーぺー01
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 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)
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-11-21 13:58
EJBの中に入れてしまうと今度はWebアプリケーションから参照できなくなります。
このような場合は、earファイル直下に共有クラスのJarファイルを配置し、ejb.jarや
warのマニフェストファイルのClass-Path要素にそのファイルのパスを設定するのが
常套手段です。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 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
ペーぺー01
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)