Monday, August 28, 2006

Axis 1.x or Axis2?

A lot of people have been asking which version of Axis should they use:

Axis2 is the next generation web services platform. It supports all the latest and greatest SOAP and REST capabilities. It's definitely the system you'll be wanting to use in 2007. Unfortunately, it is not yet stable. The developers are planning to release v1.1 in late September, and I'm hoping that version will be stable. But if you want to use Axis2 before that release comes out, you must be preprared to use the nightly builds, to help identify bugs, and to perhaps propose fixes. The documentation is also pretty sketchy for those unfamiliar with the Axis2 architecture.

Axis is pretty much on life support. It's pretty stable, although a few bugs still exist regarding arrays. If you find a bug, please report it, and it will probably get fixed, but don't expect to see any enhancements going forward.

A little history
Axis2 is actually Apache's third generation SOAP engine:

Generation 1: Apache SOAP -- based on IBM's SOAP4J. Apache SOAP 1.0 was released on June 1, 2000. The last release, V2.3.1, came out on June 10, 2002. (This is now a dead project.) Apache SOAP was the first released SOAP engine, and it relied on DOM to process SOAP messages. It was extremely inefficient. It pre-dated WSDL, and it pretty much required RPC/encoded unless you wanted to programmatically manipulate the messages using DOM.

Generation 2: Apache Axis -- a completely redesigned SOAP engine with native support for WSDL and the JAX-RPC and SAAJ APIs. The first alpha release came out on August 15, 2001, and V1.0 was released on October 7, 2002. The last release, V1.4, came out on April 22, 2006. It relies on SAX to process messages. It's much more performant than Apache SOAP, but definitely not the most efficient engine available. Releases prior to V1.3 provided minimal support for document/literal.

Generation 3: Apache Axis2 -- yet another completely redesigned SOAP engine with an architecture that natively supports the next generation WS-* stack, including SOAP 1.2, WSDL 2.0, WS-Addressing, and plug-in modules for any WS-* header system. It also supports SOAP 1.1/WSDL 1.1, as well as RESTful services. The Axis2 native programming model is based on AXIOM, the Axis Object Model -- which relies on StAX for XML processing. Axis2 supports automatic object/XML data mapping via optional plug-in data binding systems, such as the Axis2 Data Binding (ADB) and XMLBeans. The Axis2 developers are currently working on implementing the JAX-WS API over Axis2.

4 comments:

Anne Thomas said...

Someone named gzug left a rather crude post that I deleted, but I did want to maintain the useful information that he desired to convey:

He questioned the quality of Axis2 and the team that builds it (mostly folks from WSO2). [I concur that the team probably should not have released Axis2 1.0 in the state it was in. The next release -- 1.1 -- should be viewed as the first stable release.]

He also suggested that folks check out CeltiXFire as an alternative to Axis2. He offered these two links:

http://www.blogjava.net/openssl/archive/2006/08/28/xfire_soa_websevice.html
http://www.blogjava.net/openssl/archive/2006/08/23/AXIS.html

And he posited that Axis2 will die after CeltiXFire is contributed to Apache.

[My guess, though, is that Apache will not accept a competing contribution.]

Unknown said...

Not sure what you mean with 'all features'- even simple SOAP arrays aren't supported yet which makes it pretty much useless for php/nusoap ws providers...

Davanum Srinivas (dims) said...

andig,

You can now use - WSO2 Web Services Framework/PHP which supports a lot of the same specs that Axis2 itself supports. More info at : http://wso2.org/projects/wsf/php

Anonymous said...

I am so glad this internet thing works and your article really helped me. Thanks for this.

movers in virginia