4.5. 存储 Marshalled Java 对象
Java Hot Rod 客户端可以处理代表实体的 Java 对象,并执行 marshalling 来序列化和反序列化对象到 byte[] 数组。C++、C# 和 Javascript Hot Rod 客户端也可以使用相应的语言处理对象。
如果您在缓存中存储条目为 marshalled Java 对象,您应该使用 marshalled 存储的 MediaType 配置缓存。
流程
指定与您的 marshaller 实现匹配的 MediaType。
-
ProtoStream marshaller :将 MediaType 配置为
application/x-protostream。 -
JBoss marshalling: 将 MediaType 配置为
application/x-jboss-marshalling。 -
Java serialization:将 MediaType 配置为
application/x-java-serialized-object。
-
ProtoStream marshaller :将 MediaType 配置为
- 配置您的客户端。
由于 REST 客户端最适合处理文本格式,因此您应该对键使用 java.lang.String 等原语。否则,REST 客户端必须使用受支持的二进制编码以 bytes[] 的形式处理密钥。
REST 客户端可以读取 XML 或 JSON 格式的缓存条目的值。
相等注意事项
当以二进制格式存储数据时,Data Grid 将 WrappedBytes 接口用于键和值。这个打包程序类以透明的方式按照需求处理序列化和解序列化,内部可能对对象本身的引用,或者对象的序列化字节数组表示。这对相等的行为有影响,如果您对键实施 equals () 方法,则必须注意这一点。
wrapper 类的 equals () 方法可以比较二进制表示(字节数组)或委托给嵌套对象实例的 equals () 方法,具体取决于在比较时两个实例是否被序列化或反序列化形式。如果比较的一个实例采用一种形式,另一个形式采用另一种形式,则一个实例被序列化或反序列化。