Axis2: An Introduction
In this section introduces you with the Apache Axis2 framework.
Apache Axis2 is a core engine for Web services. It is a modified version of widely used Apache Axis Simple Object Access Protocol (SOAP) stake and re-designed and re-write engine of Web Service Definition Language (WSDL), which is more flexibility and power. There are two implementations of the Apache Axis2 Web services engine - Apache Axis2/Java and Apache Axis2/C.
Due to being a modified version, it supports all its previous versions including Axis1, SOAP 1.1, SOAP 1.2 and REST (REpresentational State Transfer) - the lighter version of SOAP. Axis2 integrates support from REST by just removing the SOAP headers both on the client and on the server. REST is an XML-based protocol for invoking Web services over HTTP. Axis2 has also support for Spring Framework.
The new architecture of Axis2 was introduced in first Axis2 summit held in 2004 in Colombo, Sri Lanka. It is built on Apache AXIOM, a new high performant, pull-based XML object model. The modified version is more efficient, more modular and more XML-oriented than its previous versions. It was carefully designed to support the easy addition of plug-in modules that extends its functionality and features like security and reliability.
In its included features, Axis2 is quite capable of functioning as a standalone server application as well as by adding Web services interfaces to Web applications. Due to its enhanced functionality, flexibility, scalability, it has become widely accepted as a framework for practical Web Service development, which is suitable not only for commercial application development, but also as a teaching tool and as a research platform.
However, Apache Axis2 is widely accepted but some of its modules are still under development:
WS-ReliableMessaging - Supported by Apache Sandesha2
WS-Coordination and WS-AtomicTransaction - Supported by Apache Kandula2
WS-Security - Supported by Apache Rampart
WS-Addressing -Module included as part of Axis2 core
After modification, Apache Axis2 offers some key features given below:
Speed - Axis2 has greater speed than Apache Axis1 as it uses its own object model and StAX (Streaming API for XML).
Low memory footprint - For greater flexibility, Axis2 was designed with low memory footprint.
AXIOM - AXIOM is the lightweight object model of Axis2 used for enhanced, superior performant and developer convenient message processing service.
Hot Deployment - A new service can be added in Axis2 without having to shut down the server. For doing this, users need to simply drop the required Web service archive into the services directory in the repository. The deployment model will automatically deploy the service.
Asynchronous Web services - Axis2 now supports asynchronous Web services & asynchronous Web services invocation using non-blocking clients and transports.
MEP Support - With its in-built support for basic Message Exchange Patterns (MEPs), Axis2 is quite capable in message handling.
Flexibility - Axis2 is more flexible now as it enables developers to insert extensions into the engine for custom header processing, system management, and many more features.
Stability - Axis2 is more stable than its previous versions as it defines a more rigid set of interfaces that does not need to change frequently.
Component-Oriented Deployment - You can easily define reusable networks of Handlers to implement common patterns of processing for your applications, or to distribute to partners.
Transport Framework - We have a clean and simple abstraction for integrating and using Transports (i.e., senders and listeners for SOAP over various protocols such as SMTP, FTP, message-oriented middleware, etc), and the core of the engine is completely transport-independent.
WSDL support - Axis2 supports WSDL allowing users to easily build stubs to access remote services, and also to automatically export machine-readable descriptions of your deployed services from Axis2.
Add-ons - Several Web services specifications have been incorporated including WSS4J for security (Apache Rampart), Sandesha for reliable messaging, Kandula which is an encapsulation of WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity.
Composition and Extensibility - Axis2 is supported with improved composition and extensibility allow to add support for new WS-* specifications in a simple and clean manner. They are however not hot deployable as they change the overall behavior of the system.
Limitations of Axis2
ADB does not support unwrapping of response messages (coming in 1.2)
JSR 181/183 Annotation support (coming in 1.2)
JaxMe and JAXBRI data binding support is experimental
Simple Axis Server does not support POX/REST
RPC Message Receiver does not validate request against the schema (AXIS2-1943)
Axis2 Idea plugin shows random behavior when XMLBeans is used.