This document lists some of the limitations regarding JavaTM
IDL and JavaTM RMI over IIOP technology in this release of the
JavaTM 2 Platform
Standard Edition (J2SETM). The limitations are outlined below.
When a J2SETM 1.3.x client talks to a server written in J2SE
1.4 or higher using RMI-IIOP and
an unchecked or RemoteException is thrown by the server, the client will hang.
Similarly, when the server is using J2SE 1.3.x and the client is using
J2SE 1.4 or higher, the client will receive a CORBA UNKNOWN exception with minor
code 0.
In J2SE 1.4.1 and higher: If one side is using J2SE 1.3.1.05, and the
other side is using J2SE 1.4.1 or higher on the other side, this type of communication will
work properly.
Multiple Profile IOR
If an IOR has multiple profiles, the first IIOP profile is used for the invocation.
Multiple ORBs not allowed in persistent servers
This release of Java SE platform does not allow multiple ORB instantiations in
persistent servers. If the persistent server is written using the Java RMI over IIOP
APIs, instantiating JNDI's InitialContext() creates an ORB. To avoid
creating multiple ORBs in this setting, you can set the java.naming.ORB
system property to an ORB that is already initialized.
Locally-optimized stubs
Locally-optimized stubs, those with the local optimization generated by a different IDL-to-Java compiler than idlj, may be used with the J2SE 1.4 or higher ORB. However, Portable Interceptors will not be invoked when taking the locally-optimized stub branch. This is due to an issue with the OMG IDL to Java language mapping and is being addressed under OMG issue 4701.
The J2SE 1.4 or higher rmic compiler generates locally optimized stubs when used in conjunction with the -iiop option. However, the J2SE 1.4 and higher implementation of
javax.rmi.CORBA.Util always returns false
for isLocal. The result is that the stubs never use the local
optimization. This is due to an issue with the OMG Java to IDL language mapping and is addressed under OMG issue 3754.
The J2SE 1.4 and higher ORB does use a locally-optimized transport for both Java IDL and Java RMI-IIOP when it detects
that the client and server are running sharing the same ORB.
Single thread POA policy
As per the CORBA 2.3.1 specification, there can be two choices for
Thread Policy for the Portable Object Adapter (POA): The ORB Controlled Model and
the Single Thread Model. J2SE 5.0 does not support the Single Thread Model.
RMI-IIOP Stream Format version 2
If the super-type of a class has evolved to become custom-marshalled and writes
optional, custom data, then that class cannot be sent between J2SE 1.3.x and J2SE 1.4 or higher.
One example of this is that java.util.Calendar in J2SE 1.4 or higher cannot be sent back to J2SE 1.3.x.