예: 기본 초기 컨텍스트 가져오기

프로그램이 기본 초기 컨텍스트를 가져오는 여러 방법이 있습니다.

다음 예는 기본 초기 컨텍스트를 가져옵니다. javax.naming.InitialContext 생성자에 전달된 제공자 URL은 없습니다.

...
import javax.naming.Context;  
import javax.naming.InitialContext;
...
Context initialContext = new InitialContext();
...

리턴된 기본 초기 컨텍스트는 JNDI(Java™ Naming and Directory Interface) 클라이언트의 런타임 환경에 따라 다릅니다. 다음은 여러 환경에서 리턴된 초기 컨텍스트입니다.

씬 클라이언트
초기 컨텍스트는 포트 2809의 로컬 호스트에서 실행 중인 서버의 서버 루트 컨텍스트입니다.
단일 클라이언트
초기 컨텍스트는 -CCD 명령행 매개변수로 launchClient 명령에 전달된 java.naming.provider.url 특성으로 지정된 컨텍스트입니다. 일부 다른 컨텍스트로 해석되는 corbaname 또는 corbaloc를 구성할 수 있더라도, 컨텍스트는 보통 URL에서 지정된 주소에 있는 서버의 서버 루트 컨텍스트입니다.

지정된 제공자 URL이 없는 경우, -CCproviderURL 또는 -CCBootstrapHost-CCBootstrapPort 명령행 매개변수에서 지정한 호스트와 포트에서 실행 중인 서버의 서버 루트 컨텍스트입니다. 기본 호스트는 로컬 호스트이며 기본 포트는 2809입니다.

서버 프로세스
초기 컨텍스트는 해당 프로세스의 서버 루트 컨텍스트입니다.

이전 예에서 명시적으로 지정된 제공자 URL이 없더라도, InitialContext 생성자는 특성 설정을 검색하는 다른 위치에서 정의된 제공자 URL을 찾을 수 있습니다.

ORB 초기화에 영향을 주는 특성의 사용자는 초기 컨텍스트를 얻는 방법을 정확하게 깊게 이해하기 위해 이 섹션의 나머지를 읽어야 합니다.

초기 컨텍스트를 얻는 데 사용된 서버 판별

WebSphere® Application Server 이름 서버는 CORBA CosNaming 이름 서버로, 제품은 JNDI 클라이언트용 CosNaming JNDI 플러그인 구현을 제공하여 제품 네임스페이스에서 이름 지정 조작을 수행합니다. CosNaming 플러그인 구현은 InitialContext 생성자에게 전달된 JNDI 특성을 통해 선택됩니다. 이 특성은 java.naming.factory.initial이며, 사용할 초기 컨텍스트 팩토리 구현을 지정하여 초기 컨텍스트를 얻습니다. 팩토리는 javax.naming.Context 인스턴스를 리턴하며, 이는 구현의 일부입니다.

초기 컨텍스트 팩토리, com.ibm.websphere.naming.WsnInitialContextFactory는 일반적으로 JNDI 조작을 수행하도록 애플리케이션에서 사용됩니다. JNDI 클라이언트에서 명시적으로 지정되지 않은 경우 WebSphere Application Server 런타임 환경은 이 초기 컨텍스트 팩토리를 사용하도록 설정됩니다. 초기 컨텍스트 팩토리가 호출되면 초기 컨텍스트를 얻습니다. 다음 단락은 초기 컨텍스트 팩토리가 클라이언트 및 서버 환경에서 초기 컨텍스트를 얻는 방법을 설명합니다.

  • 서버 프로세스에서 초기 참조의 등록

    모든 WebSphere Application Server에는 해당 서버에서 실행 중인 오브젝트에 대한 호출을 수신하고 디스패치하는 데 사용된 ORB가 있습니다. 서버 프로세스에서 실행 중인 서비스는 ORB로 초기 참조를 등록할 수 있습니다. 각 초기 참조는 키 아래 등록되며, 문자열 값입니다. 초기 참조는 CORBA 오브젝트일 수 있습니다. WebSphere Application Server 이름 서버는 사전 정의된 키 아래 초기 참조로 여러 초기 컨텍스트를 등록합니다. 각 이름 서버 초기 참조는 인터페이스 org.omg.CosNaming.NamingContext의 인스턴스입니다.

  • 단일 클라이언트 프로세스에서 초기 참조 얻기

    단일 JNDI 클라이언트, 즉 WebSphere Application Server 프로세스에서 실행되지 않는 JNDI 클라이언트에도 ORB 인스턴스가 있습니다. 이 클라이언트 ORB 인스턴스는 InitialContext 생성자에 전달될 수 있지만 일반적으로 초기 컨텍스트 팩토리가 작성되며 클라이언트 ORB 인스턴스를 투명하게 초기화합니다. 클라이언트 ORB를 초기 참조로 초기화할 수 있지만 초기화 참조는 일부 서버에서 실행 중인 오브젝트로 해석할 수 있는 가능성이 높습니다. ORB를 초기화할 때 초기 컨텍스트 팩토리는 기본 초기 참조를 정의하지 않습니다. resolve_initial_references 메소드가 클라이언트 ORB에서 호출되는 경우 구성된 초기 참조가 없으면, 메소드 호출이 실패합니다. 이 조건은 단일 클라이언트 프로세스에 대해 일반적입니다. 초기 NamingContext 참조를 얻기 위해, 초기 컨텍스트 팩토리는 corbaloc:iiop:myhost:2809와 같은 IIOP 유형 CORBA 오브젝트 URL로 string_to_object를 호출해야 합니다. URL은 초기 컨텍스트를 얻을 서버의 주소를 지정합니다. 호스트와 포트 정보는 InitialContext 생성자에 전달된 제공자 URL에서 추출됩니다.

    [AIX][HP-UX][Linux][Solaris][Windows][z/OS]정의된 제공자 URL이 없는 경우, WebSphere Application Server 초기 컨텍스트 팩토리는 corbaloc:iiop:localhost:2809의 기본 제공자 URL을 사용합니다.

    [IBM i]정의된 제공자 URL이 없는 경우, WebSphere Application Server 초기 컨텍스트 팩토리는 corbaloc:iiop:your.server.name:2809의 기본 제공자 URL을 사용합니다.

    string_to_object ORB 메소드는 URL을 해석하며 대상 서버 ORB와 통신하여 초기 참조를 얻습니다.

  • 서버 프로세스에서 초기 참조 얻기

    JNDI 클라이언트가 WebSphere Application Server 프로세스에서 실행 중인 경우, JNDI 클라이언트가 ORB 인스턴스를 제공하지 않으면 초기 컨텍스트 팩토리는 서버 ORB 인스턴스에 대한 참조를 얻습니다. 일반적으로, 서버 프로세스에서 실행 중인 JNDI 클라이언트는 서버 ORB 인스턴스를 사용합니다. 즉, ORB 인스턴스를 InitialContext 생성자에 전달하지 않습니다. 서버 프로세스에서 실행 중인 이름 서버는 제공자 URL을 java.lang.System 특성으로 설정하여 프로세스의 모든 JNDI 클라이언트에 대해 기본 제공자 URL로 제공합니다. 이 기본 제공자 URL은 corbaloc:rir:/NameServiceServerRoot입니다. 이 URL은 해당 서버에 대한 서버 루트 컨텍스트로 해석합니다. (URL은 NameServiceServerRoot의 키로 ORB에서의 resolve_initial_references 호출과 동등합니다. 이름 서버는 해당 키의 초기 참조로 서버 루트 컨텍스트를 등록합니다.)

  • 레거시 ORB 프로토콜 이해

    WebSphere Application Server 버전 5 이전 릴리스는 다른 ORB 구현을 사용했으며, 현재 사용된 INS(Interoperable Name Service) 프로토콜과 반대로 레거시 프로토콜에서 사용됩니다. 이 변경사항은 초기 컨텍스트 팩토리의 구현에 영향을 줍니다. WebSphere Application Server의 이전 릴리스와 비교하여 초기 JNDI 컨텍스트를 얻는 경우 특정 유형의 단일 클라이언트는 다른 동작을 경험할 수 있습니다. 이 동작은 이 섹션의 뒤에서 자세히 논의됩니다.

    다음 ORB 특성은 ORB 초기화에 대해 레거시 ORB 프로토콜로 사용되며 이제 더 이상 사용되지 않습니다.

    • com.ibm.CORBA.BootstrapHost
    • com.ibm.CORBA.BootstrapPort

    초기 참조가 정의되지 않은 경우 기본 동작을 표시하지 않는다는 점에서 새 INS ORB는 대부분 다릅니다.

    [AIX][HP-UX][Linux][Solaris][Windows][z/OS]레거시 ORB에서, 부트스트랩 호스트와 포트 값의 기본값은 localhost900입니다.

    [IBM i]레거시 ORB에서 부트스트랩 호스트와 포트 값의 기본값은 your.server.name900입니다.

    모든 초기 참조는 부트스트랩 호스트와 포트에서 실행 중인 서버에서 얻습니다. 그러므로 ORB 사용자가 부트스트랩 호스트와 포트를 제공하지 않은 경우, 모든 초기 참조는 포트 900의 로컬 호스트에서 실행 중인 서버에서 해석됩니다. INS ORB에는 부트스트랩 호스트나 부트스트랩 포트의 개념이 없습니다. 모든 초기 참조가 독립적으로 정의됩니다. 즉, 다른 초기 참조는 다른 서버로 분석될 수 없습니다. ORB.resolve_initial_references가 키로 호출되지 않는 경우, ORB는 해당 키가 있는 초기 참조로 초기화되지 않으며 호출은 실패합니다.

    버전 5 이전 릴리스에서, 초기 컨텍스트 팩토리는 제공자 URL이 없는 ORB에서 resolve_initial_references를 호출했습니다. 기본 부트스트랩 호스트와 포트의 이름 서버가 실행 중인 경우 이 조치는 성공했습니다. 현재 릴리스에서 INS ORB로 실패합니다. (실제로, 폐기 기간 중 ORB가 레거시 프로토콜로 폴백하지만, 레거시 프로토콜이 더 이상 지원되지 않으면 조작이 실패합니다.)

    [AIX][HP-UX][Linux][Solaris][Windows][z/OS]초기 컨텍스트 팩토리는 이제 corbaloc:iiop:localhost:2809의 기본 제공자 URL을 사용하며, 제공자 URL로 string_to_object를 호출합니다.

    [IBM i]초기 컨텍스트 팩토리는 이제 corbaloc:iiop:your.server.name:2809의 기본 제공자 URL을 사용하며, 제공자 URL로 string_to_object를 호출합니다.

    이 조작은 이전 릴리스에서 단일 클라이언트가 ORB 부트스트랩 특성이나 제공자 URL을 설정하지 않은 경우 경험했던 동작을 유지합니다. 그러나 다른 이 초기 컨텍스트 팩토리 구현이 특정 레거시 단일 클라이언트에서 경험했던 동작을 변경하며, 제공자 URL을 지정하지 않습니다.

    • 초기 컨텍스트를 가져올 때 이전에 나열된 ORB 부트스트랩 특성을 설정한 클라이언트.
    • InitialContext 생성자에게 자신의 ORB 인스턴스를 제공하는 클라이언트.

    다음과 같은 두 가지 방법으로 이 동작의 변경을 피할 수 있습니다.

    • 항상 IIOP 유형 제공자 URL을 지정합니다. 이 방법은 부트스트랩 호스트와 포트 특성에 따라 다르지 않으며 부트스트랩 호스트와 포트 특성에 대한 지원이 제거되어도 계속 동작합니다. 예를 들어, myHost2809의 부트스트랩 호스트와 포트 특성 값을 각각 corbaloc:iiop:myHost:2809로 표시할 수 있습니다.
    • rir 유형 제공자 URL 사용:
      • ORB가 초기화되어 버전 5 서버를 부트스트랩 서버로 사용하는 경우 corbaloc:rir:/NameServiceServerRoot를 지정합니다.
      • ORB가 초기화되어 버전 4.0.x 서버를 부트스트랩 서버로 사용하는 경우 corbaname:rir:/NameService#domain/legacyRoot를 지정합니다.
      • ORB가 초기화되어 버전 5 또는 4.0.x 서버를 부트스트랩 서버로 사용하는 경우 corbaloc:rir:/NameService를 지정합니다.

      이 유형의 URL은 지정된 키를 사용한 ORB에서의 resolve_initial_references 호출과 동등합니다. 부트스트랩 호스트와 포트 특성이 ORB를 초기화하도록 사용 중인 경우, 부트스트랩 및 호스트 특성이 더 이상 지원되지 않으면 이 방법이 동작하지 않습니다.

  • JNDI 특성에 대한 InitialContext 생성자 검색 순서

    이 섹션의 시작에 표시된 코드 스니펫이 애플리케이션에서 실행되는 경우, 부트스트랩 서버는 특성, java.naming.provider.url의 값에 따라 다릅니다.

    [AIX][HP-UX][Linux][Solaris][Windows][z/OS]특성이 설정되지 않으면(서버 프로세스에서 기본값은 시스템 특성으로 설정), localhost의 기본 호스트와 2809의 기본 포트는 초기 컨텍스트를 얻으려는 서버의 주소로 사용됩니다.

    [IBM i]특성이 설정되지 않으면(서버 프로세스에서 기본값은 시스템 특성으로 설정), your.server.name의 기본 호스트와 2809의 기본 포트는 초기 컨텍스트를 얻으려는 서버의 주소로 사용됩니다.

    JNDI 스펙은 InitialContext 생성자가 java.naming.provider.url 특성 설정을 검색하는 위치를 설명하지만, 간단하게 특성은 다음에 표시된 순서로 다음 위치에서 선택됩니다.

    InitialContext 생성자
    예가 비어 있는 InitalContext 생성자를 사용하기 때문에 이전 예에 적용되지 않습니다.
    시스템 환경
    Java 명령 호출 시 및 프로그램 코드에서 JNDI 특성을 시스템 환경에 옵션으로 추가할 수 있습니다. 시스템 환경에서 제공자 URL을 설정하는 권장되는 방법은 Java 명령 호출에 옵션으로 제공하는 것입니다. 이 방법으로의 제공자 URL 설정은 일시적인 것이 아니므로, 기본 초기 컨텍스트를 얻으면 항상 동일한 결과를 얻습니다. 프로그램 코드는 부작용으로 인해 시스템 환경에서 제공자 URL 특성을 설정하지 않는 것이 일반적으로 권장되지만, 동일 프로세스의 다른 곳에서 실행 중인 관련없을 수 있는 다른 코드에 악영향을 미칠 수 있습니다.
    jndi.properties 파일
    유효한 클래스 로더의 범위 내에 있는 여러 jndi.properties 파일이 있을 수 있습니다. 모든 jndi.properties 파일은 JNDI 특성 설정에 사용되지만, 제공자 URL 설정은 클래스 로더에서 리턴된 첫 번째 jndi.properties 파일에서 판별됩니다.

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rnam_example_prop1
파일 이름:rnam_example_prop1.html