Chapter 42. Configuring Media Types
Red Hat JBoss Data Grid lets you configure the media type for data in the cache. In other words, you can set a media type that defines the storage format for data in the cache.
JBoss Data Grid allows clients to write and read data in different storage formats and automatically converts between formats when necessary.
42.1. Default Media Type
The default media type is application/octet-stream for both keys and values with the following exceptions:
-
Indexed caches have a default media type of
application/x-protostream. -
Caches that use compatibility mode have a default media type of
application/x-java-object.
42.2. Supported Media Types
Red Hat JBoss Data Grid lets clients read and write data in different formats and automatically converts between formats.
JBoss Data Grid supports several data formats that are interchangeable with one another, as follows:
-
application/x-java-object -
application/octet-stream -
application/x-www-form-urlencoded -
text/plain
JBoss Data Grid also supports data formats that it must convert to and from the data formats in the preceding list, as follows:
-
application/xml -
application/json -
application/x-jboss-marshalling -
application/x-java-serialized -
application/x-protostream
In addition, JBoss Data Grid supports conversion between application/x-protostream and application/json.
42.3. Declaratively Configuring Media Types
The following is an example configuration that defines the media type for keys and values:
<cache>
<encoding>
<key media-type="application/x-java-object; type=java.lang.Integer"/>
<value media-type="application/xml; charset=UTF-8"/>
</encoding>
</cache>42.4. Programmatically Configuring Media Types
Use the ConfigurationBuilder interface to programmatically configure the media type, as in the following example:
ConfigurationBuilder cfg = new ConfigurationBuilder();
cfg.encoding().key().mediaType("text/plain");
cfg.encoding().value().mediaType("application/json");42.5. Overriding Media Types
You can programmatically override the media type that is configured for the cache, as in the following example:
DefaultCacheManager cacheManager = new DefaultCacheManager();
// The cache will store POJO for keys and values
ConfigurationBuilder cfg = new ConfigurationBuilder();
cfg.encoding().key().mediaType("application/x-java-object");
cfg.encoding().key().mediaType("application/x-java-object");
cacheManager.defineConfiguration("mycache", cfg.build());
Cache<Integer, Person> cache = cacheManager.getCache("mycache");
cache.put(1, new Person("John","Doe"));
// Wraps cache using 'application/x-java-object' for keys but JSON for values.
cache.getAdvancedCache().withMediaType("application/x-java-object", "application/json");
byte[] json = cache.get(1);This configuration returns the value in JSON format, as follows:
{
"_type":"org.infinispan.sample.Person",
"name":"John",
"surname":"Doe"
}
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.