네임스페이스 논리 보기
전체 셀의 네임스페이스는 셀의 모든 서버 사이에서 연합됩니다. 모든 서버 프로세스에는 이름 서버가 포함됩니다. 모든 이름 서버는 셀 네임스페이스의 동일한 논리 보기를 제공합니다.
다양한 서버 루트 및 네임스페이스의 지속 파티션은 시스템 네임스페이스를 통해 서로 연결됩니다. 시스템 네임스페이스 구조를 사용하여 셀의 네임스페이스에 있는 임의의 컨텍스트로 이동할 수 있습니다.
다중 서버 설치에서 네임스페이스의 논리 보기는 다음 다이어그램에 표시되어 있습니다.

위 다이어그램에서 바인딩은 실선 화살표, 굵게 표시된 레이블, 점선 화살표, 회색 레이블로 표시되어 있습니다. 실선 화살표는 1차 바인딩을 나타냅니다. 1차 바인딩은 관련 서브컨텍스트를 작성할 때 형성됩니다. 점선 화살표는 링크된 바인딩을 나타냅니다. 링크된 바인딩은 기존 컨텍스트가 추가 이름 아래에 바인딩되어 있을 때 형성됩니다. 링크된 바인딩은 이전 WebSphere® Application Server 버전과의 편의성 또는 상호 운영성을 위해 추가됩니다.
셀 네임스페이스는 셀 전체의 서버에 있는 컨텍스트로 구성됩니다. 셀에 있는 모든 이름 서버는 셀 네임스페이스의 동일한 논리 보기를 제공합니다. 이름 서버는 시작 시 구성 정보를 읽어 이 보기를 생성합니다. 각 이름 서버는 네임스페이스의 자체 로컬 메모리 내 사본을 가지고 있으며 다른 서버가 실행될 필요가 없습니다. 그렇지만 몇 개의 예외는 있습니다. 다른 서버의 서버 루트는 모든 서버 사이에서 복제되지 않습니다. 서버 루트에 대한 각 서버는 해당 서버 루트 컨텍스트에 액세스할 수 있도록 실행 중이어야 합니다.
WebSphere Application Server Network Deployment 셀에서, 셀 및 노드 지속 영역은 배치 관리자 및 각 노드 에이전트가 실행 중이 아니어도 읽을 수 있습니다. 그러나 셀 지속 세그먼트를 업데이트하기 위해 배치 관리자가 실행 중이어야 하고, 각 노드 지속 세그먼트를 업데이트하기 위해 노드 에이전트가 실행 중이어야 합니다.
네임스페이스 파티션
셀 네임스페이스에는 5개의 주요 파티션이 있습니다.
- 시스템 네임스페이스 파티션
- 시스템 네임스페이스에는 셀 토폴로지를 기반으로 하는 컨텍스트 구조가
포함됩니다. 시스템 구조는 셀 네임스페이스의 모든 파트와 외부 셀로 구성된
다른 셀의 셀 루트로의 이동을 지원합니다. 이 구조의 루트는 셀 루트입니다. 셀 루트 외에,
시스템 구조에는 셀의 각 노드에 대한 노드 루트가 포함됩니다. 노드
루트(예: 노드 지속 루트 및 해당 노드에서 구성된 서버의 서버 루트)에서
노드에 고유하게 관련된 기타 컨텍스트에 액세스할 수 있습니다.
시스템 네임스페이스의 모든 컨텍스트는 읽기 전용입니다. 바인딩을 추가, 업데이트 또는 제거할 수 없습니다.
- 서버 루트 파티션
- 셀의 각 서버는 서버 루트 컨텍스트를 가집니다. 서버 루트는 특정 서버에 고유합니다. 셀의
모든 서버에 대한 서버 루트는 셀 네임스페이스의 임시 읽기/쓰기 파티션에서
볼 수 있습니다. 서버 애플리케이션용 엔터프라이즈 Bean(EJB) 홈 및
자원과 같은 시스템 아티팩트는 연관 서버의 서버 루트 컨텍스트 하에서
바인드됩니다. 또한 서버 애플리케이션은 서버 루트 아래에 바인딩을
추가할 수도 있습니다. 이런 바인딩은 임시적입니다.
따라서 서버 애플리케이션에서 애플리케이션이 실행될 때 존재하도록 애플리케이션 시작 시 필요한
모든 바인딩을 작성해야 합니다.
서버 클러스터는 논리적으로 동등한 여러 서버로 구성됩니다. 클러스터의 각 멤버는 자체 서버 루트를 가집니다. 이런 서버 루트는 클러스터에서 복제되지 않습니다. 즉, 한 멤버의 서버 루트에 바인딩을 추가해도 다른 클러스터 멤버의 서버 루트로 전파되지 않습니다. 클러스터에 걸쳐 동일한 보기를 유지하려면, 각 클러스터 멤버의 서버 루트 아래에 바인딩이 표시되도록 서버 애플리케이션이 애플리케이션 시작 시 서버 루트 아래에 모든 사용자 바인딩을 작성해야 합니다. WLM(Workload Management) 동작으로 인해, 클러스터 외부의 JNDI 클라이언트는 JNDI 조작의 대상이 되는 클러스터 멤버의 서버 루트 컨텍스트를 제어하지 않습니다. 따라서 해당 클러스터 멤버 내에서만 처리해야 하는 클러스터 멤버 서버 루트로의 바인드 조작을 실행해야 합니다.
서버 범위 구성 이름 바인딩은 서버 루트에 대해 상대적입니다.
클러스터 멤버의 이름은 셀에서 고유하고 셀 이름과 다른 이름이어야 합니다.
- 셀 지속 파티션
- 셀 지속 파티션의 루트 컨텍스트는 셀 지속 루트입니다. 셀 지속
루트 아래에서 작성된 바인딩은 셀 구성의 일부로 저장되며,
명시적으로 제거될 때까지 계속 존재합니다. 셀과 일반적으로 연관된
오브젝트의 추가 지속 바인딩을 작성해야 하는 애플리케이션은
셀 지속 루트 아래에서 해당 오브젝트를 바인드할 수 있습니다.
셀 지속 영역은 상황에 따라 신속하게 변하는 임시 바인딩용으로 설계되지 않았습니다. 대신 애플리케이션 설정 또는 구성의 일부와 같이 바인딩은 근본적으로 보다 정적이어야 하며 실행 시 작성되지 않습니다.
셀 지속 영역은 배치 관리자가 실행되지 않아도 읽을 수 있습니다. 그러나 셀 지속 세그먼트를 업데이트하려면 배치 관리자가 실행 중이어야 합니다. 모든 서버에는 셀 지속 파티션의 자체 사본이 포함되어 있으므로 모든 서버에서 셀 지속 파티션에 바인드된 오브젝트를 로컬로 찾아볼 수 있습니다.
셀 범위 구성 이름 바인딩은 셀의 셀 지속 루트에 대해 상대적입니다.
- 노드 지속 파티션
- 노드 지속 파티션은 각 노드가 자체 노드 지속 루트를 가진다는 점을
제외하면 셀 파티션과 비슷합니다. 노드 지속 루트에서 작성된 바인딩은
노드 구성의 일부로 저장되며, 명시적으로 제거할 때까지 계속해서 존재합니다.
특정 셀과 연관된 오브젝트의 추가 지속 바인딩을 작성해야 하는 애플리케이션은 특정 노드의 노드 지속 루트 아래에서 해당 오브젝트를 바인드할 수 있습니다. 셀 지속 영역의 경우와 마찬가지로, 노드 지속 영역도 상황에 따라 신속하게 변경되는 임시 바인딩용으로 설계되지 않았습니다. 대신 애플리케이션 설정 또는 구성의 일부와 같이, 바인딩은 속성상 보다 정적이어야 하며 실행 시 작성되지 않습니다.
노드에 대한 노드 지속 영역은 각 노드 에이전트가 실행되지 않아도 노드의 모든 서버에서 읽을 수 있습니다. 그러나 셀 지속 영역을 업데이트하거나 노드 외부의 서버가 해당 노드 지속 파티션을 읽으려면 노드 에이전트가 실행 중이어야 합니다. 노드의 모든 서버에는 해당 노드에 대한 셀 지속 파티션의 자체 사본이 포함되어 있으므로 노드의 모든 서버에서 셀 지속 파티션에 바인드된 오브젝트를 로컬로 찾아볼 수 있습니다.
노드 범위 구성 바인딩은 노드 지속 루트에 대해 상대적입니다.
- 애플리케이션 파티션
- Java EE 6 스펙에는 모듈, 애플리케이션, 글로벌
네임스페이스가 도입되었습니다. 접두부 java:module, java:app
및 java:global이 있는 Java URL JNDI 이름은 각 네임스페이스에 액세스할 수 있습니다.
네임스페이스에 로컬로만 액세스할 수 있거나 원격으로만
액세스할 수 있는 경우가 있습니다.
애플리케이션 파티션에는 원격으로 액세스 가능한 네임스페이스가 있습니다. java:global 네임스페이스의 루트는 애플리케이션 루트 컨텍스트입니다. 기타 네임스페이스의 루트는 com.ibm.ws.AppNameSpaces 서브컨텍스트 아래에 있습니다. 예를 들어, MyApp 애플리케이션의 java:app 루트 컨텍스트는 com.ibm.ws.AppNameSpaces를 기준으로 MyApp/root 이름으로 바인드됩니다. 모듈 및 컴포넌트 네임스페이스는 모듈이 서버 배치 모드 또는 연합 모드의 클라이언트 모듈인 경우에만 원격으로 액세스 가능합니다. 예를 들어, MyApp 애플리케이션의 서버 배치 클라이언트 모듈 MyClientModule의 java:module 루트 컨텍스트는 com.ibm.ws.AppNameSpaces를 기준으로 MyApp/MyClientModule/root 이름으로 바인드됩니다. comp/env 바인딩이 포함된 동일한 모듈의 컴포넌트 네임스페이스는 com.ibm.ws.AppNameSpaces를 기준으로 MyApp/MyClientModule/ClientComponent/root 아래에 바인드됩니다.
EJB 참조, 자원 참조, java:global 이름의 환경 항목과 같은 애플리케이션 자원은 정의된 애플리케이션이 설치될 때 java:global 네임스페이스에 바인드됩니다. 해당 애플리케이션이 실행되고 있지 않아도 이름 바인딩을 다른 애플리케이션에서 사용할 수 있습니다.
애플리케이션에 java:global 이름이 포함되어 정의된 자원은 데이터가 해당 노드에 분배될 때 셀의 모든 서버에 사용할 수 있도록 애플리케이션 파티션에 바인드됩니다. 애플리케이션은 셀에 있는 서버에서 이러한 오브젝트를 검색할 수 있습니다. EJB 홈도 java:global/appName/moduleName/beanName 형태의 이름으로 java:global 네임스페이스에 바인드되지만, 엔터프라이즈 Bean이 실행되는 서버에서만 가능합니다. 하지만 EJB에서의 java:global 검색은 셀에 있는 모든 서버에서 해석할 수 있습니다.