<!--
  ~ 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 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.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 0.93 Release</title>
</head>
<body>
<h2>Axis2 0.93 Release</h2>
<div>
<h3>Source Distribution</h3>
<p><a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip"
title=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip">zip</a>
<a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.md5"
title=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.md5">
MD5</a> <a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.asc"
title=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.asc">
PGP</a><br /></p>
<h3>Binary Distribution</h3>
<p><a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip"
title=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip">zip</a>
<a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip.md5"
title=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip.md5">
MD5</a> <a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip.asc"
title=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-bin.zip.asc">
PGP</a><br /></p>
<h3>War Distribution</h3>
<p><a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2.war">zip</a>
<a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2.war.md5" title=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.md5">
MD5</a> <a href=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2.war.asc" title=
"http://archive.apache.org/dist/ws/axis2/0_93/axis2-0.93-src.zip.asc">
PGP</a></p>
</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">
  Other mirrors: 
  <select name="Preferred">[if-any http][for http]
    <option value="[http]"
    selected="selected">[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 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 used for signing release. 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>
