Apache Axis2 1.1 Released
Version 1.1 of Axis2, the Apache Web services stack, has been released and can be downloaded from the Apache site. POJO and Spring services client support has been significantly improved as well as documentation and many other aspects. A New Attachments API for sending & receiving MTOM and SwA attachments has been added, as well as built in support for WS-Policy via Apache Neethi.
One of the challenges in efficient parsing of XML is deciding whether to parse as a tree or as an event stream. Because SOAP mixes different XML fragments (the headers and body), often you need to mix both styles. Axiom optimizes this based on what the code asks for. By deferring the building of the tree until requested, Axiom optimizes the parsing depending on what modules and databinding technology is used. For example the headers may be parsed into a tree, but the body streamed directly into Java objects.
WSO2 CEO Sanjiva Weerawarana emphasized another aspect, AXIOM's ability to "pull" a tree as an event stream:
A module that wants to consume the events and do something with it can tell AXIOM to stop building the tree and read the entire message as a stream .. and it'll "play back" the part that's been read into memory and then switch to forwarding events. So its a StAX based, deferred built, pull-through model.
The streaming -- which enables processing of arbitrarily sized messages -- is also supported by the modules that implement WS-* standards in general. According to Sanjiva, the team is interested in addressing existing limitations, such as those of the WS-Security module (which currently requires canonicalization of the complete message).
Concerning doubts about performance penalties because of the rich WS-* support, Paul assured us that the Axis2 team has worked really hard at making the modularity work for Axis2, and one certainly doesn't have to pay for the standards one doesn't use:
The core Axis2 framework is highly efficient, but adding a standard like WSSecurity is as simple as dropping a module (a single file - e.g. rampart.mar) into the modules directory. In fact one of the main drivers for developing Axiom was making sure that Axis2 could handle WS-Security efficiently without "paying" for it when you don't -- in Axis1 there is a big performance hit from the SAX event recorder which is there to ensure WSSec can work.
Compared to Axis2 1.0, the 1.1 release seems to be a significant step forward, with the documentation (available as a separate download) being one of the most important improvements. Version 1.2 will address some of the known limitations of the current release, including unwrapping of response messages and JSR 181/183 Annotation support (coming in 1.2). JaxMe and JAXBRI data binding support is currently experimental.
Ben Linders May 28, 2015