배치 디스크립터 및 씬 클라이언트에서 이름 찾아보기 지원 찾아보기

서버 애플리케이션 오브젝트(예: 엔터프라이즈 Bean(EJB) 홈)가 애플리케이션이 설치된 서버의 서버 루트 컨텍스트에 상대적으로 바인드됩니다. 다른 오브젝트(예: 자원)는 특정 서버 루트로 바인드될 수 있습니다. 이러한 오브젝트를 찾는 데 사용되는 이름은 정확한 서버 루트를 선택하기 위해 반드시 규정되어야 합니다. 이 주제에서는 상대적인 이름 및 규정된 이름의 개념, 이 이름이 언제 사용되는지 그리고 그 구성 방법은 무엇인지에 대해 설명합니다.

버전 8.0부터는, EJB 홈이 java:global/appName/moduleName/beanName 이름 아래에 바인드됩니다. 이 양식의 이름은 토폴로지를 기반으로 하지 않으며 완전한 이름입니다. 마찬가지로, java:global, java:app 또는 java:module 검색 이름이 지정될 때 java:global, java:app 또는 java:module 이름으로 바인드되는 모든 애플리케이션 자원은 추가 자격이 필요합니다. 애플리케이션 자원에는 EJB 참조, 자원 참조 및 환경 항목 등이 있습니다.

상대적 이름

모든 이름은 컨텍스트와 관련됩니다. 따라서 네임스페이스의 한 컨텍스트에서 분석할 수 있는 이름이 네임스페이스의 다른 컨텍스트에서도 분석할 수 있는 것은 아닙니다. 시스템은 애플리케이션이 설치된 서버의 서버 루트 컨텍스트에 상대적인 이름으로 오브젝트를 바인드하기 때문에 이 점이 중요합니다. 각 서버는 자체 서버 루트 컨텍스트를 가집니다. 기본적으로 초기 JNDI(Java™ Naming and Directory Interface) 컨텍스트는 초기 컨텍스트를 가져오는 데 사용되는 제공자 URL에서 식별되는 서버의 서버 루트 컨텍스트입니다. (일반적으로, URL은 호스트 및 포트로 구성됩니다.) 서버 프로세스에서 실행 중인 애플리케이션의 기본 초기 JNDI 컨텍스트는 해당 서버의 서버 루트입니다. 상대적 이름은 대상 오브젝트를 포함하고 있는 서버에서 초기 컨텍스트를 가져올 때 분석되지만, 다른 서버로부터 가져온 초기 컨텍스트에서는 분석할 수 없습니다.

서버 애플리케이션의 모든 클라이언트가 애플리케이션과 동일한 서버 프로세스에서 실행되는 경우, 해당 애플리케이션과 연관된 모든 오브젝트가 클라이언트의 초기 컨텍스트로서 동일한 초기 컨텍스트에 바인드됩니다. 이 경우, 서버의 서버 루트 컨텍스트에 상대적인 이름만 서버 오브젝트에 액세스하는 데 필요합니다. 그러나 서버 애플리케이션은 Application Server 프로세스 외부에서 실행되는 클라이언트를 자주 갖습니다. 이 클라이언트에 대한 초기 컨텍스트는 서버 애플리케이션의 초기 컨텍스트와 다를 수 있으며 서버 오브젝트의 상대적 이름 찾아보기에 실패할 수 있습니다. 이 클라이언트는 서버 오브젝트에 대해 규정된 이름을 사용해야 합니다. 이 점은 Java EE(Java Platform, Enterprise Edition) 클라이언트 애플리케이션 배치 디스크립터의 jndiName 값을 설정할 때 그리고 씬 클라이언트의 검색 이름을 구성할 때 고려해야 합니다. 규정된 이름은 셀의 초기 컨텍스트로부터 분석됩니다.

규정된 이름

모든 이름은 컨텍스트와 관련됩니다. 여기서 규정된 이름이라는 용어는 셀의 초기 컨텍스트로부터 분석할 수 있는 이름을 의미합니다. 이 조치는 동일한 컨텍스트, 셀 루트로 탐색하는 이름을 사용하여 완료합니다. 규정된 이름의 나머지는 셀 루트와 관련되고 셀을 통해 오브젝트를 고유하게 식별합니다. 서버의 모든 초기 컨텍스트(초기 참조로서 ORB와 함께 등록된 서버의 모든 네이밍 컨텍스트)는 셀 루트 컨텍스트로 링크된 cell 이름과의 바인딩을 포함합니다. cell/로 시작하는 모든 규정된 이름은 현재 초기 컨텍스트에서 다시

오브젝트에 대한 규정된 이름은 셀에서 동일합니다. 이름은 토폴로지 기반 이름이거나 셀 지속 루트 아래에 바인드된 고정 이름일 수 있습니다. 아래에 자세히 설명된 토폴로지 기반 이름은 대상 오브젝트에 도달할 때까지 시스템 네임스페이스를 탐색합니다. 셀 지속 루트 아래에 바인드된 고정 이름은 셀 전체에서 동일한 규정된 이름을 가지며 토폴로지와 관계없습니다. 서버 애플리케이션 오브젝트에 대한 셀 지속 루트 아래에 고정 이름을 작성하려면 서버 애플리케이션이 설치될 때 추가 단계가 필요하지만 이 단계는 애플리케이션이 셀 토폴로지의 다른 위치로 이동할 때 클라이언트에 대한 충격을 없애줍니다. 고정 이름 작성 프로세스도 뒷 부분에 설명됩니다.

일반적으로, Java EE 클라이언트 애플리케이션 배치 디스크립터의 EJB jndiName 값 및 씬 클라이언트의 EJB 검색 이름에는 규정된 이름을 사용해야 합니다. 유일한 예외는 초기 컨텍스트를 대상 오브젝트가 상주하는 서버로부터 가져오는 경우입니다. 예를 들어, 엔티티 Bean에 대해 클라이언트인 세션 Bean은 두 개의 Bean이 동일한 서버에서 실행될 때 상대적 이름을 사용할 수 있습니다. 세션 Bean과 엔티티 Bean이 다른 서버에서 실행되는 경우, 엔티티 Bean에 대한 jndiName은 반드시 세션 Bean의 배치 디스크립터에 규정되어야 합니다. 자원의 범위에 따라 자원에 대해서도 동일한 요구사항이 있을 수 있습니다.

  • 토폴로지 기반 이름

    셀 네임스페이스의 시스템 네임스페이스 파티션은 셀의 토폴로지를 반영합니다. 이 구조는 셀의 네임스페이스로 바인드되는 오브젝트에 도달하도록 탐색할 수 있습니다. 토폴로지 기반의 규정된 이름에는 셀 내의 오브젝트 위치를 반영하는 토폴로지의 요소가 포함됩니다.

    시스템 바인드 오브젝트(예: EJB 홈)에 대한 토폴로지 기반 규정 이름의 양식은 오브젝트가 단일 서버로 바인드되었는지 또는 클러스터로 바인드되었는지에 따라 달라집니다. 두 형식 모두 다음과 같이 설명됩니다.

    단일 서버
    단일 서버로 바인드된 오브젝트는 다음 양식의 토폴로지 기반 규정 이름을 갖습니다.
    cell/nodes/nodeName/servers/serverName/relativeJndiName
    nodeNameserverName은 오브젝트가 바인드된 서버에 대한 노드 이름 및 서버 이름이고, relativeJndiName은 오브젝트의 규정되지 않은 이름(서버의 서버 루트 컨텍스트와 관련된 오브젝트의 이름)입니다.
    서버 클러스터
    서버 클러스터에 바인드된 오브젝트는 다음 양식의 토폴로지 기반 규정 이름을 갖습니다.
    cell/clusters/clusterName/relativeJndiName
    clusterName은 오브젝트가 바인드된 서버 클러스터의 이름이고, relativeJndiName은 오브젝트의 규정되지 않은 이름(클러스터 멤버의 서버 루트 컨텍스트와 관련된 오브젝트 이름)입니다.
  • 고정 이름

    규정 이름이 셀 토폴로지와 관련되지 않도록 서버 오브젝트에 대한 고정 이름을 지정할 수 있습니다. 이 품질은 애플리케이션의 클라이언트가 다른 서버 프로세스 또는 단일 클라이언트에서 실행할 때 좋습니다. 고정 이름은 오브젝트가 다른 서버로 이동할 때 변경하지 않는 장점이 있습니다. Java EE 클라이언트 애플리케이션에 대한 배치 디스크립터의 jndiName 값은 설치 중인 클라이언트 또는 서버 애플리케이션의 셀 토폴로지와 관계없이 서버 오브젝트에 대한 규정된 고정 이름을 참조할 수 있습니다.

    서버 애플리케이션 오브젝트의 셀 확장 고정 이름을 정의하려면 서버 애플리케이션이 설치된 후에 추가 단계가 필요합니다. 오브젝트에 대한 바인딩이 셀 지속 루트 아래에 작성되어야 합니다. 셀 지속 루트 아래에 바인드된 고정 이름은 아무 이름이나 될 수 있지만, 셀 지속 루트가 전체 셀에 대해 글로벌이기 때문에 셀 지속 루트 아래의 모든 이름은 셀 내에서 고유해야 합니다.

    규정된 고정 이름은 다음 양식을 갖습니다.
    cell/persistent/fixedName
    fixedName은 임의의 고정 이름입니다.

    바인딩은 프로그램으로 작성할 수 있습니다(예: JNDI 사용). 그러나 서버 오브젝트에 대한 셀 범위 바인딩을 구성하는 것이 더 편리할 수 있습니다.

    프로그램 또는 구성된 최신 바인딩을 보유해야 합니다. 구성된 EJB 바인딩은 셀 토폴로지 내의 엔터프라이즈 Bean의 위치에 기초하며, 다른 서버로 EJB 애플리케이션을 이동할 때는 구성된 바인딩을 업데이트해야 합니다. 비슷한 변경은 고정 이름이 현재 참조로 다시 바인드되도록 프로그램을 사용하여 바인드된 EJB 홈 참조에 영향을 미칩니다. 그러나 Java EE 클라이언트의 경우 오브젝트에 대한 jndiName 값, 씬 클라이언트의 경우 오브젝트에 대한 검색 이름은 동일하게 유지됩니다. 다시 말해, 고정 이름으로 오브젝트에 액세스하는 클라이언트는 액세스하는 서버 애플리케이션 구성 변경의 영향을 받지 않습니다.

배치 디스크립터 바인딩에서 검색 이름 사용

Java EE 애플리케이션에는 다양한 유형의 참조를 선언하는 데 사용되는 배치 디스크립터(예: ejb-ref, resource-ref 및 resource-env-ref)가 포함될 수 있습니다. 이러한 참조 선언은 해당 Java EE 컴포넌트에 사용 가능한 java:comp/env 검색 이름을 정의합니다. 각 java:comp/env 검색 이름은 기본 초기 JNDI 컨텍스트인 서버 루트 컨텍스트에 상대적인 글로벌 네임스페이스의 검색 이름에 맵핑되어야 합니다.

참조가 찾아보기를 실행 중인 컴포넌트와 같은 서버의 서버 루트 컨텍스트 아래에 바인드된 오브젝트로 맵핑하는 경우, 상대적인 찾아보기 이름을 사용할 수 있습니다. 참조가 다른 서버의 서버 루트 컨텍스트 아래에 바인드된 오브젝트로 맵핑하는 경우, 찾아보기 이름을 규정해야 합니다. 예를 들어, 한 서버에서 실행 중인 Servlet이 다른 서버에서 실행 중인 EJB에 대해 ejb-ref를 선언하는 경우 찾아보기 이름을 규정해야 합니다. 마찬가지로, 참조가 네임 스페이스의 지속적 파티션에 바인드된 오브젝트나 셀 범위 또는 노드 범위 구성 네임 스페이스 바인딩을 통해 바인드된 오브젝트로 맵핑하는 경우, 규정된 이름을 사용해야 합니다.

애플리케이션을 설치할 때 배치 디스크립터 참조 바인딩 값을 지정하고, 애플리케이션이 설치된 후에 편집할 수 있습니다. 관리 콘솔에서 참조가 맵핑할 JNDI 검색 이름을 변경해야 하는 경우 애플리케이션 > 애플리케이션 유형 > WebSphere 엔터프라이즈 애플리케이션 > application_name을 클릭하십시오. 참조 섹션에는, 이 애플리케이션에서 선언된 다양한 참조 유형(예: EJB 참조 및 자원 환경 항목 참조)에 대응하는 링크가 있습니다. 변경해야 하는 참조 유형의 링크를 클릭한 후 대상 자원 JNDI 이름 필드에 새 값을 지정하십시오.


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



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