A transport is responsible for carrying messages that are in a specific format. WSO2 ESB supports all the widely used transports including HTTP/s, JMS, and VFS, and domain-specific transports like FIX. All WSO2 transports are directly or indirectly based on the Apache Axis2 transports framework. This framework provides two main interfaces that each transport implementation must implement.
- org.apache.axis2.transport.TransportListener - Implementations of this interface specify how incoming messages are received and processed before handing them over to the Axis2 engine for further processing.
- org.apache.axis2.transport.TransportSender - Implementations of this interface specify how a message can be sent out from the Axis2 engine.
Because each transport implementation has to implement the above two interfaces, each transport generally contains a transport receiver/listener implementation and a transport sender implementation. You configure, enable, and manage transport listeners and senders independently of each other. For example, you could enable just the JMS transport sender without having to enable the JMS transport listener.
Blocking and non-blocking transports
There are two main types of transports as blocking and non-blocking. In a blocking transport, the I/O threads get blocked since the same worker thread which sends the request to the server will wait to receive the response, while received messages are processed completely by the underlying Axis2 engine. However, in non-blocking transports the worker thread which sends the request will not wait for the response and another thread will receive the response. Thereby, non-blocking transports increase the performance of the server.
For more information on transports, see the following topics: