2.14. Hot Rod Java クライアントマーシャリング
Hot Rod は、Java オブジェクトをバイナリー形式に変換する必要があるバイナリー TCP プロトコルです。これにより、ネットワーク経由で転送したり、ディスクに保存したりできます。
デフォルトでは、Data Grid は ProtoStream API を使用して、言語に依存しない下位互換性のある形式で、Java オブジェクトをプロトコルバッファー (Protobuf) にエンコードおよびデコードします。ただし、カスタムマーシャラーを実装して使用することもできます。
2.14.1. SerializationContextInitializer 実装の設定
ProtoStream SerializationContextInitializer
インターフェイスの実装を Hot Rod クライアント設定に追加して、Data Grid がカスタム Java オブジェクトをマーシャリングできるようにします。
手順
-
以下のように
SerializationContextInitializer
実装を Hot Rod クライアント設定に追加します。
hotrod-client.properties
infinispan.client.hotrod.context-initializers=org.infinispan.example.LibraryInitializerImpl,org.infinispan.example.AnotherExampleSciImpl
プログラムによる設定
ConfigurationBuilder builder = new ConfigurationBuilder(); builder .addServer() .host("127.0.0.1") .port(11222) .addContextInitializers(new LibraryInitializerImpl(), new AnotherExampleSciImpl()); RemoteCacheManager rcm = new RemoteCacheManager(builder.build());
2.14.2. カスタムマーシャラーの設定
カスタムマーシャラーを使用するように Hot Rod クライアントを設定します。
手順
-
org.infinispan.commons.marshall.Marshaller
インターフェイスを実装します。 - Hot Rod クライアント設定でクラスの完全修飾名を指定します。
Java クラスを Data Grid デシリアライズホワイトリストに追加します。
以下の例では、
Person
またはEmployee
が含まれる完全修飾名を持つクラスのみが許可されます。ConfigurationBuilder clientBuilder = new ConfigurationBuilder(); clientBuilder.marshaller("org.infinispan.example.marshall.CustomMarshaller") .addJavaSerialWhiteList(".*Person.*", ".*Employee.*"); ...