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.