21.2. 配置全局绑定
naming 子系统允许您将条目绑定到 java:global、java:jboss 或 java 全局 JNDI 命名空间,但建议您使用标准的可移植 java:global 命名空间。
全局绑定在 naming 子系统的 & lt;bindings > 元素中配置。支持四种绑定类型:
配置简单绑定
简单的 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)
/subsystem=naming/binding=java\:global\/simple-integer-binding:add(binding-type=simple, type=int, value=100)
生成的 XML 配置
使用以下命令删除绑定。
/subsystem=naming/binding=java\:global\/simple-integer-binding:remove
/subsystem=naming/binding=java\:global\/simple-integer-binding:remove
绑定对象工厂
object-factory XML 配置元素绑定 jakarta.naming.spi.ObjectFactory 条目。
-
name属性是必需的,指定条目的目标 JNDI 名称。 -
class属性是必需的,定义对象工厂的 Java 类型。 -
module属性是必需的,并指定可以从中加载对象工厂 Java 类的 JBoss 模块 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])
/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=naming/binding=java\:global\/foo\/bar\/factory:remove
/subsystem=naming/binding=java\:global\/foo\/bar\/factory:remove
绑定外部上下文
外部 JNDI 上下文(如 LDAP 上下文)的联邦可以使用 external-context XML 配置元素来实现。
-
name属性是必需的,指定条目的目标 JNDI 名称。 -
class属性是必需的,并指示用于创建联邦上下文的 Java 初始命名上下文类型。请注意,此类类型必须具有一个带有单个环境映射参数的构造器。 -
可选的模块属性指定 JBoss 模块 ID,其中可以从中加载外部 JNDI 上下文所需的任何类。
-
可选的
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])
/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=naming/binding=java\:global\/federation\/ldap\/example:remove
/subsystem=naming/binding=java\:global\/federation\/ldap\/example:remove
资源查找没有正确地实现 lookup (Name) 方法的 JNDI 供应商可能会导致 "jakarta.naming.InvalidNameException: Only support CompoundName name" 错误。
您可以通过指定外部上下文环境而不是添加以下属性来使用 lookup (String) 方法来解决这个问题,但这可能会导致性能下降。
<property name="org.jboss.as.naming.lookup.by.string" value="true"/>
<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)
/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" />
<lookup name="java:global/new-alias-name" lookup="java:global/original-name" />
使用以下命令删除绑定:
/subsystem=naming/binding=java\:global\/c:remove
/subsystem=naming/binding=java\:global\/c:remove