19.3. Protocol Interoperability
The compatibility
element's enabled
parameter is set to true
or false
to determine whether compatibility mode is in use.
<cache-container name="local" default-cache="default" statistics="true"> <local-cache name="default" start="EAGER" statistics="true"> <transaction mode="NONE"/> <compatibility enabled="true"/> </local-cache> </cache-container>
Use a configurationBuilder with the compatibility mode enabled as follows:
ConfigurationBuilder builder = ... builder.compatibility().enable();
The compatibility
element's enabled
parameter is set to true
or false
to determine whether compatibility mode is in use.
<namedCache name="compatcache"> <compatibility enabled="true"/> </namedCache>
19.3.1. Use Cases and Requirements
Use Case | Client A (Reader or Writer) | Client B (Write/Read Counterpart of Client A) |
---|---|---|
1 | Memcached | Hot Rod Java |
2 | REST | Hot Rod Java |
3 | Memcached | REST |
4 | Hot Rod Java | Hot Rod C++ |
5 | Embedded | Hot Rod Java |
6 | REST | Hot Rod C++ |
7 | Memcached | Hot Rod C++ |
Person
instance, it would use a String as a key.
Client A Side
- A uses a third-party marshaller, such as Protobuf or Avro, to serialize the
Person
value into a byte[]. A UTF-8 encoded string must be used as the key (according to Memcached protocol requirements). - A writes a key-value pair to the server (key as UTF-8 string, the value as byte arrays).
Client B Side
- B must read a
Person
for a specific key (String). - B serializes the same UTF-8 key into the corresponding byte[].
- B invokes
get(byte[])
- B obtains a byte[] representing the serialized object.
- B uses the same marshaller as A to unmarshall the byte[] into the corresponding
Person
object.
Note
- In Use Case 4, the Protostream Marshaller, which is included with the Hot Rod Java client, is recommended. For the Hot Rod C++ client, the Protobuf Marshaller from Google (https://developers.google.com/protocol-buffers/docs/overview) is recommended.
- In Use Case 5, the default Hot Rod marshaller can be used.