20.7.16. イベントマーシャリング
Hot Rod サーバーは、異なる形式でデータを保存できますが、Java Hot Rod クライアントユーザーは、タイプ化されたオブジェクトで機能する CacheEventConverter インスタンスまたは CacheEventFilter インスタンスを開発できます。デフォルトでは、フィルターとコンバーターは、データを POJO (application/x-java-object)として使用しますが、filter/converter からメソッド format() を上書きすることで、希望の形式を上書きすることができます。形式が null を返す場合、フィルター/変換は保存時にデータを受け取ります。
Marshalling Data セクションが示すように、Hot336 Java クライアントは、別の org.infinispan.commons.marshaller インスタンスを使用するよう設定でき ます。これ CacheEventConverter インスタンスや CacheEventFilter インスタンスをデプロイしたり、コンテンツをマーシャリングしたりするのではなく、Java オブジェクトでフィルター/変換できるようにするには、サーバーはオブジェクトとマーシャラーで生成されるバイナリー形式の間で変換できるようにする必要があります。
Marshaller インスタンスのサーバー側のデプロイするには、CacheEventConverterインスタンスまたはCacheEventFilterインスタンスをデプロイするのに使用されるものと同様の方法に従います。
- コンバーターの実装を含むJARファイルを作成します。
-
JAR ファイル内で
META-INF/services/org.infinispan.commons.marshall.Marshallerファイルを作成し、フィルタークラス実装の完全修飾クラス名を作成します。 - JAR ファイルを Red Hat Data Grid Server にデプロイします。
Marshaller は個別の jar または CacheEventConverterインスタンスおよび/またはCacheEventFilterインスタンスと同じ jar にデプロイできることに注意してください。
20.7.16.1. Protostream マーシャラーのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
キャッシュに protostream マーシャラーを使用する際に発生するように protobuf コンテンツが格納されている場合、形式はすでにサーバーによってサポートされているため、カスタムのマーシャラーをデプロイする必要はありません。protobuf 形式から JSON や POJO のような最も一般的な形式へのトランスコーダーがあります。
これらのキャッシュでフィルター/変換を使用し、バイナリー prototobuf データではなく Java オブジェクトでフィルター/変換を使用することが望ましい場合には、フィルター/変換の前にサーバーがデータをアンマーシャリングできるように、追加の protostream マーシャラーをデプロイする必要があります。これを行うには、以下の手順に従います。
以下のインターフェースの実装が含まれる JAR ファイルを作成します。
org.infinispan.query.remote.client.ProtostreamSerializationContextInitializerこの実装は、Cache Manager の
Serializationコンテキストに、さらにマーシャラーとオプションの Protobuf(.proto)ファイルを追加する必要があります。以下のファイルを JAR ファイル内に作成します。
META-INF/services/org.infinispan.query.remote.client.ProtostreamSerializationContextInitializerこのファイルには、
ProtostreamSerializationContextInitializer実装の完全修飾クラス名が含まれている必要があります。以下を含む JAR ファイル内に
META-INF/MANIFEST.MFファイルを作成します。Dependencies: org.infinispan.protostream, org.infinispan.remote-query.clientRed Hat Data Grid Server がカスタムクラスにアクセスできるように、JBoss デプロイメント構造ファイル
jboss-deployment-structure.xmlを更新し、以下の内容を追加します。<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> <deployment> <dependencies> <module name="org.infinispan.protostream" /> <module name="org.infinispan.remote-query.client" services="import"/> </dependencies> </deployment> </jboss-deployment-structure>-
standalone/deploymentsフォルダーに追加して、JAR ファイルを Red Hat Data Grid Server にデプロイします。 以下のように、適切な Cache Manager でデプロイメントを設定します。
<cache-container name="local" default-cache="default"> <modules> <module name="deployment.my-file.jar"/> </modules> ... </cache-container>
カスタムクラスを Red Hat Data Grid Server にデプロイする JAR ファイルは起動時に利用可能である必要があります。JAR を稼働中のサーバーインスタンスにデプロイできません。