4.2. 埋め込みキャッシュを使用したオンデマンドのデータ変換
埋め込みキャッシュには、application/x-java-object
のデフォルトのリクエストエンコーディングと、キャッシュに設定したメディアタイプに対応するストレージエンコーディングがあります。つまり、Data Grid はアプリケーションからの POJO をキャッシュのストレージエンコーディングにマーシャルし、POJO をアプリケーションに返します。複雑なシナリオによっては、AdvancedCache
API を使用して POJO との間のデフォルト変換を他のエンコーディングに変更できます。
以下の例では、withMediaType()
メソッドを使用して、オンデマンドで application/json
として値を返します。
MediaType を使用した高度なキャッシュ
DefaultCacheManager cacheManager = new DefaultCacheManager(); // Encode keys and values as Protobuf ConfigurationBuilder cfg = new ConfigurationBuilder(); cfg.encoding().key().mediaType("application/x-protostream"); cfg.encoding().value().mediaType("application/x-protostream"); cacheManager.defineConfiguration("mycache", cfg.build()); Cache<Integer, Person> cache = cacheManager.getCache("mycache"); cache.put(1, new Person("John","Doe")); // Use Protobuf for keys and JSON for values Cache<Integer, byte[]> jsonValuesCache = (Cache<Integer, byte[]>) cache.getAdvancedCache().withMediaType("application/x-protostream", "application/json"); byte[] json = jsonValuesCache.get(1);
JSON 形式で返される値
{ "_type":"org.infinispan.sample.Person", "name":"John", "surname":"Doe" }