<!--
  ~ 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>Releases</title>
<link href="css/axis-docs.css" rel="stylesheet" type="text/css"
media="all" />
</head>
<body>
<h2>Apache Axis2 Releases</h2>
<div align="left">
<p>This page provides links to the release versions of Axis2 Java.
For more information, please see <a href=
"http://www.apache.org/dev/release.html">Apache Release
FAQ</a>.</p>
</div>
<div align="center">
<table border="1" style="border-collapse: collapse" width="93%" id=
"table1">
<tbody>
<tr>
<th>Version</th>
<th>Date</th>
<th>Description</th>
</tr>
<tr>
<td><a href=
"download/1_5/download.cgi"><strong>1.5</strong></a></td>
<td>09 - Jun - 2009</td>
<td>1.5 Release (Mirrored)</td>
</tr>
<tr>
<td><a href=
"download/1_4_1/download.cgi"><strong>1.4.1</strong></a></td>
<td>24 - Aug - 2008</td>
<td>1.4.1 Release (Mirrored)</td>
</tr>
<tr>
<td><a href=
"download/1_4/download.cgi"><strong>1.4</strong></a></td>
<td>05 - Feb - 2008</td>
<td>1.4 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/1_3/download.cgi"><strong>1.3</strong></a></td>
<td>06 - Jul - 2007</td>
<td>1.3 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/1_2/download.cgi"><strong>1.2</strong></a></td>
<td>27 - Apr - 2007</td>
<td>1.2 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/1_1_1/download.cgi"><strong>1.1.1</strong></a></td>
<td>09 - Jan - 2007</td>
<td>1.1.1 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/1_1/download.cgi"><strong>1.1</strong></a></td>
<td>13 - Nov - 2006</td>
<td>1.1 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/1_0/download.cgi"><strong>1.0</strong></a></td>
<td>04 - May - 2006</td>
<td>1.0 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_95/download.cgi"><strong>0.95</strong></a></td>
<td>23 - Mar - 2006</td>
<td>0.95 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_94/download.cgi"><strong>0.94</strong></a></td>
<td>11 - Jan - 2006</td>
<td>0.94 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_93/download.cgi"><strong>0.93</strong></a></td>
<td>12 - Feb - 2005</td>
<td>0.93 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_92/download.cgi"><strong>0.92</strong></a></td>
<td>26 - Aug - 2005</td>
<td>0.92 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_91/download.cgi"><strong>0.91</strong></a></td>
<td>16 - Aug - 2005</td>
<td>0.91 Release (Archived)</td>
</tr>
<tr>
<td><a href=
"download/0_9/download.cgi"><strong>0.9</strong></a></td>
<td>05 - Jul - 2005</td>
<td>0.9 Release (Archived)</td>
</tr>
<tr>
<td><a href="download/M2/download.cgi"><strong>M2</strong></a></td>
<td>08 - Jun - 2005</td>
<td>Milestone Release #2 (Archived)</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Axis2 Distributions : <a href=
"http://cvs.apache.org/dist/axis2/nightly">Nightly
builds</a></strong></p>
<p><strong>Axis2 Maven Repository: <a href=
"http://people.apache.org/repo/m1-ibiblio-rsync-repository/org.apache.axis2/">
Released Axis2 jars</a> | <a href=
"http://cvs.apache.org/repository/org.apache.axis2/jars/">Nightly
SNAPSHOT</a><a href=
"http://cvs.apache.org/repository/org.apache.axis2/jars/"></a></strong></p>
</body>
</html>
