Show Table of Contents
10.3. Externalizable API
An
Externalizer is a class that can:
- Marshall a given object type to a byte array.
- Unmarshall the contents of a byte array into an instance of the object type.
Externalizers are used by Red Hat JBoss Data Grid and allow users to specify how their object types are serialized. The marshalling infrastructure used in JBoss Data Grid builds upon JBoss Marshalling and provides efficient payload delivery and allows the stream to be cached. The stream caching allows data to be accessed multiple times, whereas normally a stream can only be read once.
The Externalizable interface uses and extends serialization. This interface is used to control serialization and deserialization in JBoss Data Grid.
10.3.1. Register the Advanced Externalizer (Declaratively)
After the advanced externalizer is set up, register it for use with Red Hat JBoss Data Grid. This registration is done declaratively (via XML) as follows:
Procedure 10.1. Register the Advanced Externalizer
<infinispan>
<cache-container>
<serialization>
<advanced-externalizer class="Book$BookExternalizer" />
</serialization>
</cache-container>
</infinispan>- Add the
serializationelement to thecache-containerelement. - Add the
advanced-externalizerelement, defining the custom Externalizer with theclassattribute. Replace the Book$BookExternalizer values as required.
10.3.2. Custom Externalizer ID Values
Advanced externalizers can be assigned custom IDs if desired. Some ID ranges are reserved for other modules or frameworks and must be avoided:
Table 10.1. Reserved Externalizer ID Ranges
| ID Range | Reserved For |
|---|---|
| 1000-1099 | The Infinispan Tree Module |
| 1100-1199 | Red Hat JBoss Data Grid Server modules |
| 1200-1299 | Hibernate Infinispan Second Level Cache |
| 1300-1399 | JBoss Data Grid Lucene Directory |
| 1400-1499 | Hibernate OGM |
| 1500-1599 | Hibernate Search |
| 1600-1699 | Infinispan Query Module |
| 1700-1799 | Infinispan Remote Query Module |
| 1800-1849 | JBoss Data Grid Scripting Module |
| 1850-1899 | JBoss Data Grid Server Event Logger Module |
| 1900-1999 | JBoss Data Grid Remote Store |
10.3.2.1. Customize the Externalizer ID (Declaratively)
Customize the advanced externalizer ID declaratively (via XML) as follows:
Procedure 10.2. Customizing the Externalizer ID (Declaratively)
<infinispan>
<cache-container>
<serialization>
<advanced-externalizer id="123"
class="Book$BookExternalizer"/>
</serialization>
</global>
</infinispan>- Add the
serializationelement to thecache-containerelement. - Add the
advanced-externalizerelement to add information about the new advanced externalizer. - Define the externalizer ID using the
idattribute. Ensure that the selected ID is not from the range of IDs reserved for other modules. - Define the externalizer class using the
classattribute. Replace the Book$BookExternalizer values as required.

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.