About JBoss Marshalling

JBoss Marshalling is an alternative serialization API that fixes many of the problems found in the JDK serialization API while remaining fully compatible with java.io.Serializable and its relatives, and adds several new tunable parameters and additional features, all of which are pluggable via factory configuration (externalizers, class/instance lookup tables, class resolution, and object replacement, to name a few).

This framework was inspired by the need for certain features unavailable with the standard Object*Stream classes:

Pluggable class resolvers, making it easy to customize classloader policy, by implementing a small interface (rather than having to subclass the Object*Stream classes)

classes) Pluggable object replacement (also without subclassing)

Pluggable predefined class tables, which can dramatically decrease stream size and serialization time for stream types which frequently use a common set of classes

Pluggable predefined instance tables, which make it easy to handle remote references

Pluggable externalizers which may be used to serialize classes which are not Serializable , or for which an alternate strategy is needed

, or for which an alternate strategy is needed Customizable stream headers

Each marshaller instance is highly configurable and tunable to maximize performance based on expected usage patterns

A generalized API which can support many different protocol implementations, including protocols which do not necessarily provide all the above features

Inexpensive instance creation, beneficial to applications where many short-lived streams are used

Support for separate class and instance caches, if the protocol permits; useful for sending multiple messages or requests with a single stream, with separate object graphs but retaining the class cache



