Transports
In Axis2, each and every transport consists of two parts, namely "Transport Senders" and "Transport Receivers". We can define transports along with senders and receivers in Axis2 global configuration. The Transport Receiver is the one via which, the AxisEngine receives the message whereas the transport sender is the one that sends out the message.
One of the important aspects of Axis2 is that its core is completely independent of the transport sender and receiver.
Axis2 is built to support the following transport protocols:
- HTTP/HTTPS: In HTTP transport, the transport listener is a servlet or org. apache.axis2.transport.http.SimpleHTTPServer provided by Axis2. The transport sender uses a common HTTP client for connection and sends the SOAP message.
- TCP: This is the simplest transport and it needs WS-Addressing support in order to be functional.
- SMTP: This requires a single email account. The transport receiver is a thread that checks for emails at fixed time intervals.
- JMS: This provides a way to invoke a Web Service using the JMS way.
- XMPP: This provides a standard way to communicate with Jabber server, and to invoke Web Services using XMPP protocol.
Other Modules
- Code Generation: Axis2 provides a code generation tool that generates server-side (skeleton) and client-side (stub or proxy) code along with descriptors and a test case. The generated code simplifies the service deployment and the service invocation. This increases the usability of Axis2.
- Pluggable Data Binding: The basic client API of Axis2 lets the user process SOAP at the XML infoset level, whereas data binding extends it to make it more convenient for the users by encapsulating the infoset layer and providing a programming language-specific interface.
Code Generation
Although the basic objective of the code generation tools has not changed, the code generation module of Axis2 has adopted a different approach. Primarily, the change is in the use of templates, namely XSL templates, which gives flexibility to the code generator so as to generate code in multiple languages.