23.2. グローバルバインディングの設定

naming サブシステムは、エントリーを java:globaljava:jboss、または java グローバル JNDI 名前空間へバインドできるようにしますが、標準のポータブルな java:global 名前空間を使用することが推奨されます。

グローバルバインディングは naming サブシステムの <bindings> 要素で設定されます。以下の 4 種類のバインディングがサポートされます。

シンプルバインディングの設定

simple XML 設定要素は、プリミティブまたは java.net.URL エントリーにバインドします。

  • name 属性は必須で、エントリーのターゲット JNDI 名を指定します。
  • value 属性は必須で、エントリーの値を定義します。
  • 任意の type 属性はエントリーの値の型を指定し、デフォルトは java.lang.String になります。java.lang.String の他に、int または java.lang.Integer、および java.net.URL などのプリミティブ型や対応するオブジェクトラッパークラスを指定できます。

以下に、シンプルバインディングを作成する管理 CLI コマンドの例を示します。

/subsystem=naming/binding=java\:global\/simple-integer-binding:add(binding-type=simple, type=int, value=100)

結果の XML 設定

<subsystem xmlns="urn:jboss:domain:naming:2.0">
    <bindings>
        <simple name="java:global/simple-integer-binding" value="100" type="int"/>
    </bindings>
    <remote-naming/>
</subsystem>

以下のコマンドを使用してバインディングを削除します。

/subsystem=naming/binding=java\:global\/simple-integer-binding:remove

バインディングオブジェクトファクトリー

object-factory XML 設定要素は javax.naming.spi.ObjectFactory エントリーをバインドします。

  • name 属性は必須で、エントリーのターゲット JNDI 名を指定します。
  • class 属性は必須で、オブジェクトファクトリーの Java タイプを定義します。
  • module 属性は必須で、オブジェクトファクトリーの Java クラスをロードできる JBoss Module ID を指定します。
  • 任意の environment 子要素は、カスタム環境をオブジェクトファクトリーに提供するために使用できます。

以下に、オブジェクトファクトリーバインディングを作成する管理 CLI コマンドの例を示します。

/subsystem=naming/binding=java\:global\/foo\/bar\/factory:add(binding-type=object-factory, module=org.foo.bar, class=org.foo.bar.ObjectFactory, environment=[p1=v1, p2=v2])

結果の XML 設定

<subsystem xmlns="urn:jboss:domain:naming:2.0">
    <bindings>
        <object-factory name="java:global/foo/bar/factory" module="org.foo.bar" class="org.foo.bar.ObjectFactory">
            <environment>
                <property name="p1" value="v1" />
                <property name="p2" value="v2" />
            </environment>
        </object-factory>
    </bindings>
  </subsystem>

以下のコマンドを使用してバインディングを削除します。

/subsystem=naming/binding=java\:global\/foo\/bar\/factory:remove

外部コンテンツのバインド

LDAP コンテキストなどの外部 JNDI コンテキストのフェデレーションは、external-context XML 設定要素を使用して実行されます。

  • name 属性は必須で、エントリーのターゲット JNDI 名を指定します。
  • class 属性は必須で、フェデレートされたコンテキストの作成に使用される Java 初期ネーミングコンテキストタイプを示します。このようなタイプには、単一の環境マップ引数を持つコンストラクターが必要なことに注意してください。
  • 任意の module 属性は、外部 JNDI コンテキストが必要とするすべてのクラスをロードできる JBoss Module ID を指定します。
  • オプションの cache 属性は外部コンテキストインスタンスをキャッシュする必要があるかどうかを示し、デフォルトは false になります。
  • 任意の environment 子要素は、外部コンテキストを検索するために必要なカスタム環境を提供するために使用されます。

以下に、外部コンテキストバインディングを作成する管理 CLI コマンドの例を示します。

/subsystem=naming/binding=java\:global\/federation\/ldap\/example:add(binding-type=external-context, cache=true, class=javax.naming.directory.InitialDirContext, module=org.jboss.as.naming, environment=[java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, java.naming.provider.url="ldap://ldap.example.com:389", java.naming.security.authentication=simple, java.naming.security.principal="uid=admin,ou=system", java.naming.security.credentials=secret])

結果の XML 設定

<subsystem xmlns="urn:jboss:domain:naming:2.0">
  <bindings>
    <external-context name="java:global/federation/ldap/example" module="org.jboss.as.naming" class="javax.naming.directory.InitialDirContext" cache="true">
      <environment>
        <property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
        <property name="java.naming.provider.url" value="ldap://ldap.example.com:389"/>
        <property name="java.naming.security.authentication" value="simple"/>
        <property name="java.naming.security.principal" value="uid=admin,ou=system"/>
        <property name="java.naming.security.credentials" value="secret"/>
      </environment>
    </external-context>
  </bindings>
</subsystem>

以下のコマンドを使用してバインディングを削除します。

/subsystem=naming/binding=java\:global\/federation\/ldap\/example:remove
注記

JNDI プロバイダーのリソースルックアップが lookup(Name) メソッドを適切に実装しないと、javax.naming.InvalidNameException: Only support CompoundName names エラーが発生することがあります。

以下のプロパティーを追加せずに、外部コンテキスト環境が lookup(String) メソッドを使用するよう指定すると、この問題を回避できる可能性がありますが、パフォーマンスが劣化します。

<property name="org.jboss.as.naming.lookup.by.string" value="true"/>

ルックアップエイリアスのバインド

lookup 要素を使用すると、既存のエントリーを追加の名前またはエイリアスにバインドできます。

  • name 属性は必須で、エントリーのターゲット JNDI 名を指定します。
  • lookup 属性は必須で、ソース JNDI 名を示します。

以下に、既存のエントリーをエイリアスにバインドする管理 CLI コマンドの例を示します。

/subsystem=naming/binding=java\:global\/new-alias-name:add(binding-type=lookup, lookup=java\:global\/original-name)

結果の XML 設定

<lookup name="java:global/new-alias-name" lookup="java:global/original-name" />

以下のコマンドを使用してバインディングを削除します。

/subsystem=naming/binding=java\:global\/c:remove