21.2. グローバルバインディングの設定
naming サブシステムは、エントリーを java:global、java: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="{NamingSubsystemNamespace}">
<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 設定要素は、jakarta.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="{NamingSubsystemNamespace}">
<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=jakarta.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="{NamingSubsystemNamespace}">
<bindings>
<external-context name="java:global/federation/ldap/example" module="org.jboss.as.naming" class="jakarta.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) メソッドを適切に実装していないと、"jakarta.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