Implementing User-Defined Objects in Java Clients
You can use one of two methods to implement a user-defined object in a Java client that works with C++ clients: Instantiator.register
and DataSerializable
.
Instantiator.register
With the Instantiator.register
method, a client sends a RegistrationMessage
to every Java VM in its distributed system. The message announces the mapping between a user-defined classId and class name. The other JVMs can deserialize the byte array with the correct class.
DataSerializable
Using the DataSerializable
method, the user-defined object is serialized into the following byte array:
45 <2-byte-length> <class-name>
A Java client can deserialize the byte array, but a C++ client cannot convert the Java class name to a C++ class name.
Implementation
The DataSerializable
method does not support using a nested object, while Instantiator.register
does support the use of nested objects. A workaround is to let each Java client manually initiate an object for each possible user object class a C++ client provides, using the following code:
User u = new User("", 0);
See Java Serialization Example for a code sample that shows how to set up user object classes in a Java client.