WebSphere Application Server Network Deployment, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

             目次と検索結果のパーソナライズ化

JNDI を使用するアプリケーションの開発

EJB ホームや、データ・ソースなどのその他の成果物への参照は、 WebSphere Application Server ネーム・スペースにバインドされます。これらのオブジェクトは、 JNDI インターフェースを使って入手できます。初期コンテキストを取得するまでは、 JNDI 操作を実行できません。この初期コンテキストを使用して、ネーム・スペース にバインドされているオブジェクトをルックアップできます。

このタスクについて

これらの例の中では、WebSphere Application Server JNDI コンテキスト・インプリメンテーションに特有のフィーチャーの、デフォルトの振る舞いが使用されています。

WebSphere Application Server JNDI コンテキスト・インプリメンテーションには特殊なフィーチャーが含まれています。JNDI キャッシングは、 同じオブジェクトに対して繰り返し行われるルックアップ操作のパフォーマンスを強化します。 名前構文オプションでは名前構文を選択することができます。 1 つは通常の JNDI クライアントに最適化され、1 つは CosNaming アプリケーションとのインターオペラビリティーに最適化されています。 ほとんどの場合、これらのフィーチャーのデフォルトの振る舞いは、優先される動作です。 ただし、特定の状況においてはその振る舞いを変更しなければならない場合もあります。

JNDI キャッシングおよび名前構文オプションは、 javax.naming.InitialContext インスタンスと関連付けられています。 これらのフィーチャーのオプションを選択するには、WebSphere Application Server の初期コンテキスト・ファクトリーによって認識されるプロパティーを設定します。 初期コンテキスト・ファクトリーに対して可視の JNDI キャッシングまたは名前構文プロパティーを設定するには、以下のステップに従ってください。

プロシージャー

  1. オプション: JNDI キャッシュを構成します。

    JNDI キャッシングによって、JNDI ルックアップ操作のパフォーマンスを大幅に向上できます。 デフォルトでは、JNDI キャッシングが有効になっています。ほとんどの状況において、このデフォルト設定が望ましい振る舞いになります。 ただし、状況によっては、他の JNDI キャッシュ・オプションを使用してください。

    ルックアップされたオブジェクトは、ローカルにキャッシュされます。 キャッシュされたオブジェクトに対する以降のルックアップは、ローカルで解決されます。 ただし、キャッシュ・コンテンツに不整合が生じる可能性があります。 ルックアップ対象のオブジェクトの大部分は頻繁には変更されないため、通常、このことは問題になりません。 比較的頻繁に変更されるオブジェクトを検索しなければならない場合には、 JNDI キャッシュ・オプションを変更してください。

    JNDI クライアントでは、キャッシュの振る舞いを制御するために使用できるプロパティーがいくつかあります。

    プロパティーは、 以下の方法で設定できます。
    • コマンド行から、実際のストリング値を入力して設定します。 以下に例を示します。
      java -Dcom.ibm.websphere.naming.jndicache.maxentrylife=1440
      
    • jndi.properties ファイルで、 必要なプロパティー設定を指定したテキスト・ファイルとして、 jndi.properties という名前のファイルを作成して設定します。 以下に例を示します。
      ...
      com.ibm.websphere.naming.jndicache.cacheobject=none
      ...

      クラス・ローダーが他のどのコピーよりも前に jndi.properties のコピーをロードするように、このファイルはクラスパスの先頭に組み込みます。

    • Java プログラム内で、 com.ibm.websphere.naming.PROPS ファイルに定義されている、 PROPS.JNDI_CACHE* Java 定数を使用して設定します。 定数の定義内容は以下のとおりです。
      public static final String JNDI_CACHE_OBJECT = "com.ibm.websphere.naming.jndicache.cacheobject";
      public static final String JNDI_CACHE_OBJECT_NONE      = "none";
      public static final String JNDI_CACHE_OBJECT_POPULATED = "populated";
      public static final String JNDI_CACHE_OBJECT_CLEARED   = "cleared";
      public static final String JNDI_CACHE_OBJECT_DEFAULT   = JNDI_CACHE_OBJECT_POPULATED;
      public static final String JNDI_CACHE_NAME = "com.ibm.websphere.naming.jndicache.cachename";
      public static final String JNDI_CACHE_NAME_DEFAULT = "providerURL";
      
      public static final String JNDI_CACHE_MAX_LIFE = "com.ibm.websphere.naming.jndicache.maxcachelife";
      public static final int    JNDI_CACHE_MAX_LIFE_DEFAULT = 0;
      
      public static final String JNDI_CACHE_MAX_ENTRY_LIFE = "com.ibm.websphere.naming.jndicache.maxentrylife";
      public static final int    JNDI_CACHE_MAX_ENTRY_LIFE_DEFAULT = 0;
      

      Java プログラムにある以前のプロパティーを使用するためには、 以下のようにして、hashtable にプロパティー設定を追加し、 それを InitialContext コンストラクターに渡します。

      java.util.Hashtable env = new java.util.Hashtable();
      ...
      
      // Disable caching
      env.put(PROPS.JNDI_CACHE_OBJECT, PROPS.JNDI_CACHE_OBJECT_NONE); ...
      javax.naming.Context initialContext = new javax.naming.InitialContext(env);
  2. オプション: 名前構文を指定します。

    INS 構文 は、CORBA アプリケーションとの相互運用が必要な JNDI クライアント用に設計されています。 この構文を使用すると、JNDI クライアントは、CORBA 名との間で正しくマッピングを行うことができます。 INS 構文は、追加の特殊文字であるドット (.) を持つ JNDI 構文と非常によく似ています。 ドットは、名前コンポーネント内の id フィールドと kind フィールドを区切るために使用します。 ドットは、エスケープされると、文字どおりに解釈されます。 名前コンポーネント内で使用できるエスケープされないドットは、1 つだけです。 空でない id フィールドと空の kind フィールドを持つ名前コンポーネントは、 id フィールド値によってのみ表され、エスケープされないドットで終わることはできません。 空の名前コンポーネント (空の id および空の kind フィールド) は、 エスケープされない単一のドットで表されます。 空のストリングは、無効な名前コンポーネント表記です。

    JNDI 名前構文 は、デフォルト構文であり、 一般的な JNDI クライアントに適しています。 この構文には、スラッシュ (/) と円記号 (¥) という特殊文字が含まれます。 名前内のコンポーネントは、スラッシュで区切ります。 円記号は、エスケープ文字として使用します。 スラッシュは、エスケープされると (つまり、その前に円記号を置くと) 文字どおりに解釈されます。 同様に、円記号は、エスケープされると文字どおりに解釈されます。

    ほとんどの WebSphere アプリケーションは JNDI を使用して EJB オブジェクトを検索するので、 CORBA アプリケーションによってバインドされたオブジェクトを検索する必要はありません。 したがって、JNDI 名に使用されるデフォルトの名前構文が最も便利です。 CORBA アプリケーションによりバインドされたオブジェクトのルックアップを必要とするアプリケーションの場合、 すべての CORBA CosNaming 名を表示できるように名前構文を変更しなければならない可能性があります。

    JNDI クライアントは、プロパティーの設定により名前構文を設定できます。 新規 java.naming.InitialContext オブジェクトのインスタンス生成時に、 初期コンテキスト・ファクトリーによってプロパティー設定が適用されます。 初期コンテキストでの JNDI 操作で指定される名前は、 指定された名前構文に従って解析されます。

    プロパティーは、次のようにして設定することができます。

    • コマンド行から、実際のストリング値を入力します。以下に例を示します。
       java -Dcom.ibm.websphere.naming.name.syntax=ins
    • 必要なプロパティー設定をしたテキスト・ファイルとして、jndi.properties という 名前のファイルを作成します。以下に例を示します。
      ...
      com.ibm.websphere.naming.name.syntax=ins
      ...
      クラス・ローダーが他のコピーよりも前に jndi.properties のコピーをロードするように、 このファイルをクラスパスの先頭に組み込みます。
    • Java プログラムの com.ibm.websphere.naming.PROPS ファイルに定義されている PROPS.NAME_SYNTAX* Java 定数を使用して設定します。定数の定義内容は以下のとおりです。
      public static final String NAME_SYNTAX = "com.ibm.websphere.naming.name.syntax";
      public static final String NAME_SYNTAX_JNDI = "jndi";
      public static final String NAME_SYNTAX_INS  = "ins";

      Java プログラムにある以前のプロパティーを使用するためには、 以下のようにして、hashtable にプロパティー設定を追加し、 それを InitialContext コンストラクターに渡します。

      java.util.Hashtable env = new java.util.Hashtable();
      ...
      env.put(PROPS.NAME_SYNTAX, PROPS.NAME_SYNTAX_INS);  // Set name syntax to INS
      ...
      javax.naming.Context initialContext = new javax.naming.InitialContext(env);



サブトピック
例: デフォルトの初期コンテキストの取得
例: プロバイダー URL プロパティーの設定による初期コンテキストの取得
例: プロバイダー URL プロパティーの設定による、初期コンテキストとしての異なるルート・コンテキストの選択
例: JNDI を使用した EJB ホームのルックアップ
例: JNDI を使用した JavaMail セッションのルックアップ
JNDI インターオペラビリティーの考慮事項
JNDI キャッシング
JNDI キャッシュ設定
例: プログラムからの JNDI キャッシュの動作の制御
JNDI から CORBA への名前マッピングの考慮事項
例: 名前ストリングの構文解析のために使用する構文の設定
関連概念
ネーミング
ネーム・スペースの論理ビュー
関連タスク
ネーミングの使用
関連資料
WebSphere Application Server の JNDI サポート
デプロイメント記述子およびシン・クライアントにおけるルックアップ名のサポート
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 7:44:53 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/tnam_develop_naming.html