21.2. 글로벌 바인딩 구성
이름 지정 하위 시스템을 사용하면 java:global,java:jboss 또는 java 글로벌 JNDI 네임스페이스에 항목을 바인딩할 수 있지만 표준 이식 가능한 java:global 네임스페이스를 사용하는 것이 좋습니다.
글로벌 바인딩은 이름 지정 하위 시스템의 <bindings > 요소에서 구성됩니다. 다음 네 가지 유형의 바인딩이 지원됩니다.
간단한 바인딩 구성
간단한 XML 구성 요소는 기본 또는 java.net.URL 항목을 바인딩합니다.
-
name속성은 필수이며 항목의 대상 JNDI 이름을 지정합니다. -
value속성은 필수이며 항목의 값을 정의합니다. -
기본값은
java.lang.String이며 선택적type속성은 항목의 값 유형을 지정합니다.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 모듈 ID를 지정합니다. -
선택적
환경하위 요소는 오브젝트 팩토리에 사용자 지정 환경을 제공하는 데 사용할 수 있습니다.
다음은 오브젝트 팩토리 바인딩을 생성하는 관리 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 초기 이름 지정 컨텍스트 유형을 나타냅니다. 이러한 유형에는 단일 환경 맵 인수가 있는 생성자가 있어야 합니다. -
선택적
모듈속성은 외부 JNDI 컨텍스트에 필요한 모든 클래스를 로드할 수 있는 JBoss 모듈 ID를 지정합니다. -
기본값은
false인 선택적cache속성은 외부 컨텍스트 인스턴스를 캐시해야 하는지 여부를 나타냅니다. -
선택적
환경하위 요소를 사용하여 외부 컨텍스트를 조회하는 데 필요한 사용자 지정 환경을 제공할 수 있습니다.
다음은 외부 컨텍스트 바인딩을 생성하는 관리 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
lookup(Name) 메서드를 제대로 구현하지 않는 JNDI 공급자를 위한 리소스는 "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