This example demonstrates reflection-based auto-serialization to put objects into and get objects out of VMware GemFire regions without relying on Java, PDX, or data serialization.
This is a simple example that demonstrates auto-serialization of objects of classes that do not
use Java serialization, PDX serialization, or data serialization. Reflection-based auto-serialization
uses Java reflection to put objects into and get objects out of regions without relying on Java,
PDX, or data serialization.
For an object to be stored in a region as either key or value, a copy of the object must be sent to
the server. Typically Java objects are sent across the network by serializing them into bytes
sent across a socket and then deserializing them from the bytes received from the socket on the
other side. This requires those objects’ classes to implement a particular interface that defines
how that serialization and deserialization is accomplished, e.g., java.io.Serializable,
org.apache.geode.DataSerializable, or org.apache.geode.pdx.PdxSerializable.
In order to perform queries on objects within the server, the fields of the objects must be
individually accessible. One way to accomplish this is to deserialize the objects into instances
within the server. This requires the relevant classes to be in the server’s class path. Another way
to accomplish this is by using the field-addressable format, PDX.
The reflection-based auto-serializer uses Java’s reflection and introspection to construct a PDX
instance. This obviates modifying classes to implement a serialization interface. This also allows
the objects to be queried by way of PDX without the classes being preset on the server’s class
This example assumes you have installed JDK11 and GemFire.
From the gemfire-examples/serialization directory, build the example and
run unit tests
$ ../gradlew build
Next start the locator and two servers
$ gfsh run --file=scripts/start.gfsh
Run the example to create entries in the region
$ ../gradlew run
Shut down the system:
$ gfsh run --file=scripts/stop.gfsh