Java[TM] IDL/Java[TM] RMI over IIOP 테크놀러지의 제한 - xrath.com 에서 번역됨

# JavaTM IDL/JavaTM RMI over IIOP 의 제한

이 문서에서는, JavaTM 2 Platform Standard Edition (J2SETM)의 이 릴리스의 JavaTM IDL 와 JavaTM RMI over IIOP 테크놀러지에 관한 몇개의 제한에 대해 설명합니다. 제한의 내용을 다음에 나타냅니다.

「J2SE 5.0 에서의 CORBA 지원의 공식 스펙」 에서는,Java IDL 와 Java RMI over IIOP 테크놀러지의 구현으로 준거하는 OMG 스펙의 개요에 대해 설명합니다.

제한:

- JavaTM SDK 버젼의 상호 운용성

  > J2SETM 1.3.x 클라이언트가 RMI-IIOP 를 사용해 J2SE 1.4 이상으로 쓰여진 서버와 통신하고 있을 때, 체크되지 않는 예외 또는 `RemoteException` 이 서버에 의해 throw 되면(자), 클라이언트가 행업 합니다. 같이 서버가 J2SE 1.3.x 를 사용해, 클라이언트가 J2SE 1.4 이상을 사용하고 있는 경우, 클라이언트는, 마이너 코드 0 의 CORBA `UNKNOWN` 예외를 받습니다.

  > 이 문제에 대해서는, OMG 의 Java to IDL RTF 의 Issue 4795 http://www.omg.org/issues/java2idl-rtf.html#Issue4795 로 현재 해결을 위한 작업을 하고 있습니다.

  > J2SE 1.4. 1 이상의 경우: 한편의 옆이 J2SE 1.3. 1.05 를 사용해, 한편의 옆이 J2SE 1.4. 1 이상을 사용하고 있는 경우, 이런 종류의 통신은 올바르게 기능합니다.

- 복수의 프로파일을 포함한 IOR

  > IOR 가 복수의 프로파일을 포함하고 있는 경우, 최초의 프로파일이 호출에 사용됩니다.

- 지속 서버에서의 복수의 ORB 의 금지

  > Java SE 플랫폼의 이 릴리스에서는, 복수의 ORB 인스턴스를 지속 서버내에 둘 수 없습니다. Java RMI over IIOP API 를 사용해 JNDI 의 `InitialContext()` 를 인스턴스화하면(자), ORB 가 작성됩니다. 이 설정으로 복수의 ORB 가 작성되지 않게 하려면 ,`java.naming.ORB` 시스템 프로퍼티을 벌써 초기화되고 있는 ORB 로 설정합니다.

- 로컬로 최적화된 Stub

  > 로컬에 최적화된 Stub (`idlj` 이외의 IDL-to-Java 컴파일러에 의해 생성된 로컬 최적화를 포함한 Stub)는, J2SE 1.4 이상의 ORB 로 사용할 수가 있습니다. 다만, 로컬에 최적화된 Stub를 취할 때, 포타브르인타세프타는 불려 가지 않습니다. 이 현상은, OMG 의 IDL 로부터 Java 언어에의 매핑에 수반하는 문제가 원인으로,OMG 문제 4701 으로서 해결을 위한 작업이 행해지고 있습니다.

  > J2SE 1.4 이상의 `rmic` 컴파일러에 `-iiop` 옵션을 지정해 사용하면(자), 로컬에 최적화된 Stub가 생성됩니다. 그러나, J2SE 1.4 이상으로 `javax.rmi.CORBA.Util` 를 구현하면(자),`isLocal` 에 대해서 항상 `false` 를 돌려줍니다. 그 결과적으로, Stub는 로컬의 최적화를 사용하지 않습니다. 이 현상은, OMG 의 Java 로부터 IDL 언어에의 매핑에 수반하는 문제가 원인으로,OMG 문제 3754 로서 해결을 위한 작업이 행해지고 있습니다.

  > J2SE 1.4 이상의 ORB 는, 클라이언트와 서버가 같은 ORB 를 공유해 실행되고 있는 것을 검출하면(자), 로컬에 최적화된 트랜스폴트를 Java IDL 와 Java RMI-IIOP 의 양쪽 모두에 대해서 사용합니다.

- 단일 thread의 POA 정책

  > CORBA 2.3. 1 의 스펙에서는, 휴대용 객체 어댑터 (POA)의 thread 정책에 대해서 2 개의 선택사항이 있습니다. 즉, ORB 제어 모델과 단일 thread 모델입니다. J2SE 5.0 은, 단일 thread 모델을 지원하고 있습니다.

- RMI-IIOP 스트림 형식 버젼 2

  > 어느 클래스의 슈퍼타입이 커스텀 정렬화 된 클래스로 발전해, 옵션의 커스텀 데이터를 써내게 되었을 경우, 그 클래스를 J2SE 1.3.x 나 J2SE 1.4 이상의 사이에 교환할 수 없습니다. 그 일례로서 J2SE 1.4 이상의 `java.util.Calendar` 는, J2SE 1.3.x 에 돌려 보낼 수가 없습니다.