Contact Us 1-800-596-4880

Bootstrapping the Registry

Mule provides a mechanism for adding objects to the Mule registry as soon as a module or transport is loaded. This is useful for registering shared transformers or expression evaluators.

All objects you add to the registry using this mechanism must have a default constructor. They can implement injection interfaces such as org.mule.MuleContextAware and lifecycle interfaces such as org.mule.api.lifecycle.Initialisable.

Specifying the Objects to Bootstrap

To load an object into the Mule registry using the bootstrap mechanism, you specify the object in the properties file registry-bootstrap.properties, which you then store in the META-INF directory for the transport or module. For example:

src/main/resources/META-INF/services/org/mule/config/registry-bootstrap.properties

Each entry in the registry-bootstrap.properties file is a simple key/value pair that defines the object:

registry-bootstrap.properties
myobject=org.foo.MyObject

If this file is in a module or transport’s META-INF directory, Mule will register an instance of org.foo.MyObject with a key of 'myobject' into the local registry when that module or transport is loaded.

If you want to ensure that the object gets a unique ID in the local registry, you can use object.n for the key, where n is a sequential number:

registry-bootstrap.properties
object.1=org.foo.MyObject
object.2=org.bar.MyObject

Adding Transformers

When adding transformers, you can also define the returnClass and name of the transformer as parameters:

registry-bootstrap.properties
transformer.1=org.mule.transport.jms.transformers.JMSMessageToObject,returnClass=byte[]
transformer.2=org.mule.transport.jms.transformers.JMSMessageToObject,returnClass=java.lang.String, name=JMSMessageToString
transformer.3=org.mule.transport.jms.transformers.JMSMessageToObject,returnClass=java.util.Hashtable)

Note that the key used for transformers must be transformer.n where n is a sequential number.

If the transformer name is not specified, Mule automatically generates the name as JMSMessageToXXX where XXX is the return class name, such as JMSMessageToString. If no returnClass is specified, the default value in the transformer is used.