예제: 제공자 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);
...
비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);
...