J2EE/ JNDI/ リソース参照

JNDIネームスペースはセルを頂点とするツリー構造になっている
(=WAS管理モデルのセル-ノード-サーバの関係と同様)

JNDIの名前は3種類ある
JNDI完全修飾名
JNDIシンプル名
JNDI ENC名

JNDI完全修飾名
コンテキスト名を上位のものから"/"で区切って表記する
ただし
ノード・コンテキスト名の前には"nodes/"を入れ
サーバ・コンテキスト名の前には"servers/"を入れる
ex.
was3NetWork/nodes/was2/servers/server1
(was3NetWorkというセルの下のwas2というノードの下のserver1というサーバ)
WAS V5.xでは
セル名を"cell"で置換できるので
cell/nodes/was2/servers/server1
ともできる
このセルレベルからコンテキストを順に記述したものがJNDI完全修飾名(compound名)
クラスタ構成であれば
cell/clusters/{クラスタ名}
となる

JNDIシンプル名
jdbc/NantokaDataSourceみたいな書き方のこと
lookupする側のAPが稼動するプロセス内でのみ有効な名前

JNDI ENC名
"java:comp/env/jdbc/NantokaDataSource"みたいに"java:comp:env"で始まる書き方のこと
コレが推奨される書き方
DataSource dc = (DataSource) ictx.lookup("java:comp/env/jdbc/NantokaDataSource");
な具合にlookupする
ENC は environment naming context(環境ネーミングコンテキスト) で
lookupする側のWebアプリ(*.war)やEJB-JAR(*.jar)内でのみ有効なネームスペースに定義される

※ JNDIでのlookupは何度行っても結果は同じなので初期化時に取得するのが一般的


作成したdatasourceはWASのJNDIネームスペースの何処にどのようにbindされているのか?
dumpNameSpace utilityを使うとサーバを示すコンテキストの直下にJDBCプロバイダで定義したdataソースがbindingされているのが分かる
(最上位)/nodes/was3/servers/jdbc/sample
てな具合
※ dumpNameSpace utility:
WASのJNDIネームスペースにバインドされたオブジェクト(contextとbinding)とlinkの一覧を表示するdumpNameSpace.[bat|sh]

完全修飾名はフルパスなのでlookup出来て当然
が同様にしてENC名でcell/nodes/was3/servers/jdbc/sampleをjava:comp/env/jdbc/sampleで取ることは出来ない
ENC命はAP内のみで有効なlocalなnamespaceに定義されているのに対し
datasourceはAP内のresourceでないために取れない
なので
ENC名からserver側のblobalなnamespaceで定義されたresourceを指す何らかの参照を持たせば良い
コレがJ2EE仕様のリソース参照(resource reference)の背景


リソース参照を定義するためには?

WASに添付のAAT(application assembly tool)を使用するか
WebSphere StudioのDD(deployment descriptor : 配置記述子)エディタを使用する
※ 後者はweb.xmlに記述されるやり方

リソース参照を定義したらそのAPをデプロイする
途中の「リソース参照をリソースにマップ」リソース参照がbindingされる


ENC名+リソース参照を利用するメリットは?

完全修飾名にはセルのトポロジーに依存するだけでなく
was3やserver1のようにノード名やサーバ名に依存するコンテキスト名が含まれる
JNDI完全修飾名を使用していた場合
開発から運用の間に環境が変わるとAPのコード修正と再コンパイルが必要になる
一方
JNDI END名とリソース参照 なら
APの外部でリソースとのmappingが出来るためコード修正も再コンパイルも要らない
というのがメリット


ref:
今さら人に訊けないJNDI: 第2回 「リソース参照って何ですか?」
http://www.ibm.com/developerworks/jp/websphere/library/was/was_jndi/2.html

tag : JNDI リソース参照

2011-08-02 01:44 : j2ee : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud