2.15. Hot Rod クライアントデータ形式の設定


デフォルトでは、Hot Rod クライアント操作は、キーと値の両方に Data Grid サーバーから読み書きする際に、設定されたマーシャラーを使用します。

ただし、DataFormat API を使用すると、すべての操作がカスタムデータ形式で実行されるようにリモートキャッシュを切り離すことができます。

キーと値の異なるマーシャラーの使用

キーと値のマーシャラーはランタイム時に上書きできます。たとえば、Hot Rod クライアントのすべてのシリアル化をバイパスし、サーバーに保存されているため byte[] を読み取るには、以下を実行します。

// Existing RemoteCache instance
RemoteCache<String, Pojo> remoteCache = ...

// IdentityMarshaller is a no-op marshaller
DataFormat rawKeyAndValues =
DataFormat.builder()
          .keyMarshaller(IdentityMarshaller.INSTANCE)
          .valueMarshaller(IdentityMarshaller.INSTANCE)
          .build();

// Creates a new instance of RemoteCache with the supplied DataFormat
RemoteCache<byte[], byte[]> rawResultsCache =
remoteCache.withDataFormat(rawKeyAndValues);
Copy to Clipboard Toggle word wrap
重要

keyMarshaller() および keyType() メソッドでキーに異なるマーシャラーと形式を使用すると、クライアントインテリジェンスルーティングメカニズムに干渉し、Data Grid クラスター内で追加のホップが操作を実行する可能性があります。パフォーマンスが重要な場合は、サーバーによって保存された形式のキーを使用する必要があります。

XML 値を返す

Object xmlValue = remoteCache
      .withDataFormat(DataFormat.builder()
      .valueType(APPLICATION_XML)
      .valueMarshaller(new UTF8StringMarshaller())
      .build())
      .get(key);
Copy to Clipboard Toggle word wrap

上記のコード例は、以下のように XML 値を返します。

<?xml version="1.0" ?><string>Hello!</string>
Copy to Clipboard Toggle word wrap

異なる形式でのデータの読み取り

以下のように、org.infinispan.commons.dataconversion.MediaType で指定された異なる形式でデータを要求および送信します。

// Existing remote cache using ProtostreamMarshaller
RemoteCache<String, Pojo> protobufCache = ...

// Request values returned as JSON
// Use the UTF8StringMarshaller to convert UTF-8 to String
DataFormat jsonString =
DataFormat.builder()
          .valueType(MediaType.APPLICATION_JSON)
          .valueMarshaller(new UTF8StringMarshaller())
          .build();
RemoteCache<byte[], byte[]> rawResultsCache =
protobufCache.withDataFormat(jsonString);
Copy to Clipboard Toggle word wrap
// Alternatively, use a custom value marshaller
// that returns `org.codehaus.jackson.JsonNode` objects
DataFormat jsonNode =
DataFormat.builder()
          .valueType(MediaType.APPLICATION_JSON)
          .valueMarshaller(new CustomJacksonMarshaller()
          .build();

RemoteCache<String, JsonNode> jsonNodeCache =
remoteCache.withDataFormat(jsonNode);
Copy to Clipboard Toggle word wrap

上記の例では、Data Grid サーバーでデータ変換が行われます。ストレージ形式への変換をサポートしていない場合、Data Grid は例外を出力します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat