JiBX
Since Camel 2.6
JiBX is a Data Format which uses the JiBX library to marshal and unmarshal Java objects to and from XML.
// lets turn Object messages into XML then send to MQSeries
from("activemq:My.Queue").
marshal().jibx().
to("mqseries:Another.Queue");
Please note that marshaling process can recognize the message type at the runtime. However while unmarshaling message from XML we need to specify target class explicitly.
// lets turn XML into PurchaseOrder message
from("mqseries:Another.Queue").
unmarshal().jibx(PurchaseOrder.class).
to("activemq:My.Queue");
Options
The JiBX dataformat supports 3 options, which are listed below.
Name | Default | Java Type | Description |
---|---|---|---|
unmarshallClass |
|
Class name to use when unmarshalling from XML to Java. |
|
bindingName |
|
To use a custom binding factory |
|
contentTypeHeader |
|
|
Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. |
Spring Boot Auto-Configuration
When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jibx-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
The component supports 4 options, which are listed below.
Name | Description | Default | Type |
---|---|---|---|
camel.dataformat.jibx.binding-name |
To use a custom binding factory |
String |
|
camel.dataformat.jibx.content-type-header |
Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. |
false |
Boolean |
camel.dataformat.jibx.enabled |
Enable jibx dataformat |
true |
Boolean |
camel.dataformat.jibx.unmarshall-class |
Class name to use when unmarshalling from XML to Java. |
String |
ND
JiBX Spring DSL
JiBX data format is also supported by Camel Spring DSL.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<!-- Define data formats -->
<dataFormats>
<jibx id="jibx" unmarshallClass="org.apache.camel.dataformat.jibx.PurchaseOrder"/>
</dataFormats>
<!-- Marshal message to XML -->
<route>
<from uri="direct:marshal"/>
<marshal ref="jibx"/>
<to uri="mock:result"/>
</route>
<!-- Unmarshal message from XML -->
<route>
<from uri="direct:unmarshal"/>
<unmarshal ref="jibx"/>
<to uri="mock:result"/>
</route>
</camelContext>
Dependencies
To use JiBX in your camel routes you need to add the a dependency on camel-jibx which implements this data format.
If you use maven you could just add the following to your pom.xml, substituting the version number for the latest & greatest release (see the download page for the latest versions).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jibx</artifactId>
<version>2.6.0</version>
</dependency>