Well I guess you have come to this page with the intention of learning something about Apache Axis2. If you search for google the word “Apache Axis2”, you may get millions of pages. But most of them have some pre-requisites before teaching you about Apache Axis2. My intention with this post is to share my experience about learning Apache Axis2 from level zero. If you have used a computer and know how it works, that would be enough.
Since you have used computers, you might know what it does. It does some computing task for you. All the processing, memory, power, data all the components are within a single place and that is what you called your personal computer. That is enough for processing your word document, print your photograph and many more personal things.
Let’s think about something bigger than your computing need. Think about a bank doing day to day transactions on their hundreds of branches and each one of them are connected with each other. In this scenario, you can understand that the computing resources are “Distributed” among several locations (Branches). To achieve this kind of computing need, we use a Distributed Computing System in which the computers and resources are distributed in several physical and logical locations.
Now you know what is a distributed computing system. Let’s figure out how this system really works to achieve the requirement of the banking system. Let’s say Bank has following main systems.
- Fixed Deposit system – Handle the FD related tasks
- Pawning system – Handle the Pawning related operations
- Micro Finance system – Deal with the leasing, loans related operations
- Savings/Current account system – Handle account related tasks
- Credit Card system – Deal with credit cards
- Inter Bank transaction system – Handle Bank to Bank transactions
- Java Messaging System (JMS)
- Plain Old XML (POX) with REST services
- Web services with SOAP
JMS can be used to connect different services in an SOA system. But the problem with this is that when we are connecting services with JMS both the services should be implemented with the same implementation.
- Speed: Axis2 uses its own object model and StAX (Streaming API for XML) parsing to achieve significantly greater speed than earlier versions of Apache Axis.
- AXIOM: Axis2 comes with its own lightweight object model, AXIOM, for message processing, which is extensible, performs highly, and is developer-convenient.
- Hot deployment: Axis2 is equipped with the capability of deploying web services and handlers while the system is up and running. In other words, new services can be added to the system without having to shut down the server. Simply drop the required web service archive into the services directory in the repository, and the deployment model will automatically deploy the service and make it available for use.
- Asynchronous web services: Axis2 now supports asynchronous web services and asynchronous web services invocation using non-blocking clients and transports.
- MEP support: Axis2 now comes handy with the flexibility to support Message Exchange Patterns (MEPs) with in-built support for basic MEPs defined in WSDL 2.0.
- Flexibility: The Axis2 architecture gives the developer complete freedom to insert extensions into the engine for custom header processing, system management, and anything else that you can imagine.
- Stability: Axis2 defines a set of published interfaces, which change relatively slowly, as compared to the rest of Axis.
- 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: Axis2 has a clean and simple abstraction for integrating and using Transports (that is, senders and listeners for SOAP over various protocols such as SMTP, FTP, message-oriented middleware, and so on), and the core of the engine is completely transport-independent.
- WSDL support: Axis2 supports the Web Service Description Language (versions 1.1 and 2.0), which allows you 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 service specifications have been incorporated, including WSS4J for security (Apache Rampart), Sandesha for reliable messaging. Kandula is an encapsulation of WS-Coordination, WS-AtomicTransaction, and WS-BusinessActivity.
- Composition and extensibility: Modules and phases improve support for composability and extensibility. Modules support composability and can also support new WS-* specifications in a simple and clean manner. They are, however, not hot deployable, as they change the overall behavior of the system.