예: CosNaming으로 EJB 홈 검색
CORBA CosNaming 인터페이스를 통해 WebSphere® Application Server 이름 서버에서 EJB 홈 또는 기타 CORBA 오브젝트를 검색할 수 있습니다.
초기 컨텍스트에서 resolve 또는 resolve_str을 호출하거나, 또는 ORB에서 string_to_object를 호출할 수 있습니다. 검색이 실행되는 이름 서버와 상관 없이 이름이 분석되도록 규정된 이름을 사용하거나, 또는 오브젝트 바인딩을 실제로 포함하는 이름 서버의 서버 루트 컨텍스트에서만 분석하는 규정되지 않은 이름을 사용할 수 있습니다. (규정된 이름은 연합된 시스템 네임스페이스를 지정된 서버 루트 컨텍스트로 순회합니다.)
규정 및 규정되지 않은 이름
각 애플리케이션 서버는 이름 서버를 포함합니다. EJB 홈과 같은 시스템 아티팩트는 해당 이름 서버에 바인드됩니다. 여러 이름 서버는 시스템 네임스페이스 구조를 사용하여 연합됩니다. 다른 서버에서 오브젝트를 검색하기 위한 권장 방법은 규정된 이름을 사용하는 것입니다.
규정된 이름은 토폴로지 기반 이름일 수 있으며, 오브젝트를 포함하는 노드와 단일 서버나 클러스터의 이름을 기반으로 할 수 있습니다.
오브젝트에 대해 고정된 규정된 이름을 정의할 수 있습니다. 규정된 이름으로 시스템 네임스페이스 구조를 순회하여 동일한 초기 컨텍스트와 다른 서버에 있는 오브젝트를 검색할 수 있습니다. 또는, 규정되지 않은 이름을 사용할 수 있지만 규정되지 않은 이름은 오브젝트의 애플리케이션 서버와 연관된 이름 서버를 사용하여 분석됩니다.
CosNaming.resolve(및 resolve_str) 대 ORB.string_to_object
WebSphere Application Server 셀의 이름 서버로부터 초기 컨텍스트가 있는 경우, 규정된 이름으로 CORBA 오브젝트를 검색할 수 있습니다. 대상 오브젝트의 이름 서버에 대한 추가 호스트와 포트 정보가 필요하지 않습니다.
또는, ORB에서 string_to_object를 호출하여 corbaname URL로 전달하여 오브젝트를 검색할 수 있습니다. 일반적으로 IIOP 유형 URL이 지정되므로 초기 컨텍스트에 필요한 부트스트랩 주소 정보는 URL에 포함되어야 합니다. 규정되거나 규정되지 않은 stringified 이름을 사용할 수 있지만, 초기 컨텍스트가 오브젝트가 바인드된 이름 서버에서 온 경우에만 규정되지 않은 이름을 분석합니다.
다음 예는 규정된 토폴로지 기반 검색 이름과 규정되지 않은 검색 이름을 사용한 CosNaming 분석 조작을 표시합니다.
규정된 이름을 사용한 CosNaming 분석 조작
오브젝트에 대한 토폴로지 기반의 규정된 이름은 오브젝트가 단일 서버나 서버 클러스터에 바인드되는지 여부에 따라 다릅니다. 각 예가 다음에 표시됩니다.
단일 서버
다음 예는 단일 서버에서 실행 중인 EJB 홈의 검색을 표시합니다. 검색 중인 엔터프라이즈 Bean이 노드, Node1의 서버, MyServer에서 실행 중입니다.
// Get the initial context as shown in the previous example
// Using the form of lookup name below, it doesn't matter which
// server in the cell is used to obtain the initial context.
...
// Look up the home interface using the name under which the EJB home is bound
org.omg.CORBA.Object ejbHome = initialContext.resolve_str(
"cell/nodes/Node1/servers/MyServer/mycompany/accounting/AccountEJB");
accountHome =
(AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);
서버 클러스터
다음 예는 클러스터에서 실행 중인 EJB 홈의 검색을 표시합니다. 검색 중인 엔터프라이즈 Bean은 클러스터, Cluster1에서 실행 중입니다. 클러스터 멤버가 실행 중인 경우 이름은 분석할 수 있습니다.
// Get the initial context as shown in the previous example
// Using the form of lookup name below, it doesn't matter which
// server in the cell is used to obtain the initial context.
...
// Look up the home interface using the name under which the EJB home is bound
org.omg.CORBA.Object ejbHome = initialContext.resolve_str(
"cell/clusters/Cluster1/mycompany/accounting/AccountEJB");
accountHome =
(AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);
규정되지 않은 stringified 이름을 사용한 ORB string_to_object 조작
오브젝트를 포함한 이름 서버에서 분석 조작이 수행 중인 경우, 시스템 네임스페이스를 순회하지 않아도 되며 규정되지 않은 검색 이름을 사용할 수 있습니다. 다른 이름 서버에서는 이 이름이 분석되지 않음에 주의하십시오. 규정되지 않는 이름이 제공되는 경우, 올바른 초기 컨텍스트가 선택되도록 오브젝트 키는 NameServiceServerRoot여야 합니다. 규정된 이름이 제공되면 NameService의 기본 키를 사용할 수 있습니다.
다음 예는 EJB 홈의 검색을 표시합니다. 검색 중인 엔터프라이즈 Bean은 포트 2809의 호스트 myHost에서 실행 중인 이름 서버에서 바인드됩니다. NameServiceServerRoot의 오브젝트 키를 참고하십시오.
// Assume orb is an existing ORB instance
...
// Look up the home interface using the name under which the EJB home is bound
org.omg.CORBA.Object ejbHome = orb.string_to_object(
"corbaname:iiop:myHost:2809/NameServiceServerRoot#mycompany/accounting");
accountHome =
(AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);