예제: 제공자 URL 특성을 설정하여 초기 컨텍스트 가져오기
일반적으로 JNDI(Java™ Naming and Directory Interface) 클라이언트는 올바른 환경이 이미 구성되어 특성 값을 명시적으로 설정하고 해당 값을 InitialContext 생성자에 전달하지 않아도 되는 것으로 가정합니다. 그러나 JNDI 클라이언트는 해당 환경에서 식별된 네임스페이스와 다른 네임스페이스에 액세스해야 할 수 있습니다. 이 경우 InitialContext 생성자에서 사용되는 java.naming.provider.url(제공자 URL) 특성을 명시적으로 설정해야 합니다. 제공자 URL은 초기 컨텍스트 팩토리가 초기 컨텍스트를 얻는 데 사용할 수 있는 부트스트랩 서버 정보를 포함합니다. InitialContext 생성자에 직접 전달되는 특성 값은 환경의 다른 위치에서 발견된 같은 특성의 설정에 우선합니다.
- CORBA 오브젝트 URL
- IIOP URL
CORBA 오브젝트 URL은 IIOP URL에 비해 유연하고 사용 권장되는 URL 형식입니다. CORBA 오브젝트 URL은 OMG CosNaming Interoperable Naming Specification의 일부입니다. 예를 들어 corbaname URL은 초기 컨텍스트 및 검색 이름 정보를 포함할 수 있고 다른 초기 컨텍스트를 명시적으로 얻을 필요 없이 검색 이름으로 사용할 수 있습니다. IIOP URL은 레거시 JNDI 형식이지만 여전히 WebSphere Application Server 초기 컨텍스트 팩토리에서 지원됩니다.
다음 예제는 이러한 URL의 사용을 보여줍니다.
CORBA 오브젝트 URL 사용
이 예제는 CORBA 오브젝트 URL을 표시합니다.
...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "corbaloc:iiop:myhost.mycompany.com:2809");
Context initialContext = new InitialContext(env);
...
다중 이름 서버 주소에서 CORBA 오브젝트 URL 사용
CORBA 오브젝트 URL은 둘 이상의 부트스트랩 주소를 포함할 수 있습니다. 서버 클러스터에서 초기 컨텍스트를 얻으려고 시도할 때 이 기능을 사용할 수 있습니다. URL로 클러스터에 있는 모든 서버의 부트스트랩 주소를 지정할 수 있습니다. 최소 하나 이상의 서버가 실행되고 있는 경우 조작에 성공하여 단일 위치 실패를 제거합니다. 주소 목록이 처리되는 특정 순서는 보장되지 않습니다. 예를 들어, 목록 첫 번째 부트스트랩 주소의 서버가 사용 가능하더라도 두 번째 부트스트랩 주소가 초기 컨텍스트를 얻는 데 사용될 수 있습니다.
비z/OS 시스템에서 서버로 분석되는 다중 주소 제공자 URL은 노드 에이전트 프로세스의 부트스트랩 주소를 포함할 수 없습니다. 이는 노드 에이전트에 대한 부트스트랩이 WLM 비사용 초기 컨텍스트를 리턴하기 때문입니다. 따라서 WLM은 사용되지 않습니다. 대신 URL은 초기 컨텍스트가 WLM 사용이 되도록 같은 클러스터에 있는 멤버의 부트스트랩 주소만 포함해야 합니다. URL이 다중 클러스터의 부트스트랩 주소를 포함하는 경우 올바르지 않은 동작이 발생할 수 있습니다. 지정된 이름은 모든 클러스터에서 같은 오브젝트로 분석되거나 분석되지 않을 수 있습니다. z/OS® 운영 체제에서 실행되는 서버로 분석되는 경우 이 URL은 노드 에이전트 프로세스의 부트스트랩 주소를 포함할 수 있습니다. z/OS에서는 노드 에이전트가 WLM 사용 초기 컨텍스트를 리턴하기 때문입니다.
다중 주소를 포함하는 corbaloc URL의 예제는 다음과 같습니다.
...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.websphere.naming.WsnInitialContextFactory");
// All of the servers in the provider URL below are members of
// the same cluster.
env.put(Context.PROVIDER_URL,
"corbaloc::myhost1:9810,:myhost1:9811,:myhost2:9810");
Context initialContext = new InitialContext(env);
...
비WebSphere Application Server JNDI 구현에서 CORBA 오브젝트 URL 사용
WebSphere Application Server 초기 컨텍스트 팩토리 외의 CosNaming JNDI 플러그인 구현에 대한 초기 컨텍스트 팩토리는 오브젝트 키 NameService를 사용하여 초기 컨텍스트를 얻을 가능성이 높습니다. WebSphere Application Server 이름 서버에서 초기 컨텍스트를 얻는 데 그러한 컨텍스트 팩토리를 사용하는 경우 초기 컨텍스트는 셀 루트 컨텍스트입니다. 서버와 연관된 EJB 홈과 같은 시스템 아티팩트는 서버의 서버 루트 컨텍스트에서 바인드되기 때문에 JNDI 조작에 사용되는 이름이 규정되어야 합니다. 상대 이름을 사용하려면 초기 컨텍스트가 대상 오브젝트가 바인드되는 서버 루트 컨텍스트인지 확인하십시오. 서버 루트 컨텍스트를 초기 컨텍스트로 만들려면 오브젝트 키인 NameServiceServerRoot를 사용하여 corbaloc 제공자 URL을 지정하십시오.
다음 예제는 비WebSphere Application Server JNDI 구현의 CORBA 오브젝트 유형 URL을 보여줍니다. 다음 예제에서는 비WebSphere Application Server JNDI 구현에 의한 전체 CORBA 오브젝트 URL 지원을 가정합니다. 오브젝트 키 NameServiceServerRoot는 초기 컨텍스트가 지정된 서버의 서버 루트 컨텍스트가 되는 방식으로 지정됩니다.
...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.somecompany.naming.TheirInitialContextFactory");
env.put(Context.PROVIDER_URL,
"corbaname:iiop:myhost.mycompany.com:9810/NameServiceServerRoot");
Context initialContext = new InitialContext(env);
...
규정된 이름이 사용되는 경우 기본값 NameService를 사용할 수 있습니다.
IIOP URL 사용
URL의 IIOP 유형은 CORBA 오브젝트 URL만큼 유연하지 않은 레거시 형식입니다. 그러나 이 유형의 URL이 여전히 지원됩니다. 다음 예제는 제공자 URL로 IIOP 유형 URL을 보여줍니다.
...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "iiop://myhost.mycompany.com:2809");
Context initialContext = new InitialContext(env);
...