<!--
  ~ 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.1.1 Release</title>
</head>
<body>
<h2>Axis2 1.1.1 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 useful
samples as well. Useful for some one to get familiar with Axis2.
(Since WS-Addressing implementation module is engaged in to Axis2,
by default, this distribution will contain addressing.mar. But the
other modules that are being developed within Axis2 will not be
included here and are available to be downloaded separately from
<a href="../../modules/index.html">here</a>.)</td>
<td><a href="[preferred]/ws/axis2/1_1_1/axis2-1.1.1.zip" title=
"[preferred]/ws/axis2/1_1_1/axis2-1.1.1.zip">zip</a> <a href=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1.zip.md5"
title=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1.zip.md5">MD5</a>
<a href=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1.zip.asc"
title=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1.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_1_1/installationguide.html#env-src">Set
up Axis2 environment</a> before running this command)</td>
<td><a href="[preferred]/ws/axis2/1_1_1/axis2-1.1.1-src.zip" title=
"[preferred]/ws/axis2/1_1_1/axis2-1.1.1-src.zip">zip</a> <a href=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1-src.zip.md5"
title=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1-src.zip.md5">
MD5</a> <a href=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1-src.zip.asc"
title=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1-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_1_1/axis2.war" title=
"[preferred]/ws/axis2/1_1_1/axis2.war">zip</a> <a href=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2.war.md5" title=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2.war.md5">MD5</a>
<a href="http://www.apache.org/dist/ws/axis2/1_1_1/axis2.war.asc"
title=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2.war.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_1_1/axis2-1.1.1-docs.zip"
title="[preferred]/ws/axis2/1_1_1/axis2-1.1.1-docs.zip">zip</a>
<a href=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1-docs.zip.md5"
title=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1-docs.zip.md5">
MD5</a> <a href=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1-docs.zip.asc"
title=
"http://www.apache.org/dist/ws/axis2/1_1_1/axis2-1.1.1-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">
<option value="[http]" selected="selected">[http]</option>
<option value="[ftp]">[ftp]</option>
<option value="[backup]">[backup] (backup)</option>
</select> <input type="submit" value="Change" /></form>
<p>You may also consult the <a 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>
