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: blocking and non-blocking. In a blocking transport, the I/O threads are blocked because the same worker thread that sends the request to the server remains open to receive the response. These threads are blocked until messages are completely processed by the underlying Axis2 engine. In non-blocking transports, the worker thread that sends the request will not wait for the response, and another thread will receive the response. Therefore, non-blocking transports increase the performance of the server.
For more information on transports, see the following topics: