We had some discussions around simplifying the way in which most developers could use the
Message Body. Here's what the updated Programmers Guide says on the subject:
Extensions to Body
Although you can manipulate the contents of a Message Body directly in terms of bytes or
name/value pairs, it is often more natural to use one of the following predefined Message
structures, which are simply different views onto the data contained in the underlying
Body.
As well as the basic Body interface, JBossESB supports the following interfaces, which are
extensions on the basic Body interface:
i. org.jboss.soa.esb.message.body.content.TextBody: the content of the Body is an
arbitrary String, and can be manipulated via the getText and setText methods.
ii. org.jboss.soa.esb.message.body.content.ObjectBody: the content of the Body is a
Serialized Object, and can be manipulated via the getObject and setObject methods.
iii. org.jboss.soa.esb.message.body.content.MapBody: the content of the Body is a
Map<String, Serialized), and can be manipulated via the setMap and other methods.
iv. org.jboss.soa.esb.message.body.content.BytesBody: the content of the Body is a byte
stream that contains arbitrary Java data-types. It can be manipulated using the various
setter and getter methods for the data-types. Once created, the BytesMessage should be
placed into either a read-only or write-only mode, depending upon how it needs to be
manipulated. It is possible to change between these modes (using readMode and writeMode),
but each time the mode is changed the buffer pointer will be reset. In order to ensure
that all of the updates have been pushed into the Body, it is necessary to call flush when
finished.
You can create Messages that have Body implementations based on one of these specific
interfaces through the XMLMessageFactory or SerializedMessageFactory classes. The need for
two different factories is explained in the section on Message Formats, which is described
later in the document.
For each of the various Body types, you will find an associated create method (e.g.,
createTextBody) that allows you to create and initialize a Message of the specific type.
Once created, the Message can be manipulated directly through the raw Body or via the
specific interface. If the Message is transmitted to a recipient, then the Body structure
will be maintained, e.g., it can be manipulated as a TextBody.
The XMLMessageFactory and SerializedMessageFactory are more convenient ways in which to
work with Messages than the MessageFactory and associated classes, which are described in
the following sections.
Note: these extensions to the base Body interface are provided in a complimentary manner
to the original Body. As such they can be used in conjunction with existing clients and
services. Message consumers can remain unaware of these new types if necessary because the
underlying data structure within the Message remains unchanged.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4074819#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...