perfectxml.com
 Basic Search  Advanced Search   
Topics Resources Free Library Software XML News About Us
  You are here: home Info Bank Articles Introducing Axis Monday, 26 November 2007
Introducing Axis
 Reproduced with kind permission of TechMetrix Research
 Article written by: LAURENT DENANOT
This article is taken from the latest TechMetrix White Paper, Axis: The New Incarnation of Apache SOAP. To get the full story, download the white paper for free!

Developed by the Apache Foundation, Axis is a new implementation of the SOAP specification, and the successor to Apache SOAP. It aims to offer better performances, and be more modular and extensible than its predecessor. In this new White Paper, we cover various key points:
  • new features and improvements
  • architecture
  • development and deployment of Web Services with Axis
  • evaluation

Background

IBM has played a significant role in emancipating Web Service technology on the Java platform, and it became something of a pioneer when it created one of the very first implementations of SOAP for Java, the SOAP4J framework. Initially available as a technology preview on IBM's alphaWorks site, SOAP4J quickly aroused a lot of interest within the Java developers' community.

IBM, banking on this community's ability to ensure the success and durability of the framework, decided to donate SOAP4J to the open source world in the second half of 2000. In fact, the future of IBM's framework was entrusted to The Apache Software Foundation (renowned for having been behind some of the most prestigious open-source projects, such as the eponymous Web Server or the Tomcat Java application server).

IBM has not left the limelight, however, and is continuing to contribute actively to the development of the project.

IBM's commitment as a major player in the Open Source movement:
As well as SOAP4J, IBM also instigated two other complementary frameworks in the field of Web Services: WSDL4J (Java framework for the manipulation of WSDL descriptions of Web Services) and UDDI4J (Java framework for interaction with UDDI directories, co-developed with HP).
As a key player in the free software world, IBM is also behind a number of other projects, such as the XML parser Xerces (formerly XML4J), the XSL transformer Xalan (formerly LotusXSL) and more recently, the Eclipse platform (modular, extensible Java development environment).

Renamed Apache SOAP, IBM's framework underwent a number of upgrades and adjustments and enjoyed widespread success - so much so that IBM and other major vendors such as Sun quickly adopted Apache SOAP to integrate it into their J2EE application servers as a support structure for Web services.

Those interested in reading more about the SOAP protocol, the Apache SOAP implementation and its integration with application servers, can consult previous issues of our monthly newsletter TrendMarkers:

Apache SOAP version 2.2, the most popular version due to its relative stability and maturity, came out in May 2001. In the space of a year, the framework underwent few adjustments, and it was only in May 2002 that version 2.3 appeared. The very latest version of Apache SOAP (2.3.1) was released extremely recently, in June 2002. This late update of the Apache SOAP seems a little odd, given that the framework has apparently reached the end of its lifetime.

In fact, for over a year, all efforts have been concentrated on the development of a successor to Apache SOAP, based on an entirely new architecture. Apache SOAP's replacement, named Axis, has been designed to overcome its predecessor's shortcomings in terms of extensibility (due to an architecture that had become too complex, too rigid, and too closely linked to the SOAP specification) and performance (hampered by the use of the Document Object Model (DOM) for processing XML streams).

Rather than continue developing Apache SOAP in increasingly difficult conditions, the Apache Foundation opted to wipe the slate clean, and set out to conquer Web Services with a whole new set of foundations. And hence the Axis project was born. More modular, with better performances, and easily extended and adapted to different specifications, Axis also offers enhanced support for Web Service specifications such as SOAP and WSDL.

In parallel, Sun and the other players participating in the development of the Java platform have been working to draw up a new family of specifications and APIs dedicated to the infrastructure of XML exchanges. This new family, the Java XML Pack, includes the following specifications:

JAXM (Java API for XML Messaging): A set of APIs for exchanging messages formatted as XML documents. JAXM includes low-level functions for construction, routing and delivery of XML documents via SOAP 1.1 with Attachments (NB: in the JAXM latest version, 1.1, the implementation of the SOAP exchange protocol has been transferred to a new independent API, called SAAJ - SOAP with Attachments API for Java).

JAX-RPC (Java API for XML-based RPC): A set of APIs and conventions for implementing XML-based RPC exchanges. The implementation model for RPC services used is copied from the RMI model, and uses server-side proxy classes (skeletons) and client-side proxy classes (stubs) for sending and receiving calls. JAX-RPC includes an extensible model for mapping data types associated with serialization/deserialization mechanisms between Java objects and XML-Schema data types.
Also, JAX-RPC defines two-way mapping functions between Java (interface classes, methods) and XML/WSDL descriptions of RPC service interfaces. As one of the aims of the specification is to remain independent from any particular standard, JAX-RPC is designed to adapt to different protocols (including SOAP) and different transport protocols (including HTTP and SMTP). SOAP support within JAX-RPC, provided through the JAXM functionalities, is now based on SAAJ.

In compliance with the objectives of the JAXM and JAX-RPC specifications, Axis is designed to be extensible and independent with regard to particular transport or exchange protocols.

So, although it supports SOAP over HTTP, Axis will in the future support other protocols such as the forthcoming XML Protocol (based on SOAP 1.2), and other transport such as SMTP. For this reason, the name "Axis" (Apache eXtensible Interaction System) was chosen over "Apache SOAP 3.0," which was felt to be too restrictive due to the mention of the word SOAP.

Since last summer, several pre-versions of Axis have followed one after the other. After three Alpha versions and two Beta versions, a third Beta version is under preparation. We should also point out that a C++ version of Axis (on Windows and Linux platforms for the moment) is also currently being prepared.

The release of the first public "final" version of Axis (which will feature the version number 3.0, to mark its succession from Apache SOAP 2.x), initially planned for the summer, has apparently been held up. However, Axis already has sufficient assets and functionality for us to be able to devote this article to the Beta 2 version which has been available since the end of April.

 

Presentation of Apache Axis beta 2

Apache Axis is an open-source implementation on the Java platform of the SOAP version 1.1 and SOAP Messages with Attachments specifications and includes certain features of the new version of the standard, SOAP 1.2. Axis is developed by the Apache Software Foundation.

Apache Axis is both an environment for hosting Web Services and a complete toolkit for creating services and for client access to external services. This toolkit features advanced automatic code generation functionality based on parsing of WSDL descriptions of Web Services, and automatic two-way mapping between Java classes and WSDL descriptions.

New features and improvements with regard to Apache SOAP

Compared to Apache SOAP, Axis enjoys a great deal of improvements and new features:

Fully revised architecture: Axis is built on entirely new foundations, based on concepts defined by the JAX-RPC specification. The architecture of Axis is modular and extensible: extensions can be easily added (for specific processing of messages, or to include new administration or management functions).

Similarly, at its core, Axis contains an architecture of interchangeable transport protocols ("pluggable transport architecture"), independent of any transport protocol in particular. It is therefore possible to add on support for other transport protocols such as SMTP, FTP and so on.

Enhanced performance: one of Axis' objectives is to offer improved performances (in terms of response times, memory usage and scalability) in comparison with Apache SOAP. In particular, where Apache SOAP used the DOM (Document Object Model) to parse XML streams, Axis is now based on SAX (Simple API for XML Parsing). This enables memory usage to be significantly reduced, and cuts the time required to process XML streams.

WSDL 1.1 support and Java/WSDL mapping functionality: one of the important new features of Axis is its WSDL support. Axis is able to automatically generate WSDL descriptions of deployed services, on the fly. Moreover, Axis implements the Java/WSDL mapping functionality of the JAX-RPC API, which makes it possible to automatically generate a Java client from the WSDL description of a service, or to generate a WSDL description for a Java interface or class to be exposed as a Web service.

Enhanced datatype support: support for datatypes from the XML-Schema (2001) standard in Apache Axis is now much more comprehensive. In particular, Apache Axis now supports numbered types, as well as untyped values.

New service deployment model: like Apache SOAP, Axis uses XML deployment descriptors (WSDD - Web Service Deployment Descriptor) for deploying services. However, the new WSDD XML format is incompatible with the old format used by Apache SOAP.

Axis also supports a new "instant, on-the-fly" deployment mode for Web services: it is now possible to expose a Java class as a Web service very simply, by moving a Java source file to a particular directory and changing the ".java" extension to ".jws" (Java Web Service).

Support for sessions and security: Axis features user session support mechanisms (via SOAP headers, independent from the transport protocol used). Axis also integrates access authentication and authorization mechanisms which can be interfaced with the security mechanisms defined by the J2EE Servlet API.

Greater SOAP support: Axis fully supports the SOAP 1.1 specification, and even offers partial compatibility with SOAP 1.2. Another new feature that was not offered by Apache SOAP is the support for the concept of actors (now called roles in SOAP 1.2) and the "mustUnderstand" attribute in SOAP header blocks. Conversely, Axis does not yet support the concept of SOAP intermediaries.

Improved interoperability with the other SOAP implementations on the market: In particular, Axis is now able to process SOAP messages with untyped parameters. This brings greater interoperability with other SOAP implementations such as Microsoft's MS-SOAP, which use untyped parameters in SOAP message exchanges.

Conclusion

Compared to Apache SOAP, Axis can truly be seen as a revolution, which may bring the development of Web Services into a new era.

Firstly, its modular architecture makes a new development approach possible, based on the use of reusable components to extend the functionality of the server.

With an entirely overhauled development model, Axis brings a simplicity to development that was unknown with Apache SOAP, and offers greatly enhanced productivity, particularly due to the client and server framework generation tools for creating and calling Web Services.

However, despite these technological advances brought by Axis, there is still much work to be done, and the truth is that we are still some way away from seeing a "finalized, stabilized" version of the framework.

Many of Axis' features are still in the development phase, and the available documentation is still too sparse. Consequently, to find answers to questions not covered in the documentation, the only options are to rely on the Axis development mailing-lists (addresses available at http://xml.apache.org/axis/) or close examination of the source code.

With regard to standards compliance, considerable improvements have been made, particularly in terms of WSDL support, and the care taken to conform to the emerging Java standards for Web services (JAX-RPC and JAXM).

Real progress has also been made in terms of SOAP support (full support for SOAP 1.1 and partial support for SOAP 1.2), and clear improvements also seem to have been made with regard to interoperability with other SOAP implementations.

Lastly, when it comes to the actual Web services standards, there is still much progress to be made. In particular, the security problems are not always resolved satisfactorily, and the standards (which are still very young), are not always stabilized. We are still awaiting the final version of the SOAP 1.2 specification from the W3C, and the definition of its future replacement, XP (XML Protocol). Likewise, the new Java standards for Web services (within the Java XML Pack), which have only recently appeared, are still in the early stages of their development.

Axis does, however, seem to have a promising future ahead of it, and is likely to be at least as successful as its predecessor Apache SOAP, if not more so. Remember that Apache SOAP was adopted by major vendors such as IBM and iPlanet (Sun), and it therefore seems likely that Axis will in the future become the Web Services infrastructure used by many J2EE application servers.


TechMetrix Introducing Axis
 Reproduced with kind permission of TechMetrix Research External link
 Article written by: LAURENT DENANOT
This article is taken from the latest TechMetrix Research White Paper, Axis: The New Incarnation of Apache SOAP. To get the full story, download the white paper for free!


  

Back to Articles Page      



  Contact Us | E-mail Us | Site Guide | About PerfectXML | Advertise ©2004 perfectxml.com. All rights reserved. | Privacy