Sun Java System Application Server Enterprise Edition 8.1 2005Q1 管理ガイド |
第 10 章
JNDI リソースこの章では、管理コンソールを使用して JNDI リソースを設定する方法について説明します。この章には次の節が含まれています。
Java Naming and Directory Interface (JNDI) についてこの節では、Java Naming and Directory Interface (JNDI) について説明します。JNDI は、さまざまな種類のネーミングおよびディレクトリサービスにアクセスするための API (Application Programming Interface) です。J2EE コンポーネントは、JNDI ルックアップメソッドを起動することによってオブジェクトを検出します。
この節では、次の項目について説明します。
JNDI 名とリソース
JNDI は、Java Naming and Directory Interface API の略語です。API を呼び出すことにより、アプリケーションはリソースとほかのプログラムオブジェクトを検出します。リソースとは、データベースサーバーやメッセージングシステムなどのシステムへの接続を提供するプログラムオブジェクトです。JDBC リソースはデータソースと呼ばれる場合もあります。それぞれのリソースオブジェクトは人間が理解しやすい JNDI 名という一意の名前で識別されます。リソースオブジェクトと JNDI 名は、Application Server に含まれているネーミングサービスおよびディレクトリサービスによって相互にバインドされています。新しいリソースを作成すると、JNDI に新しい名前とオブジェクトのバインドが入力されます。
J2EE ネームサービス
JNDI 名は人間が理解しやすいオブジェクトの名前です。これらの名前は、J2EE サーバーが提供するネームサービスとディレクトリサービスによってオブジェクトにバインドされます。J2EE コンポーネントは JNDI API を介してこのサービスにアクセスするので、通常オブジェクトはその JNDI 名を使用します。たとえば、PointBase データベースの JNDI 名は
jdbc/Pointbase
となります。Sun Java System Application Server は、起動時に設定ファイルから情報を読み込み、JNDI データベース名を自動的にネームスペースに追加します。J2EE アプリケーションクライアント、Enterprise JavaBeans、および Web コンポーネントは、JNDI ネーミング環境にアクセスする必要があります。
アプリケーションコンポーネントのネーミング環境は、配備またはアセンブリの際に、アプリケーションコンポーネントのビジネスロジックのカスタマイズを可能にするメカニズムです。このアプリケーションコンポーネントの環境を使用することにより、アプリケーションコンポーネントのソースコードにアクセスしたり、このソースコードを変更したりせずに、アプリケーションコンポーネントをカスタマイズできます。
J2EE コンテナはアプリケーションコンポーネントの環境を実装し、この環境をアプリケーションコンポーネントのインスタンスに JNDI ネーミングコンテキストとして提供します。アプリケーションコンポーネントの環境は次のとおり使用されます。
- アプリケーションコンポーネントのビジネスメソッドは JNDI インタフェースを使用して環境にアクセスします。アプリケーションコンポーネントプロバイダは、実行時にその環境に用意されるとアプリケーションコンポーネントが想定する、環境エントリのすべてを配備記述子で宣言します。
- コンテナは、アプリケーションコンポーネントの環境を格納する JNDI ネーミングコンテキストの実装を提供します。また、コンテナは、配備担当者が各アプリケーションコンポーネントの環境を作成し、管理するツールも提供します。
- 配備担当者は、コンテナが提供するツールを使用して、アプリケーションコンポーネントの配備記述子で宣言された環境エントリを初期化します。配備担当者は環境エントリの値を設定し、変更します。
- コンテナは、実行時にアプリケーションコンポーネントのインスタンスで、環境ネーミングコンテキストを利用できるようにします。アプリケーションコンポーネントのインスタンスは、JNDI インタフェースを使用して環境エントリの値を取得します。
各アプリケーションコンポーネントは、自身の一連の環境エントリを定義します。同じコンテナ内のすべてのアプリケーションコンポーネントのインスタンスは、同じ環境エントリを共有します。アプリケーションコンポーネントのインスタンスは、実行時に環境を変更することはできません。
ネーミング参照とバインディング情報
リソース参照は、リソース用にコード化されたコンポーネントの名前を識別する配備記述子の要素です。具体的には、コード化された名前はリソースの接続ファクトリを参照します。次の節で説明する例では、リソース参照名は
jdbc/SavingsAccountDB
です。リソースの JNDI 名とリソース参照名とは同じではありません。このネーミングへのアプローチでは、配備前に 2 つの名前をマップする必要がありますが、同時にコンポーネントをリソースから分離します。この分離により、後でコンポーネントが別のリソースにアクセスする必要があっても、名前を変更する必要がなくなります。この柔軟性により、既存のコンポーネントから J2EE アプリケーションを簡単にアセンブルすることが可能になります。
表 10-1 には、Sun Java System Application Server が使用する J2EE リソースの JNDI ルックアップと関連する参照が一覧表示されています。
カスタムリソースについてカスタムリソースの使用
カスタムリソースはローカルの JNDI リポジトリにアクセスし、外部リソースは外部 JNDI リポジトリにアクセスします。両方のリソースのタイプが、ユーザー指定のファクトリクラス要素、JNDI 名属性などを必要とします。この節では、J2EE リソースの JNDI 接続ファクトリリソースを設定し、これらのリソースにアクセスする方法を説明します。
Application Server では、list-jndi-entities はもとより、リソースを作成、削除、一覧表示することができます。
カスタムリソースの作成
カスタムリソースを作成するには、次の手順に従います。
- 管理コンソールの左側の区画で、JNDI 設定を変更する Sun Java System Application Server インスタンスを開きます。
- 「JNDI」タブを開き、「カスタムリソース」をクリックします。カスタムリソースがすでに作成されている場合、それらが右側の区画に表示されます。新しいカスタムリソースを作成するには、「新規」をクリックします。「JNDI」タブを開き、「新規」をクリックします。新しいカスタムリソースを追加するページが表示されます。
- 「JNDI 名」フィールドで、リソースへのアクセスに使用する名前を入力します。この名前は JNDI ネーミングサービスに登録されます。
- 「リソースタイプ」フィールドで、上記の例に示すとおり完全修飾タイプの定義を入力します。リソースタイプの定義は、
xxx.xxx
の形式に従います。- 「ファクトリクラス」フィールドで、作成するカスタムリソースのファクトリクラス名を入力します。「ファクトリクラス」はファクトリクラスのユーザー指定の名前です。このクラスは
javax.naming.spi.ObjectFactory
インタフェースを実装する必要があります。- 「説明」フィールドで、作成するリソースの説明を入力します。この説明は文字列値で、最大 250 文字を入力することができます。
- 「追加プロパティ」セクションで、プロパティ名およびプロパティ値を追加します。
- 「カスタムリソースを有効」チェックボックスにチェックマークを付けて、カスタムリソースを有効にします。
- 「了解」をクリックして、カスタムリソースを保存します。
クラスタまたはスタンドアロンインスタンスにカスタムリソースが配備されている場合、「ターゲット」タブを使用してターゲットを管理できます。「ターゲット」タブは、カスタムリソースの作成後に表示されます。ターゲット名を入力して「了解」をクリックし、ターゲットを設定します。
同機能を持つ asadmin コマンド: create-custom-resource
カスタムリソースの編集
カスタムリソースを編集するには、次の手順に従います。
- 管理コンソールの左側の区画で、JNDI 設定を変更する Sun Java System Application Server インスタンスを開きます。
- 「JNDI」を開き、「カスタムリソース」を選択します。カスタムリソースがすでに作成されている場合、それらが右側の区画に表示されます。カスタムリソースを編集するには、右側の区画のファイル名をクリックします。
- 「リソースタイプ」フィールド、「ファクトリクラス」フィールド、または「説明」フィールドを編集します。
- 「カスタムリソースを有効」チェックボックスにチェックマークを付けて、カスタムリソースを有効にします。
- 「保存」をクリックして、カスタムリソースの変更を保存します。
カスタムリソースの削除
カスタムリソースを削除するには、次の手順に従います。
同機能を持つ asadmin コマンド: delete-custom-resource
カスタムリソースの一覧表示
カスタムリソースを一覧表示するには、
asadmin ist-custom-resources
コマンドを入力します。たとえば、カスタムリソースをホスト plum 上で一覧表示するには、次のように入力します。
$asadmin list-custom-resource --
host plumtarget6
コマンドの完全なコンテキストを確認するには、
asadmin help list-custom-resources
と入力してください。
外部 JNDI リポジトリおよびリソースについて外部 JNDI リポジトリおよびリソースの使用
通常、Sun Java System Application Server で実行中のアプリケーションは、外部 JNDI リポジトリに格納されているリソースにアクセスする必要があります。たとえば、一般的な Java オブジェクトは、Java スキーマのように LDAP サーバーに格納できます。外部 JNDI リソースの要素を使用すると、このような外部リソースリポジトリを設定できます。外部 JNDI ファクトリは、
javax.naming.spi.InitialContextFactory
インタフェースを実装する必要があります。外部 JNDI リソースの使用例を示します。
<resources>
<!-- external-jndi-resource エレメントは、外部 JNDI リポジトリに格納されて
-- いる J2EE リソースへのアクセス方法を指定します。次の例は、
-- LDAP に格納されている Java オブジェクトへのアクセス方法を示します。
-- ファクトリクラスの要素は、リソースファクトリへのアクセスに使用される
-- JNDI InitialContext ファクトリを指定します。プロパティ要素は
-- 外部 JNDI コンテキストに適用可能な環境に対応します。
-- jndi-lookup-name は、指定の (この例では Java) オブジェクトを検出して
-- フェッチするための JNDI 名を参照します。
-->
<external-jndi-resource jndi-name="test/myBean"
jndi-lookup-name="cn=myBean"
res-type="test.myBean"
factory-class="com.sun.jndi.ldap.LdapCtxFactory"><property name="PROVIDER-URL" value="ldap://ldapserver:389/o=myObjects" />
<property name="SECURITY_AUTHENTICATION" value="simple" />
<property name="SECURITY_PRINCIPAL", value="cn=joeSmith, o=Engineering" />
<property name="SECURITY_CREDENTIALS" value="changeit" />
</external-jndi-resource>
</resources>外部リソースの作成
外部リソースを作成するには、次の手順に従います。
- 管理コンソールの左側の区画で、JNDI 設定を変更する Sun Java System Application Server インスタンスを開きます。
- 「JNDI」を開き、「外部リソース」を選択します。外部リソースがすでに作成されている場合、それらが右側の区画に表示されます。新しい外部リソースを作成するには、「新規」をクリックします。
- 「JNDI 名」フィールドで、リソースへのアクセスに使用する名前を入力します。この名前は JNDI ネーミングサービスに登録されます。
- 「リソースタイプ」フィールドで、上記の例に示すとおり完全修飾タイプの定義を入力します。リソースタイプの定義は、
xxx.xxx
の形式に従います。- 「JNDI ルックアップ」フィールドで、外部リポジトリを検索する JNDI 値を入力します。たとえば、外部リポジトリに接続し、Bean クラスをテストする外部リソースを作成する場合、「JNDI ルックアップ」は次のようになります。
cn=
testmybean- 「ファクトリクラス」フィールドで、JNDI ファクトリクラスの外部リポジトリを
com.sun.jndi.ldap
のように入力します。このクラスは javax.naming.spi.ObjectFactory
インタフェースを実装します。- 「説明」フィールドには、作成するリソースの説明を入力します。この説明は文字列値で、最大 250 文字を入力することができます。
- 「追加プロパティ」セクションで、プロパティ名およびプロパティ値を追加します。
- 「外部リソースを有効」チェックボックスにチェックマークを付けて、外部リソースを有効にします。
- 「了解」をクリックして、外部リソースを保存します。
クラスタまたはスタンドアロンインスタンスに外部リソースが配備されている場合、「ターゲット」タブを使用してターゲットを管理できます。「ターゲット」タブは、外部リソースの作成後に表示されます。ターゲット名を入力して「了解」をクリックし、ターゲットを設定します。
同機能を持つ asadmin コマンド:
create-jndi-resource
外部リソースの編集
外部リソースを編集するには、次の手順に従います。
- 管理コンソールの左側の区画で、JNDI 設定を変更する Sun Java System Application Server インスタンスを開きます。
- 「JNDI」を開き、「外部リソース」を選択します。外部リソースがすでに作成されている場合、それらが右側の区画に表示されます。外部リソースを編集するには、右側の区画のファイル名をクリックします。
- 「リソースタイプ」フィールド、「JNDI ルックアップ」フィールド、「ファクトリクラス」フィールド、または「説明」フィールドを編集します。
- 「外部リソースを有効」チェックボックスにチェックマークを付けて、外部リソースを有効にします。
- 「保存」をクリックして、外部リソースの変更を保存します。
外部リソースの削除
外部リソースを削除するには、次の手順に従います。
同機能を持つ asadmin コマンド: delete-jndi-resource
外部リソースの一覧表示
外部リソースを一覧表示するには、
asadmin list-jndi-resources
コマンドを入力して JNDI 名を指定します。たとえば、外部リソースを一覧表示するには、次のように入力します。
$asadmin list-jndi-resources --
target plumjndi_name_test
コマンドの完全なコンテキストを確認するには、
asadmin help list-jndi-resources
と入力してください。