<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->
<document xmlns="http://maven.apache.org/XDOC/2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
    <properties>
        <title>Apache Axis2/Java - Next Generation Web Services</title>
    </properties>
    <body>
<h1>Welcome to Apache Axis2/Java</h1>
<p>Apache Axis2&#x2122; is a Web Services / SOAP / WSDL engine, the successor to the
widely used <a href=
"http://ws.apache.org/axis/">Apache Axis</a> SOAP stack.
There are two implementations
of the Apache Axis2 Web services engine - Apache Axis2/Java and
Apache Axis2/C</p>
<p>While you will find all the information on Apache Axis2/Java
here, you can visit the <a href=
"http://axis.apache.org/axis2/c/"><strong>Apache Axis2/C</strong></a>
Web site for Axis2/C implementation information.</p>
<p>Apache Axis2, Axis2, Apache, the Apache feather logo, and the Apache Axis2 project logo are trademarks of The Apache Software Foundation.</p>
<h3>February 19, 2011 - Apache Axis2/Java Version 1.6 Released!</h3>
<p>1.6 is a major release of axis2 with many fixes and improvements to the core and all it's modules</p>
<p>Refer to the following filter <a href="http://bit.ly/issues-fixed-for-1_6">Issues fixed for the 1.6 release</a> to find all the issues fixed for the 1.6 release</p>
<h3>December 19, 2010 - Apache Axis2/Java Version 1.5.4 Released!</h3>
<p>1.5.4 is a maintenance release that contains fixes for the following issues:</p>
<ul>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-3784">AXIS2-3784</a>: WSDL port address is not correctly generated for machines having multiple network interfaces</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-3793">AXIS2-3793</a>: move image to the correct place</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-3851">AXIS2-3851</a>: adb-codegen no longer accepts schemas without targetNamespace</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4261">AXIS2-4261</a>: Enable axis2server.sh to start SimpleAxis2Server in remote debug mode</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4586">AXIS2-4586</a>: JiBX Client Stub not cleaning up HTTP connections after each operation</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4642">AXIS2-4642</a>: ?wsdl query calls out.close() twice, confusing at least some Tomcat connectors</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4674">AXIS2-4674</a>: Unable to get WSDL2 doc for services on WebSphere 7.0 and Axis2 1.5.1</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4819">AXIS2-4819</a>: Race condition in WSDLDataLocator</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4827">AXIS2-4827</a>: ADB class org.apache.axis2.databinding.types.Union does not implement java.io.Serializable</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4842">AXIS2-4842</a>: NPE in TempFileManager</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4871">AXIS2-4871</a>: Null Pointer Exception in AxisService.printXSD</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4883">AXIS2-4883</a>: Javadoc link broken on site and in documents distribution</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4885">AXIS2-4885</a>: Unsubstituted variable ${axis2_version} in 1.5.3 site and documents distribution</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4887">AXIS2-4887</a>: TargetNameSpace required for XSD2Java</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4888">AXIS2-4888</a>: The org.apache.axis2:axis2 Maven artifact should not have a classifier</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4889">AXIS2-4889</a>: SOAPConnectionTest#testGet slows down the build</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4896">AXIS2-4896</a>: Unable to install axis2.eclipse.codegen.plugin into eclipse</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4901">AXIS2-4901</a>: LinkageError related to DOM classes when using the codegen plugin for Eclipse</li>
<li><a href="https://issues.apache.org:443/jira/browse/AXIS2-4909">AXIS2-4909</a>: Simple MTOM web service no longer works due to missing closing MIME boundary.</li>
</ul>
<p>In addition, this release contains changes required for the Sandesha2 1.4 release.</p>
<h3>November 12, 2010 - Apache Axis2/Java Version 1.5.3 Released!</h3>
<p>1.5.3 is a maintenance release that contains the following improvements:</p>
<ul>
<li>Improved support for SSL when using the servlet transport: Axis2 can now be configured
so that generated WSDLs contain https endpoints (<a href="https://issues.apache.org/jira/browse/AXIS2-4465">AXIS2-4465</a>).</li>
<li>Improved compatibility with Rampart (<a href="https://issues.apache.org/jira/browse/AXIS2-3213">AXIS2-3213</a>
and <a href="https://issues.apache.org/jira/browse/AXIS2-4870">AXIS2-4870</a>) and Sandesha2 (potential HTTP connection pool starvation).</li>
<li>Axiom has been upgraded to 1.2.10. This version contains performance improvements relevant for Rampart.</li>
<li>Application (business) faults are no longer logged at level ERROR (<a href="https://issues.apache.org/jira/browse/AXIS2-4280">AXIS2-4280</a>).</li>
<li>Improved conformance to the SAAJ specifications. The 1.5.3 release contains a set of fixes and improvements for the SAAJ
implementation developed on the trunk and not included in previous releases from the 1.5 branch.</li>
<li>Axis2 now relies exclusively on dependencies available from the Maven central repository, and no other Maven
repositories are required. This in particular fixes a build problem that appeared after the 1.5.2 release.</li>
<li>The Eclipse and IntelliJ IDEA plugins are again available for <a href="tools/index.html">download</a> via the Axis2 Web site
(previous 1.5.x versions could only be downloaded from the Maven repository).</li>
</ul>
<p>[ <a href="download.cgi#1_5_3"><strong>Download</strong> ]</a></p>
<h3>September 6, 2010 - Apache Axis2/Java Version 1.5.2 Released!</h3>
<p>1.5.2 is a maintenance release to fix the security issue described in
<a href="http://svn.apache.org/repos/asf/axis/axis2/java/core/security/CVE-2010-1632.pdf">CVE-2010-1632</a>
as well as an XSS vulnerability in the admin console and some other minor issues. It also
upgrades Axiom to version 1.2.9.</p>
<p>[ <a href="download.cgi#1_5_2"><strong>Download</strong></a> ]</p>
<h3>October 23, 2009 - Apache Axis2/Java Version 1.5.1 Released!</h3>
<p>The 1.5.1 version fixes some <a href="http://issues.apache.org/jira/browse/AXIS2">bugs</a>, including most notably a connection starvation issue that would cause a large number of sockets stuck in CLOSE_WAIT or TIME_WAIT.</p>
<p><b>PLEASE NOTE:</b> As of Axis2 1.5, we now <i>require</i> JDK 1.5 or above.  JDKs 1.4 or previous are no longer supported.</p>
<p>[ <a href="download.cgi#1_5_1"><strong>Download</strong></a> ]</p>
<p>Please see the <a href="refLib.html">Axis
Reference Library</a> for a list of technical resources that should
prove useful on this project.</p>
<h3><em>Why Apache Axis2:</em></h3>
<p>A new architecture for Axis2 was introduced during the August
2004 Summit in Colombo, Sri Lanka. The new architecture on which
Axis2 is based on is more flexible, efficient and configurable in
comparison to <a href=
"http://ws.apache.org/axis/java/architecture-guide.html">Axis1.x
architecture</a>. Some well established concepts from Axis 1.x,
like handlers etc., have been preserved in the new
architecture.</p>
<p>Apache Axis2 not only supports SOAP 1.1 and SOAP 1.2, but it
also has integrated support for the widely popular <a href=
"http://www.xfront.com/REST-Web-Services.html">REST style of Web
services</a>. The same business logic implementation can offer both
a WS-* style interface as well as a REST/POX style interface
simultaneously.</p>
<p>Apache Axis2 is more efficient, more modular and more
XML-oriented than the older version. It is carefully designed to
support the easy addition of plug-in "modules" that extend their
functionality for features such as security and reliability. The
<a href="modules/index.html">Modules</a>
currently available or under development include:</p>
<ul>
<li><a href=
"http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrm"
>WS-ReliableMessaging</a> - Supported by <a href=
"http://axis.apache.org/axis2/java/sandesha/">Apache
Sandesha2</a></li>
<li><a href=
"http://www-128.ibm.com/developerworks/library/specification/ws-tx/#coor"
>WS-Coordination</a> and <a href=
"http://www-128.ibm.com/developerworks/library/specification/ws-tx/#atom"
>WS-AtomicTransaction</a> - Supported by <a href=
"http://axis.apache.org/axis2/java/kandula/">Apache Kandula2</a></li>
<li><a href=
"http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss"
>WS-Security</a> - Supported by <a href=
"http://axis.apache.org/axis2/java/rampart/">
Apache Rampart</a></li>
<li><a href="http://www.w3.org/Submission/ws-addressing/"
>WS-Addressing</a> -Module included as part of Axis2
core</li>
</ul>
<p>Apache Axis2 is built on <a href=
"http://ws.apache.org/axiom/">Apache AXIOM</a>, a
new high performant, pull-based XML object model.</p>
<p>Axis2 comes with many new features, enhancements and industry
specification implementations. The key features offered are as
follows:</p>
<ul>
<li>
<p style="margin-bottom: 0in"><strong>Speed</strong> - Axis2 uses
its own object model and StAX (Streaming API for XML) parsing to
achieve significantly greater speed than earlier versions of Apache
Axis.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Low memory foot
print</strong>- Axis2 was designed ground-up keeping low memory
foot print in mind.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>AXIOM</strong> - Axis2 comes
with its own light-weight object model, AXIOM, for message
processing which is extensible, highly performant and is developer
convenient.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong><a name="Hot_Deployment" id=
"Hot_Deployment"></a>Hot Deployment</strong> - 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.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Asynchronous Web
services</strong> - Axis2 now supports asynchronous Web services
and asynchronous Web services invocation using non-blocking clients
and transports.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>MEP Support</strong> - 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.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Flexibility</strong> - The
Axis2 architecture gives the developer complete freedom to insert
extensions into the engine for custom header processing, system
management, and <em>anything else you can imagine</em>.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Stability</strong> - Axis2
defines a set of published interfaces which change relatively
slowly compared to the rest of Axis.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Component-oriented
Deployment</strong> - You can easily define reusable networks of
Handlers to implement common patterns of processing for your
applications, or to distribute to partners.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Transport Framework</strong>
- 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.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>WSDL support</strong> - Axis2
supports the Web Service Description Language, version <a href=
"http://www.w3.org/TR/wsdl">1.1</a> and <a href=
"http://www.w3.org/TR/wsdl20/">2.0</a>, 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.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Add-ons</strong> - Several
Web services specifications have been incorporated including
<a href="http://ws.apache.org/wss4j/">WSS4J</a> for
security (Apache Rampart), <a href="http://axis.apache.org/axis2/java/sandesha/"
>Sandesha</a> for reliable messaging, <a href=
"http://axis.apache.org/axis2/java/kandula/">Kandula</a> which
is an encapsulation of WS-Coordination, WS-AtomicTransaction and
WS-BusinessActivity.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Composition and
Extensibility</strong> - 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 <a href="#Hot_Deployment">hot
deployable</a> as they change the overall behavior of the
system.</p>
</li>
</ul>
<p>We hope you enjoy using Axis2. Please note that this is an
open-source effort. If you feel the code could use new features or
fixes, or the documentation can be improved, please get involved
and lend us a hand! The Axis developer community welcomes your
participation.</p>
<p>Let us know what you think! Send your feedback on Axis2 to
"<a href=
"mailto:java-user@axis.apache.org">java-user@axis.apache.org</a>". Make
sure to prefix the subject of the mail with [Axis2].</p>
<h2>Features of Axis2 Latest Version</h2>
<p>Apache Axis2 Version 1.4 comes with performance improvements and
a number bug fixes over the 1.3 release. Check out the complete list of
features below.</p>
<h3>Programming Model</h3>
<ul>
<li>Improved, XML-centric client API including full WSDL and policy
support</li>
<li><a href="docs/jaxws-guide.html">Support for JAXWS-style services and clients</a></li>
<li>Support for POJO and Spring services and clients</li>
<li>Support for any message exchange pattern</li>
<li>Synchronous and asynchronous calls</li>
<li>Archived service deployment model supporting full service
encapsulation with versioning support</li>
<li>Archived module deployment model supporting controlled
extensibility with versioning support</li>
<li><a href="#Hot_Deployment">Hot deployment</a></li>
<li>WS-Policy driven code generation extensions</li>
<li>Flexible service life cycle model</li>
<li>Automatic support for POX (REST) style invocation of
services</li>
<li>Support for querying a service's WSDL (using ?wsdl), schema
(using ?xsd) and policies (using ?policy)</li>
<li>WSDL 2.0</li>
<li>Custom Deployers</li>
<li>Binary serialization (Fast Infoset)</li>
<li>JSON support</li>
<li>EJB Provider support</li>
</ul>
<h3>Supported Specifications</h3>
<ul>
<li>SOAP 1.1 and 1.2</li>
<li>Message Transmission Optimization Mechanism (MTOM), XML
Optimized Packaging (XOP) and SOAP with Attachments</li>
<li>WSDL 1.1, including both SOAP and HTTP bindings</li>
<li>WS-Addressing (submission and final)</li>
<li>WS-Policy</li>
<li>SAAJ 1.1</li>
</ul>
<h3>Transports</h3>
<ul>
<li>HTTP</li>
<li>SMTP</li>
<li>JMS</li>
<li>TCP</li>
</ul>
<h3>Supported Data Bindings</h3>
<ul>
<li>Axis Data Binding (ADB)</li>
<li>XMLBeans</li>
<li>JibX</li>
<li>JaxBRI (Experimental)</li>
</ul>
<h2><a name="Tools_included_in this_Release">Tools Included in This
Release</a></h2>
<p>[<a href="tools/index.html"
>Download Tool Plug-ins</a>]</p>
<ol type="1">
<li>Axis2 Web Application (Web App)</li>
<li>WSDL2WS- <a href="tools/eclipse/wsdl2java-plugin.html"
>eclipse plug-in</a><a>/</a> <a href=
"tools/CodegenToolReference.html">Command line
version</a><a>/</a><a href=
"tools/idea/Idea_plug-in_userguide.html#WSDL2Java_Code_Generation"
>IntelliJ IDEA plug-in</a><a>/</a><a href=
"tools/maven-plugins/maven-wsdl2code-plugin.html"
>Maven2 WSDL2Code Plug-in</a></li>
<li>Service Archive Wizard- <a href=
"tools/eclipse/servicearchiver-plugin.html"
>eclipse plug-in</a>/ <a href=
"tools/idea/Idea_plug-in_userguide.html#Create_Service_Archive"
>IntelliJ IDEA plug-in</a>/ <a href=
"tools/maven-plugins/maven-aar-plugin.html"
>Maven2 AAR Plug-in</a></li>
<li>Java2WSDL- <a href=
"tools/maven-plugins/maven-java2wsdl-plugin.html"
>Maven2 Java2WSDL Plug-in</a></li>
</ol>
<h2>Extension Modules</h2>
<ul>
<li>Apache Rampart: Supporting WS-Security (and soon
WS-Policy)</li>
<li>Apache Sandesha2: Supporting WS-Reliable Messaging</li>
</ul>
(Apache Axis2 comes built in with a module that supports
WS-Addressing.)
<h2>Known Issues and Limitations</h2>
<h2>Archived News</h2>
<p>For information on previous Axis2 releases running up to the
current release see the <a href="archived_news.html"
>'Axis2 Archived News'</a> page.</p>
For other news items from Apache Software Foundation see:
<ul>
<li><a href=
"http://www.apachenews.org/archives/cat_apache_webservices_index.html">
Web services related news on the Apache News Blog Online</a></li>
<li><a href="http://www.apachenews.org/">The Apache News Blog
Online</a></li>
</ul>
</body>
</document>
