Search

Chapter 42. Configuring Media Types

download PDF

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"
}
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.