1.4. マーシャリングされた Java オブジェクト
Data Grid は、マーシャリングされた Java オブジェクトをバイトアレイとしてキャッシュに保存します。たとえば、以下は、メモリーに値として保存される Person オブジェクトの単純な表現です。
value=[61 6c 61 6e 0a 70 61 72 74 72 69 64 67 65]
value=[61 6c 61 6e 0a 70 61 72 74 72 69 64 67 65]
キャッシュにマーシャリングされたオブジェクトを保存するには、厳密な要件がない限り、ProtoStream マーシャラーを使用する必要があります。たとえば、クライアントアプリケーションを古いバージョンの Data Grid から移行する場合は、Hot Rod Java クライアントで JBoss マーシャリングを一時的に使用する必要がある場合があります。
Data Grid は、以下のメディアタイプでマーシャリングされた Java オブジェクトをバイトアレイとして保存します。
-
application/x-protostream -
application/x-jboss-marshalling -
application/x-java-serialized-object
アンマーシャリングされた Java オブジェクトを保存する場合、Data Grid は equals() および hashCode() のオブジェクト実装を使用します。マーシャリングされたオブジェクトを保存する場合、マーシャリングされたバイトは等価性について比較され、代わりにハッシュ化されます。
1.4.1. クライアントおよびマーシャリングされたオブジェクト リンクのコピーリンクがクリップボードにコピーされました!
Hot Rod Java クライアントをマーシャラーを使用するように設定する場合は、そのマーシャラーのエンコーディングでキャッシュを設定する必要があります。
それぞれのマーシャラーは異なるメディアタイプを使用して、クライアントが Data Grid Server に送信できる byte[] コンテンツを生成します。サーバーから読み取る場合、クライアントマーシャラーは逆の操作を行います。メディアタイプを使用して byte[] コンテンツからデータを生成します。
キャッシュエンコーディングは Hot Rod クライアントマーシャラーと互換性がある必要があります。たとえば、キャッシュエンコーディングを application/x-protostream として設定している場合、クライアント上で ProtoStream マーシャラーを使用して、そのキャッシュ上で動作させることができます。ただし、クライアントマーシャラーが、Data Grid が application/x-protostream との間で変換できないエンコーディングを使用する場合、Data Grid はエラーメッセージを出力します。
JavaSerializationMarshaller または GenericJBossMarshaller を使用する場合は、キャッシュを application/x-java-serialized-object または application/x-jboss-marshalling メディアタイプでエンコードする必要があります。
ProtoStream から JSON への変換
Data Grid は、application/x-protostream メディアタイプでエンコードされたキーと値を application/json に変換します。
これにより、REST クライアントは要求ヘッダーに JSON メディアタイプを追加し、ProtoStream エンコーディングを使用するキャッシュで操作を実行することができます。
-
Accept: application/json(読み取り操作の場合) -
Content-Type: application/json(書き込み操作の場合)