WebSphere Application Server では、
コードが Java Naming and Directory Interface (JNDI) ネーム・スペース内の
リソースに直接アクセスするのではではなく、
論理名を使用してアプリケーション・サーバー・リソース (データ・ソース
または J2C 接続ファクトリーなど) を参照する必要があります。
これらの論理名は、リソース参照 と呼ばれます。
Application Server では、以下の理由からリソース参照を使用する必要があります。
- アプリケーション・コードが直接 JNDI ネーミング・スペース内のデータ・ソースをルックアップすると、
そのデータ・ソース内で維持される各接続は、アプリケーションに定義されたプロパティーを継承します。
したがって、複数のアプリケーション間で共用接続を維持するようにデータ・ソースを構成すると、
多くの例外が発生する可能性があります。
例えば、異なる接続構成を必要とするアプリケーションが、
その特定のデータ・ソースにアクセスを試みたとします。
その結果、アプリケーションは失敗しました。
- プログラマーは、
ターゲット・アプリケーション・サーバーにおける、
実際のデータ・ソース名または接続ファクトリー名を
知っている必要はありません。
- リソース参照によって、データ・ソースにデフォルトの分離レベルを設定できます。
リソース参照を使用しない場合は、
使用する JDBC Driver のデフォルトを取得します。
リソース参照の使用例
次のコードは、参照メソッドを使用し、
データ・ソース用のプレースホルダーを作成して、
そのデータ・ソースを呼び出します。
コードは、論理名
jdbc/Section を使用して、
JNDI サブコンテキスト
java:comp/env/ 内にプレースホルダーを保管します。
したがって、
jdbc/Section はリソース参照になります。
(サブコンテキスト
java:comp/env/ は、WebSphere Application
Server がアプリケーション・コード内のオブジェクト参照専用に提供する、
ネーム・スペースです。)
javax.sql.DataSource specificDataSource =
(javax.sql.DataSource) (new InitialContext()).lookup("java:comp/env/jdbc/Section");
//The method InitialContext()).lookup creates the logical name, or resource reference, jdbc/Section.
一般に、実際のデータ・ソースは、後で管理タスクとして構成されます。
論理名
jdbc/Section は、
アプリケーション・デプロイメント記述子において、
リソース参照として正式に宣言されます。
その後、以下の複数の方法を使って、実際のデータ・ソースの JNDI 名に
リソース参照を関連付けることができます。
- アプリケーションのアセンブリーを行う時点で、
データ・ソースの JNDI 名がわかっている場合は、
リソース参照の「バインディング」ページで、その名前を指定します。
- アプリケーションのデプロイメント時であれば、データ・ソースの JNDI 名を指定します。
- デプロイメントの後にアプリケーションを構成するときであれば、
リソース参照をデータ・ソースの JNDI 名にマップします。
このような関連付けを、
リソース参照のデータ・ソースへの
バインディング と呼びます。
必要なリソースのバインディングにおける、すべてのタイプについては、
アプリケーションのバインディング
の項を参照してください。