ORB(Object Request Broker) 서비스에 대한 클라이언트 측 프로그래밍 팁
모든 IIOP(Internet InterORB Protocol) 요청 및 응답 교환은 클라이언트 측 ORB와 서버 측 ORB로 구성됩니다. IIOP를 사용하는 애플리케이션이 클라이언트 측 ORB(Object Request Broker)와 통신할 수 있도록 올바르게 프로그래밍되는 것이 중요합니다.
다음 팁은 요청 및 응답 교환을 처리하는 데 IIOP를 사용하는 애플리케이션이 클라이언트 측 ORB(Object Request Broker)와 통신할 수 있도록 올바르게 프로그래밍되는지 확인하는 데 도움이 됩니다.
서비스에 대한 초기 참조의 분석
org.omg.CORBA.ORB.init(java.lang.String[] args,
java.util.Properties props)
이러한 특성은 클라이언트 코드 또는 명령행 인수를 통해 설정할 수 있습니다. 여러 ORBInitRef 특성 설정(각 서비스에 하나씩)을 사용하여 둘 이상의 서비스 위치를 지정할 수 있지만 한 개의 ORBDefaultInitRef 값만 지정할 수 있습니다. ORB가 서비스를 찾는 데 사용하는 우선순위 및 두 가지 특성에 대한 자세한 정보는 CORBA/IIOP 스펙을 읽어 보십시오.
클라이언트 코드로 설정하는 경우 이러한 특성은 각각 com.ibm.CORBA.ORBInitRef.service_name 및 com.ibm.CORBA.ORBDefaultInitRef입니다. 예를 들어, 네이밍 서비스(NameService)가 포트 2809의 sample.server.com에 있는 것으로 지정하려면 com.ibm.CORBA.ORBInitRef.NameService 특성을 corbaloc::sample.server.com:2809/NameService로 설정하십시오.
명령행 인수로 설정하는 경우 이러한 특성은 각각 -ORBInitRef 및 -ORBDefaultInitRef입니다. 이전에 지정한 것과 같은 네이밍 서비스를 찾으려면 다음 Java 명령을 사용하십시오.
ORB가 지원하는 서비스에 대해 이러한 특성이 설정되면 CORBA/IIOP 스펙에서 정의된 대로 Java EE(Java Platform, Enterprise Edition) 애플리케이션이 지정된 서비스에 대한 초기 참조를 얻기 위해 ORB에서 resolve_initial_references 함수를 호출할 수 있습니다.
ORB 인스턴스를 얻기 위해 선호되는 API
Java EE 애플리케이션에 대해서는 다음 접근법 중 하나를 사용할 수 있습니다. 그러나 같은 ORB 인스턴스가 클라이언트 애플리케이션 전체에서 사용되어 다른 ORB 인스턴스가 사용되는 경우 발생할 수 있는 의도치 않은 불일치를 피할 수 있도록 하려면 JNDI(JavaNaming and Directory Interface) 접근법을 사용할 것을 권장합니다.
javax.naming.Context ctx = new javax.naming.InitialContext();
org.omg.CORBA.ORB orb =
(org.omg.CORBA.ORB)javax.rmi.PortableRemoteObject.narrow(ctx.lookup("java:comp/ORB"),
org.omg.CORBA.ORB.class);
JNDI를 사용하여 얻은
ORB 인스턴스는 싱글톤 오브젝트이며 같은 JVM(Java Virtual
Machine) 프로세스에서 실행되고 있는 모든 Java EE 컴포넌트에서 공유됩니다. 
java.util.Properties props = new java.util.Properties();
java.lang.String[] args = new java.lang.String[0];
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props);
JNDI 접근법과는 다르게 CORBA 스펙에서는 ORB.init 메소드가 호출될 때마다 새 ORB 인스턴스가 작성되어야 합니다. ORB 기본 설정을 변경해야 하는 경우 ORB 특성 설정을 ORB.init 메소드 호출로 전달되는 특성 오브젝트에 추가할 수 있습니다.
이 제품의 이전 릴리스에서 지원되는 com.ibm.ejs.oa.EJSORB.getORBinstance 메소드의 사용은 더 이상 사용되지 않습니다.
Java EE 애플리케이션 컴포넌트 간 ORB 공유에 대한 API 제한사항
- ORB 종료 또는 영구 삭제 메소드를 호출하지 마십시오.
- org.omg.CORBA_2_3.ORB 메소드 register_value_factory 또는 unregister_value_factory를 호출하지 마십시오.
또한 서로 다른 Java EE 애플리케이션에 있는 애플리케이션 컴포넌트 사이에 ORB 인스턴스를 공유하지 마십시오.
IBM 개발자 킷과 함께 제공되는 rmic 및 idlj의 필수 사용
이 제품에서 사용되는 JRE(Java Runtime Environment)에는 rmic 및 idlj 도구가 포함됩니다. 이 도구를 사용하여 CORBA/IIOP 프로토콜에 대한 Java 언어 바인딩을 생성합니다.
제품 설치 중에 이러한 도구는 app_server_root/java/ibm_bin 디렉토리에 설치됩니다. 이 제품과 함께 설치된 IBM Developer Kit 외의 Java 개발 킷 $JAVA_HOME/bin 디렉토리에 포함된 이러한 도구의 버전은 이 제품과 호환 가능하지 않습니다.
이 제품 설치 시 app_server_root/java/ibm_bin 디렉토리는 IBM이 제공하는 rmic 및 idlj 스크립트의 사용을 가능하게 하기 위해 $PATH 검색 순서에 포함됩니다. 이러한 스크립트는 JRE 표준 app_server_root/java/bin 디렉토리 대신 app_server_root/java/ibm_bin 디렉토리에 있기 때문에 IBM이 제공하지 않는 JRE에 유지보수를 적용할 때 겹쳐쓰는 것은 거의 불가능합니다.
rmic 및 idlj 도구 외에도 JRE는 IDL(Interface Definition Language) 파일을 포함합니다. 이 파일은 OMG(Object Management Group)에 의해 정의되는 파일이며 선택한 ORB 인터페이스의 IDL 정의가 필요한 애플리케이션에서 사용될 수 있습니다. 이 파일은 app_server_root/java/ibm_lib 디렉토리에 있습니다.
rmic 또는 idlj 도구를 사용하기 전에 app_server_root/java/ibm_bin 디렉토리가 환경에서 적절한 PATH 변수 검색 순서에 포함되는지 확인하십시오. 애플리케이션이 app_server_root/java/ibm_lib 디렉토리에 있는 IDL 파일을 사용하는 경우 이 디렉토리가 PATH 변수에 포함되는지도 확인하십시오.