<!--
  ~ 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.
  -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
<meta http-equiv="content-type" content="" />
<title>Axis2 1.3 Release</title>
</head>
<body>
<!--Google Anayitcs tracking code-->
<script type="text/javascript" src=
"http://www.google-analytics.com/urchin.js">
</script><script type="text/javascript">
//<![CDATA[
_uacct = "UA-1954378-3";
urchinTracker();
//]]>
</script><!--End of Google Anayitcs tracking code-->
<h2>Axis2 1.3 Release</h2>
<div>
<table border="1" cellpadding="1">
<tbody>
<tr>
<th scope="col">Distribution Name</th>
<th scope="col">Description</th>
<!--<th scope="col">Items</th>-->
<th scope="col">Download</th>
</tr>
<tr>
<td><a name="std-bin" id="std-bin"></a><strong>Standard Binary
Distribution</strong></td>
<td>This is the complete version of Axis2 and will contain samples
as well. Since WS-Addressing implementation and SOAP Monitor
utility modules are engaged in to Axis2, by default, this
distribution will contain addressing.mar and soapmonitor.mar. But
the other modules that are being developed within Axis2 will not be
included here, and need to be <a href=
"../../modules/index.html">downloaded</a> separately.</td>
<td><a href="[preferred]/ws/axis2/1_3/axis2-1.3-bin.zip" title=
"[preferred]/ws/axis2/1_3/axis2-1.3-bin.zip" onClick=
"javascript:urchinTracker ('/downloads/axis2-1.3-bin.zip');">zip</a>
<a href="http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-bin.zip.md5"
title="http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-bin.zip.md5">MD5</a>
<a href="http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-bin.zip.asc"
title="http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-bin.zip.asc">PGP</a></td>
</tr>
<tr>
<td><a name="src" id="src"></a> <strong>Source
Distribution</strong></td>
<td>This will contain the sources of Axis2 standard distribution.
One can generate a binary distribution from this by typing
<span class="style1">$maven dist-bin</span> (<a href=
"http://ws.apache.org/axis2/1_3/installationguide.html#env-src">Set
up Axis2 environment</a> before running this command). Useful for
advanced users.</td>
<td><a href="[preferred]/ws/axis2/1_3/axis2-1.3-src.zip" title=
"[preferred]/ws/axis2/1_3/axis2-1.3-src.zip" onClick=
"javascript:urchinTracker ('/downloads/axis2-1.3-src.zip');">zip</a>
<a href=
"http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-src.zip.md5"
title=
"http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-src.zip.md5">MD5</a>
<a href=
"http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-src.zip.asc"
title=
"http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-src.zip.asc">PGP</a></td>
</tr>
<tr>
<td><a name="war" id="war"></a><strong>WAR (Web Archive)
Distribution</strong></td>
<td>This will be the web application of Axis2 which can be deployed
in most of the servlet containers.</td>
<td><a href="[preferred]/ws/axis2/1_3/axis2-1.3-war.zip" title=
"[preferred]/ws/axis2/1_3/axis2-1.3-war.zip" onClick=
"javascript:urchinTracker ('/downloads/axis2-1.3-war.zip');">zip</a>
<a href="http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-war.zip.md5"
title="http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-war.zip.md5">MD5</a>
<a href="http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-war.zip.asc"
title="http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-war.zip.asc">PGP</a></td>
</tr>
<tr>
<td><strong>Documents Distribution</strong></td>
<td>This will contain all the documentation in one package.</td>
<td><a href="[preferred]/ws/axis2/1_3/axis2-1.3-docs.zip" title=
"[preferred]/ws/axis2/1_3/axis2-1.3-docs.zip" onClick=
"javascript:urchinTracker ('/downloads/axis2-1.3-docs.zip');">zip</a>
<a href=
"http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-docs.zip.md5"
title=
"http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-docs.zip.md5">MD5</a>
<a href=
"http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-docs.zip.asc"
title=
"http://www.apache.org/dist/ws/axis2/1_3/axis2-1.3-docs.zip.asc">PGP</a></td>
</tr>
</tbody>
</table>
</div>
<div align="left"><br />
<p>[if-any logo] <a href="[link]"><img align="right" src="[logo]"
border="0" /></a>[end] The currently selected mirror is
<b>[preferred]</b>. If you encounter a problem with this mirror,
please select another mirror. If all mirrors are failing, there are
<i>backup</i> mirrors (at the end of the mirrors list) that should
be available.</p>
<form action="[location]" method="get" id="SelectMirror" name="SelectMirror">
Other mirrors: <select name="Preferred">
[if-any http]
  [for http]<option value="[http]">[http]</option>[end]
[end]  
[if-any ftp]
  [for ftp]<option value="[ftp]">[ftp]</option>[end]
[end]
[if-any backup]
  [for backup]<option value="[backup]">[backup] (backup)</option>[end]
[end]
</select><input type="submit" value="Change"/></form>
<p>You may also consult the <a class="externalLink" href="http://www.apache.org/mirrors/">complete list of mirrors</a></p>
<p><strong>Note:</strong> when downloading from a mirror please
check the <a href=
"http://www.apache.org/dev/release-signing#md5">md5sum</a> and
verify the <a href=
"http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
compatible signature from the main Apache site. These can be
downloaded by following the links above. This <a href=
"http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains
the public keys that can be used for verifying signatures. It is
recommended that (when possible)a <a href=
"http://www.apache.org/dev/release-signing#web-of-trust">Web of
trust</a> is used to confirm the identity of these keys.</p>
</div>
</body>
</html>
