In our conceptual model, message processing in WSO2 SOA Enablement Server occurs on three levels: Raw, XML/SOAP and Application (Java). Data is encapsulated in transport connections at the raw level, messages at the XML/SOAP level and Java objects at the application level.
The following processes occur on each level:
Transports carry messages between a client and a remote object. These messages contain binary data and transport headers. Interceptors filter this binary data and access the transport headers.
Transports are normally hidden under service interfaces. However, there are a number of use cases where the user needs to manipulate the transports directly.
WSO2 SOA Enablement Server includes a large number of built-in transports. WSO2 SOA Enablement Server is set up so that the JMS Transport can be plugged in easily. Other transport mechanisms can be plugged in through modifying the WSO2 SOA Enablement Server configuration.
SOAP Protocols create XML/SOAP messages. They use transport connections and an XML parser for serialization and deserialization.
SOAP message handlers provide access to SOAP messages, which may represent either a Web service request or a response. A handler can be used in both the Web service and the client applications that invoke the Web service.
A SOAP message can be divided into two basic blocks: headers and body. The body carries the actual data while headers transfer meta-information. Some sample headers:
Header containing username/password for user authentication
Header containing routing information
Header containing digital signature of the body
Header containing the creation / expiration date of the message
Java objects are serialized to SOAP messages and vice-versa.
Sometimes a client or server needs to send application-specific binary data to its peer. For example, a service might want to return a picture or audio data. This binary data is usually sent as an attachment to a message. The handling of attachments to SOAP messages is covered in the Processing Attachments chapter.