当前页面:
在线文档首页 >
JDK 5 Documentation v1.5.0, Java 2 SDK 英文文档
CORBA Compatibility Information - JDK 5 Documentation v1.5.0, Java 2 SDK 英文文档
CORBA Compatibility Information - J2SE 5.0 |
CORBA API Changes Between J2SE 1.3 and J2SE 5.0
This document contains information regarding all of the API changes related
to CORBA functionality between JDK 1.3 and 5.0. The changes have been
made to make the APIs for the CORBA technology shipped in the JDK 5.0 compliant
to the CORBA 2.3 mapping as specified by the following OMG documents:
API changes to org.omg.COSNaming classes
To comply with the IDL to Java mapping specified by the CORBA Version 2.3
specification, the following
org.omg.COSNaming classes have been regenerated
from the
idlj compiler shipped with the JDK. This change (CCC 4284015)
consists of the following API changes. Compatibility impact: None.
To conform with CORBA V (2.3) All Helpers Section 1.5.2 Spec ptc/00-01-08.pdf,
all Helpers are now abstract public classes. Below is the list of all Helper
classes under org.omg.CosNaming that have been changed to abstract public
classes.
- BindingHelper.java
- BindingIteratorHelper.java
- BindingListHelper.java
- BindingTypeHelper.java
- IStringHelper.java
- NameComponentHelper.java
- NameHelper.java
- NamingContextHelper.java
- AlreadyBoundHelper.java
- CannotProceedHelper.java
- InvalidNameHelper.java
- NotEmptyHelper.java
- NotFoundHelper.java
- NotFoundReasonHelper.java
To conform with Section 1.7 OMG Spec ptc/00-01-08.pdf, Mapping for Enum,
the mapping for the following Enum constructors is changed to protected.
CLASS |
BEFORE |
NOW |
BindingType.java |
private BindingType( int ) |
protected BindingType( int ) |
NotFoundReason.java |
private NotFoundReason( int ) |
protected NotFoundReason( int ) |
-
To conform with CORBA 2.3 spec (ptc/00-01-08.pdf), Deletion of constructors
in Stub classes, the following constructors have been deleted.
CLASS |
BEFORE |
NOW |
_BindingIteratorStub.java |
public _BindingIteratorStub(org.omg.CORBA.portable.Delegate d) |
The constructor is deleted. |
_NamingContextStub.java |
public _NamingContextStub(org.omg.CORBA.portable.Delegate d) |
The constructor is deleted. |
-
To conform with CORBA 2.3 spec (ptc/00-01-08.pdf), the following exceptions
have been changed.
CLASS |
BEFORE |
NOW |
AlreadyBound.java |
public final class AlreadyBound extends org.omg.CORBA.UserException
implements org.omg.CORBA.portable.IDLEntity |
public final class AlreadyBound extends org.omg.CORBA.UserException |
AlreadyBound.java |
Only default constructor |
Add new constructor public AlreadyBound (String reason) |
CannotProceed.java |
public final class CannotProceed extends org.omg.CORBA.UserException
implements org.omg.CORBA.portable.IDLEntity |
public final class CannotProceed extends org.omg.CORBA.UserException |
CannotProceed.java |
Only default constructor |
Add new constructor public CannotProceed (String reason) |
InvalidName.java |
public final class InvalidName extends org.omg.CORBA.UserException
implements org.omg.CORBA.portable.IDLEntity |
public final class InvalidName extends org.omg.CORBA.UserException |
InvalidName.java |
Only default constructor |
Add new constructor public InvalidName (String reason) |
NotEmpty.java |
public final class NotEmpty extends org.omg.CORBA.UserException implements
org.omg.CORBA.portable.IDLEntity |
public final class NotEmpty extends org.omg.CORBA.UserException |
NotEmpty.java |
Only default constructor |
Add new constructor public NotEmpty (String reason) |
NotFound.java |
public final class NotFound extends org.omg.CORBA.UserException implements
org.omg.CORBA.portable.IDLEntity |
public final class NotFound extends org.omg.CORBA.UserException |
NotFound.java |
Only default constructor |
Add new constructor public NotFound (String, org.omg.CosNaming.NamingContextPackage.NotFoundReason,
org.omg.CosNaming.NameComponent[]) |
-
To conform with the CORBA 2.3 specification, the following classes have
been added.
- NamingContextPOA.java
- BindingIteratorPOA.java
To conform with the CORBA 2.3 specification, the following classes are
deprecated.
- _NamingContextImplBase.java
- _BindingIteratorImplBase.java
API changes to org.omg.CORBA
- To conform to OMG spec 99-07-57, IDL to Java mapping, the following
methods have been changed.
- The signature of method org.omg.CORBA.Any.insert_fixed(java.math.BigDecimal,
org.omg.CORBA.TypeCode) is changed to throw an org.omg.CORBA.Bad_INV_ORDER
exception. System exception does not need to be declared in user's code.
(CCC 4340915)
- The method TypeCode.equivalent is defined as abstract. BEFORE: threw
a NO_IMPLEMENT exception. Compatibility impact: Minimal impact for licensees,
not for end user. Licensees need to provide a dummy implementation of this
method. (CCC 4340932)
- The method TypeCode.get_compact_typecode is defined as abstract. BEFORE:
threw a NO_IMPLEMENT exception. Compatibility impact: Minimal impact for
licensees, not for end user. Licensees need to provide a dummy implementation
of this method. (CCC 4340932)
- The mapping for the get_interface_def(org.omg.CORBA.Object) method in
org.omg.CORBA.portable.Delegate.java is defined as abstract. Compatibility
impact: Yes, a non-abstract method is converted to abstract. (CCC 4366071)
- The mapping for the write_Principal() method in org.omg.CORBA.portable.OutputStream.java
is no longer abstract. Compatibility impact: No, an abstract method is
converted to non-abstract. (CCC 4366072)
- The mapping for the read_Principal() method in org.omg.CORBA.portable.InputStream.java
is no longer abstract. Compatibility impact: None, changing a method that
is declared abstract to no longer be abstract does not break compatibility
with pre-existing binaries. (CCC 4366074)
-
To conform to the CORBA 2.3 specification, the org.omg.DomainManagerOperations
interface no longer extends org.omg.CORBA.Object. Compatibility impact:
None, no CORBA program will use the DomainManagerOperations interface directly.
The DomainManagerOperations interface can only be used by the programs
via the DomainManager interface, which already extends org.omg.CORBA.Object.
(CCC 4340907)
- The following classes are declared as abstract and no longer have a
private constructor. (CCC 4372196)
- org.omg.CORBA.ServiceDetailHelper
- org.omg.CORBA.ServiceInformationHelper
- To conform with the IDL to Java spec in section 1.15.2, the default constructor
javadoc comments in the following org.omg.CORBA files have been changed
from COMPLETED_MAYBE to COMPLETED_NO. Compatibility impact: None. (CCC
4363355)
- INTERNAL.java
- INVALID_TRANSACTION.java
- INV_OBJREF.java
-
The following Helper classes in org.omg.CORBA have been changed from public
final to public abstract, and the default constructor for
the Helper classes has been deleted. This change has been made to comply
with the ORB core specification as defined by CORBA 2.3.1 and with the
IDL/Java Language mapping as defined in ptc/00-01-08. Compatibility impact:
Minimal since the Helper classes have been made 'abstract' as defined by
the OMG IDL/Java Language mapping specification, applications which had
previously instantiated a Helper class instance would fail. But the Helper
class has only static methods in it, and there is no good reason for an
application to create an instance of the Helper class. (CCC 4364208)
- AnySeqHelper.java
- BooleanSeqHelper.java
- CharSeqHelper.java
- DoubleSeqHelper.java
- FloatSeqHelper.java
- LongLongSeqHelper.java
- LongSeqHelper.java
- OctetSeqHelper.java
- ShortSeqHelper.java
- StringValueHelper.java
- ULongLongSeqHelper.java
- ULongSeqHelper.java
- UShortSeqHelper.java
- WCharSeqHelper.java
- WStringValueHelper.java
-
To conform with the recently passed OMG issue 3015, which adds a new class,
AbstractInterfaceDef to Interface Repository classes, we have added the
following new constants to org.omg.CORBA.DefinitionKind. Compatibility
impact: None. (CCC 4367601)
- _dk_AbstractInterface=24. This is a constant that indicates that an
Interface Repository object is representing an abstract object.
- public static final DefinitionKind dk_AbstractInterface = new DefinitionKind(_dk_AbstractInterface).
This is the static instance of DefinitionKind, indicating that an Interface
Repository object represents an abstract interface.
-
The following org.omg.CORBA APIs for typecodes were changed to conform
to the OMG specification. All of the classes in the following list are
in the org.omg.CORBA package. Compatibility impact: Yes. See each change
below for details. (CCC 4368800)
- The Typecode methods fixed_digits, fixed_scale, member_visibility,
type_modified, and concrete_base_type are changed from concrete to abstract.
Typecode is always implemented by an ORB implementor and never subclassed
by an ORB user, so this should not impact customers.
- TCKind.from_int no longer throws the unchecked exception BAD_PARAM.
Since BAD_PARAM is an unchecked exception, removing the exception should
not affect customer code at compile time.
- Principal is changed to a concrete class with methods that throw NO_IMPLEMENT
from an abstract class with abstract methods. Principal is deprecated and
rarely used. In any case, it would not generally be subclassed by a user
and would always be fully implemented by an ORB implementor.
- An extract_Streamable method is added to Any. Adding a method does not
affect compatibility.
- Any.insert_object( object, Typecode ) is changed to throw BAD_PARAM.
Since BAD_PARAM is an unchecked exception, adding the exception should
not affect customer code at compile time.
- The Any methods insert_Streamable, extract_Principal, and insert_Principal
are no longer abstract. Any is fully implemented by ORB implementors and
never subclassed by ORB users, so this should not impact customers.
- The Any methods extract_value and insert_value are changed to abstract.
Any is fully implemented by ORB implementors and never subclassed by ORB
users, so this should not impact customers.
-
The Identifier field is added to org.omg.CORBA.Initializer. Compatibility
impact: None. (CCC 4372194)
- To comply with ptc/00-01-08.pdf, the following classes are changed:
- org.omg.CORBA.ORBPackage.InvalidName.java is declared as final. Compatibility
impact: Yes. The InvalidName is being declared as final, which would impact
source code that was subclassing this. Since it is an exception type, we
do not anticipate this kind of behavior. (CCC 4366734)
- org.omg.stub.java.rmi._Remote_Stub.java returns a clone of _type_ids.
This will prevent mangling of the original type_ids_ array by external
users. (CCC 4366734)
- The from_int(Int i) method in org.omg.CORBA.SetOverrideType no longer
throws a BAD_PARAM exception. Compatibility impact: No. Should not cause
a compatibility problem since we are removing a throws declaration of an
unchecked exception. (CCC 4369490)
- The from_int(Int i) method in org.omg.CORBA.DefinitionKind no longer
throws a BAD_PARAM exception. Compatibility impact: No. (CCC 4370659)
- org.omg.CORBA.DynamicImplementation has been deprecated by the OMG in
favor of the Portable Object Adapter (POA). A default invoke body is supplied.
Compatibility impact: No. Should not impact anyone implementing this class.
(CCC 4369490)
-
The following classes are changed to correct errors. Compatibility impact:
No (CCC 4362556)
Helper and Holder classes are added to UnknownUserException.java. No
compatibility impact.
- Helper and Holder classes are added to WrongTransaction.java, and the
class is declared final. No compatibility impact.
- CompletionStatus.java is declared final, no longer implements IDLEntity,
is changed to a private constructor. A BAD_PARAM RuntimeException will
no longer explicitly be thrown by from_int. Compatibility impact: Yes.
New code written using the new CompletionStatus.java class will not have
to explicitly catch the BAD_PARAM runtime exception. If it's recompiled
with an older JDK, it would get a compile-time error. -- These changes
were undone due to JCK regression (4375061). An OMG issue has been
filed
instead (http://www.omg.org/issues/java-rtf.html#Issue3946).
- INV_POLICY.java is declared as final. No compatibility impact.
- The addition of portable interceptors requires a new method on existing
CORBA APIs and four new classes generated from IDL typedefs. Compatibility
impact: none, these changes are all additions. (CCC 4379826)
-
register_initial_reference is added in public class org.omg.CORBA.ORB.
-
New class org.omg.CORBA.StringSeqHelper is added for 2 IDL typedefs.
-
New class org.omg.CORBA.StringSeqHolder is added for 2 IDL typedefs.
-
New class org.omg.CORBA.WStringSeqHelper is added for 2 IDL typedefs.
-
New class org.omg.CORBA.WStringSeqHolder is added for 2 IDL typedefs.
API changes to javax.rmi.CORBA
To comply with OMG API specifications, the following changes have been
made to
javax.rmi.CORBA:
- The protected constructor in javax.rmi.CORBA.Stub is removed. Compatibility
impact: None. (CCC 4366722)
- To comply with OMG specification 00-01-06.pdf, the jaxax.rmi.CORBA.ClassDesc
constructor is removed. (CCC 4366734)
Non-API changes
The following non-API changes were also implemented in JDK 5.0.
- Correct repository id computations. Compatibility impact: Yes. Added
ORB versioning support to allow interoperability with the JDK 1.3 ORB,
maintain backwards compatibility, and enable interoperability with other
vendor ORBs. (CCC 4365188)
- To conform with the recently passed OMG issue 3015, we have taken all
Interface Repository-related version pragmas out of org.omg.CORBA.ir.idl.
This also changes the Repository ID values of a few IR interfaces that
we ship in org.omg.CORBA, for example, IDLTypeHelper, from
private static String _id = "IDL:omg.org/CORBA/IDLType:2.3";
to
private static String _id = "IDL:omg.org/CORBA/IDLType:1.0";
Compatibility impact: Yes. This change might affect interoperability
with existing implementations. Restart the application and the IR if you
get a COMM_FAILURE exception (or something similar). (CCC 4372718)
- Added @serial exclude tags to all org.omg.* package
files so that JAVADOC will ignore the whole package for the Serialization spec.
There is no requirement from Object Management Group (OMG) to have Serialization
compatibility between different versions. Practically speaking there are no
use cases where the org.omg classes will be serialized in one version
and de-serialized in the next version. Compatibility impact: None. (CCC 4394004)
- Changed idlj compiler arguments in support of POA, which is
a new CORBA feature in Merlin. Changes to the idlj tool arguments include:
- removed undocumented -poa flag
- enabled generation of standard POA-based skeletons by default
- added a new flag, -oldImplBase, to allow generation of backward compatible
skeletons (compatible with JDK 1.2 and 1.3)
Compatibility impact: Yes, existing programs that use the
compiler may need to add the -oldImplBase flag to their idlj
invocation to maintain compatibility. (CCC 4407835)
New API
The following new API were added to JDK 5.0.
-
The PortableInterceptor API is added. An incorrect specification, ptc/2000-04-05,
was being referenced in the test plan. Another incorrect specification,
orbos/99-12-02 was being referenced in the feature list (ptc/2000-04-05
is the same as orbos/99-12-02 except the format has changed). The correct
specification reference for this new API is http://www.omg.org/cgi-gin/doc?ptc/2001-03-04.
CCC 4307834 includes the list of changes/additions from ptc/2000-04-05.
Compatibility impact: none, this is a new feature so no existing code uses
it.
-
The addition of portable interceptors requires a new method, id, in public
interface org.omg.PortableServer.POA.
Official Specifications for CORBA support in J2SE 5.0
Specification References
The specifications with which the Java 2 Platform Standard Edition (J2SE) 5.0
ORB complies are as follows. If these links do not take you to the referenced
specification, the OMG may have changed the URL, and you can link to
www.omg.org to search for the correct specification.
These are the only specifications referenced by this document.
Supported Specification Details
Not all of the above specifications are currently implemented in the ORB
in J2SE 5.0. The precise list of supported sections is as follows:
-
CORBA 2.3.1 chapters 1-3 and 6-9
- Revised IDL to Java language mapping, section 1.21.8.2, the orb.properties
file.
-
CORBA 2.3.1 chapter 4 with the following replacements from the Portable
Interceptors specification:
-
section 4.2.3.5 destroy
-
section 4.5.2 CodeFactory and PICurrent are required
-
Section 4.5.3.4 as updated for register_initial_reference
-
CORBA 2.3.1 chapter 5 with the following update from the Portable Interceptors
specification:
-
5.5.2 StringSeq and WStringSeq are required. This adds the
following
classes
to org.omg.CORBA:
-
StringSeqHolder
-
StringSeqHelper
-
WStringSeqHolder
-
WStringSeqHelper
-
CORBA 2.3.1 sections 10.6.1 and 10.6.2 are supported for repository IDs.
-
CORBA 2.3.1 section 10.7 for TypeCode APIs.
-
CORBA 2.3.1 chapter 11, Portable Object Adapter (POA), with the following updates from the Portable Interceptors specification:
-
Section 11.3.7 POAs must preserve all policies
-
Section 11.3.8.2 again states that POAs must preserve all policies
-
Section 11.3.8.26 POA::id is required.
-
CORBA 2.3.1 chapters 13 and 15 define GIOP 1.0, 1.1, and 1.2. The J2SE 5.0
ORB fully supports all versions of GIOP, with the exception that the bi-directional
GIOP feature defined in sections 15.8 and 15.9 is not supported.
-
All of the Interoperable Naming Service is supported.
-
Portable Interceptors section 13.8 (the new Coder/Decoder interfaces)
and
all of chapter 21 (the interceptor specification).
- Section 1.21.8 of the Revised IDL to Java Language Mapping Specification (ptc/00-11-03)
has been changed from the version in the IDL to Java Language Mapping Specification (ptc/00-01-08).
Tools
-
The IDL to Java compiler (idlj) complies with:
-
CORBA 2.3.1 chapter 3 (IDL definition)
-
CORBA 2.3.1 chapters 5 and 6 (semantics of Value types)
-
CORBA 2.3.1 section 10.6.5 (pragmas)
-
The IDL to Java mapping specification
-
The Revised IDL to Java language mapping specification section 1.12.1 "local interfaces"
-
The Java to IDL compiler (the IIOP backend for rmic) complies with:
-
CORBA 2.3.1 chapters 5 and 6 (value types)
-
The Java to IDL language mapping. Note that this implicitly references
section 1.21 of the IDL to Java language mapping
-
IDL generated by the -idl flag complies with CORBA 2.3.1 chapter 3.
Other Compatibility Information
- The class java.util.Calendar is not interoperable between J2SE
1.3.x and J2SE 5.0 when using RMI-IIOP. OMG issue 3151 may resolve
this, but it will probably have to be implemented in a later release
of the Java platform.
The J2SE 5.0 version of Calendar writes a ZoneInfo
object in
its writeObject method. Similarly, it calls readObject
to read this.
Based on Java Object Serialization, it expects that if it's talking to
an older version, the object won't be there, so the stream will throw
an EOFException and keep the stream position intact.