...
Overview
When a message comes in to to the ESB profile of WSO2 Enterprise Integrator (WSO2 EI), the receiving transport selects a message builder based on the message's content type. It uses that builder to process the message's raw payload data and convert it into SOAP. Conversely, when sending a message out from WSO2 EIESB, a message formatter is used to build the outgoing stream from the message. As with message builders, the message formatter is selected based on the message's content type. In a typical WSO2 EI routing scenario of the ESB, here is the flow:
You can use the messageType property to change the message's content type as it flows through WSO2 EIESB. For example, if the incoming message is in JSON format and you want to transform it to XML, you could add the messageType property before your mediators in the configuration:
...
Message builders and formatters are specified in in <EI_HOME>/conf/axis2/axis2.xml
(or <EI_HOME>/conf/axis2/tenant-axis2.xml
under the messageBuilders
and messageFormatters
configuration sections. . if you are working in a multi-tenant environment), under the messageBuilders
and messageFormatters
configuration sections.
The ESB profile of WSO2 EI has a few default message builders, so even if you do not specify them explicitly in in axis2.xml
or tenant-axis2.xml
, they will take effect when messages of those content types come into the WSO2 EIESB profile. If you want to use different builders, specify them in in axis2.xml
or tenant-axis2.xml
to to override the defaults. WSO2 EI does The ESB profile does not have default message formatters, so it is important to specify all of them in the the axis2.xml
or tenant-axis2.xml
configuration configuration. Following are the default message builders:
Content type | Message Builder |
---|---|
application/soap+xml | org.apache.axis2.builder.SOAPBuilder |
multipart/related | org.apache.axis2.builder.MIMEBuilder |
text/xml | org.apache.axis2.builder.SOAPBuilder |
application/xop+xml | org.apache.axis2.builder.MTOMBuilder |
application/xml | org.apache.axis2.builder.ApplicationXMLBuilder |
application/x-www-form-urlencoded | org.apache.axis2.builder.XFormURLEncodedBuilder |
Using message relay
If you want to enable message relay, so that messages of a specific content type are not built or formatted but simply pass through WSO2 EIthe ESB, you can specify the message relay builder (org.wso2.carbon.relay.BinaryRelayBuilder
) for that content type. For more information, see Configuring Message Relay.
...
- In the parameters section:
<parameter name="defaultContentType" locked="false">empty/content<>"empty/content"</parameter>
- In the message builders section:
<messageBuilder contentType="empty/content" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>
- In the message formatters section:
<messageFormatter contentType="empty/content" class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>
...
There is no default builder or formatter for messages with the text/csv content type. If you just want to pass these messages through WSO2 EIthe ESB, you can configure the message relay builder and formatter. If you want to process these messages, you can access the content inside the request/response payload of CSV by configuring the org.apache.axis2.format.PlainTextBuilder
and org.apache.axis2.format.PlainTextFormatter
for the text/csv content type in axis2.xml
. For example:
...
When a text/csv message comes into WSO2 EIthe ESB, the log will include an entry similar to the following, and you can observe that the CSV data is placed inside the payload:
...