<html>
<head>
  <meta http-equiv="content-type" content="">
  <title>Axis2 Installation Guide</title>
  <style type="text/css">
  </style>
</head>

<body lang="en">
<h1 align="center">Axis2 Installation Guide</h1>

<p><i>Version 0.95</i></p>
<i>Feedback: <a
href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>

<h3>Contents</h3>
<ul>
  <li><a href="#Download_Axis2">Download Axis2</a></li>
  <li><p><a href="#requirements">System Requirements</a></p>
  </li>
  <li><a href="#_Toc96698083">Setting up the Environment and tools</a>
    <ul>
      <li><p><a href="#maven">Maven</a></p>
      </li>
      <li><a href="#_Toc96698085">The Axis2 source distribution</a></li>
    </ul>
  </li>
  <li><p><a href="#_Toc96698086">Installing Axis2 in a Servlet
    container</a></p>
    <ul>
      <li><a href="#upload">Uploading services</a></li>
    </ul>
  </li>
</ul>
<a name="Download_Axis2"></a>
<h3>Download Axis2</h3>

<p>Axis2 is distributed in several convenient distribution packages and can
be installed either as a standalone server or as part of a J2EE compliant
servlet container. Axis2 is distributed under the Apache License, version
2.0. You can download Axis2 <a
href="http://ws.apache.org/axis2/download.cgi">here</a>. Latest release of
Axis2 is version 0.95.</p>

<table width="940" border="1" cellpadding="1">
  <tbody>
    <tr>
      <th width="83" scope="col">Distribution Name</th>
      <th width="633" scope="col">Description</th>
      <th width="202" scope="col">Items</th>
    </tr>
    <tr>
      <td>Minimal Distribution - Binary</td>
      <td>This distribution is aimed at advanced users who will be embedding
        Axis2. It will contain the minimal runtime required to act as a Web
        Service client and/or a server (axis2-core-0.95.jar will contain
        compiled versions of common, xml, wsdl and core modules.)</td>
      <td><ul>
          <li>axis2-core-0.95.jar, axis2-adb-0.95.jar</li>
          <li>third party distributable libraries</li>
          <li>README.TXT and release-notes.html</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td>Minimal Distribution - Source</td>
      <td background="#_Toc96698083"><p>This will contain the sources of
        Axis2 minimal distribution. One can generate a binary distribution
        from this by typing  <span class="style1">$maven dist-min-bin.
        </span>(<a href="#_Toc96698083">Set up Axis2 environment</a> before
        running this command)</p>
      </td>
      <td><ul>
          <li>sources of Axis2 common, xml, wsdl, adb and core modules</li>
          <li>README.TXT and release-notes.html</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td>Standard Distribution - Binary</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="http://ws.apache.org/axis2/modules/index.html">here</a>.)</td>
      <td><ul>
          <li>all the content of minimal-binary distribution</li>
          <li>Contents of codegen and DOOM modules</li>
          <li>Samples</li>
          <li>addressing.mar</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td>Standard Distribution - Source</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-standard-bin. </span>(<a
        href="#_Toc96698083">Set up Axis2 environment</a> before running this
        command)</td>
      <td><ul>
          <li>all the content of minimal-source distribution</li>
          <li>Contents of codegen and DOOM modules</li>
          <li>Samples</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td>WAR (Web Archive) Distribution</td>
      <td>This will be the web application of Axis2 which can be deployed in
        most of the servlet containers.</td>
      <td><ul>
          <li>all the contents of the minimal distribution</li>
          <li>Admin web app</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td>Documents Distribution</td>
      <td>This will contain all the documentation in one package.</td>
      <td><ul>
          <li>xdocs</li>
          <li>javadocs</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td>Plugin Distribution</td>
      <td>This will contain the plugins that are created for Eclipse and
      IDEA.</td>
      <td><ul>
          <li>Intellij IDEA plugins</li>
          <li>Eclipse plugins</li>
        </ul>
      </td>
    </tr>
  </tbody>
</table>
<a name="requirements"></a>
<h3>System Requirements</h3>

<table border="2">
  <caption></caption>
  <tbody>
    <tr>
      <td>Java Runtime

        <p>Environment</p>
      </td>
      <td>1.4 (It has not been fully tested on the latest JRE 1.5)

        <p>For instructions on setting up the JRE in different operating
        systems, visit <a
        href="http://java.sun.com/">http://java.sun.com</a></p>
      </td>
    </tr>
    <tr>
      <td>Maven</td>
      <td>1.0.2 or higher in Maven 1.x series (<a
        href="http://maven.apache.org/">download</a>). <strong>Please
        download maven 1.x version. Axis2 is not compatible with maven2
        yet.</strong>

        <p>Required only for building Axis2 from source distribution</p>
      </td>
    </tr>
    <tr>
      <td>Memory</td>
      <td>No minimum requirement</td>
    </tr>
    <tr>
      <td>Disk</td>
      <td>No minimum requirement.

        <p>Approximately 20 MB will be used for war distribution</p>
      </td>
    </tr>
    <tr>
      <td>Operating system</td>
      <td>Tested on Windows XP, Linux, Mac OS X, Fedora core, Ubuntu,
      Gentoo</td>
    </tr>
  </tbody>
</table>


<p>All the required jars are shipped with the binary distribution.</p>

<p>Running the Maven build will automatically download the required jars when
using source distribution.</p>
<a name="_Toc96698083"></a>
<h3>Setting up the Environment and Tools</h3>
<a name="maven"></a>
<h4>Maven</h4>

<p>The Axis2 build is based on</p>
<a href="http://maven.apache.org/maven-1.x/">Maven </a>. Hence the only
prerequisite to build Axis2 from source distribution is to have Maven
installed. Extensive instruction guides are available at the Maven site.This
guide however contains the easiest path for quick environment setting.
Advanced users who wish to know more about Maven can visit <a
href="http://maven.apache.org/start/index.html">here </a>.
<ul>
  <li>Windows</li>
</ul>
<ol>
  <li>Download and run the Windows installer package</li>
  <li>Set the 'Environment Variables' ( create system variable MAVEN_HOME and
    edit path. eg: "C:\Program Files\Apache Software Foundation\maven-1.0.2";
    path %MAVEN_HOME%\bin)</li>
  <li>Make sure that system variable JAVA_HOME is set to the location of your
    JDK, eg. C:\Program Files\Java\jdk1.5.0_02</li>
  <li>Run maven --version to verify that it is correctly installed.</li>
</ol>

<p align="center"><img alt="clip_image002 (15K)"
src="images/clip_image002.jpg" height="211" width="477"></p>
<ul>
  <li>Unix based OS (Linux etc)</li>
</ul>

<p>The tar ball or the zip archive is the best option. Once the archive is
downloaded expand it to a directory of choice and set the environment
variable MAVEN_HOME and add MAVEN_HOME/bin to the path as well. More
instructions for installing Maven in Unix based operating systems can be
found <a href="http://maven.apache.org/start/install.html">here </a>.</p>

<p>Once maven is properly installed you can start building Axis2.</p>
<a name="_Toc96698085"></a>

<h4>The Axis2 source distribution</h4>

<p>The <a href="http://ws.apache.org/axis2/download.cgi">source distribution
</a> is available as a zipped archive. All the necessary build scripts are
included with the source distribution. Once the source archive is expanded
into a directory of choice, moving to the particular directory and running
maven command will build the Axis2 jar file.</p>

<p align="center"><img alt="clip_image004 (43K)" src="images/maven.jpg"/><br clear="all"/></p>

<p>Once the command completes, the binaries (jar files in this case) can be
found at a newly created "target" directory.</p>

<p><strong>Note: For the first Maven build (if the maven repository is not
built first) it will take a while since required jars need to be downloaded.
However this is a once only process and will not affect any successive
builds.</strong></p>

<p><strong></strong>The default maven build will however build only the Axis2
jar file. To obtain a WAR (Web Archive), "maven war" command should be
issued. This will create a complete WAR with the name axis2.war inside the
target directory.</p>

<p>Once this build step is complete, the binaries are ready to be
deployed.</p>
<a name="_Toc96698086"></a>

<h3>Installing Axis2 in a Servlet container</h3>
<ol>
  <li><a href="http://ws.apache.org/axis2/download.cgi">Download</a> Axis2 war file</li>
  <li>Drop the war in the webapps folder. Most servlet containers will
    automatically install war. (some servlet containers may require a restart
    in order to capture the new web application. Refer your servlet container
    documentation for more information about this.)</li>
  <li>Once the WAR is successfully installed, test it by pointing the web
    browser to the <strong>http:// &lt;host :port&gt;/ axis2. </strong>It
    should produce the following page which is the <strong>Axis2 Web
    Application Home Page</strong>.</li>

  <p align="center"><strong><img src="images/clip_image006.jpg"
  alt=""></strong></p>

  <p></p>
  <li>Use validate link to ensure that everything is fine and smooth. If the
    validation fails then the war has failed to install properly or some
    essential jars are missing. At such a situation the documentation of the
    particular servlet container should be consulted to find the problem. The
    following page is a successful validation. Note the statement core Axis2
    libraries are present.
    <p></p>
  </li>

  <p align="center"><strong><img src="images/happyaxis.jpg"
  alt=""></strong></p>
</ol>
<a name="upload"></a>
<h4>Uploading services</h4>
<ol>
  <p>The Axis2 web application also provides an interface to upload services.
  Once a service is created according to the service specification as
  described in userguide that jar file can be uploaded using the upload
  page.</p>

  <p align="center"><strong><img src="images/clip_image010.jpg"
  alt=""></strong></p>

  <p>The uploaded jar files will be stored in the default service directory.
  For Axis2 this will be the &lt;webapps&gt;/axis2/WEB-INF/services
  directory. Once a service is uploaded it will be installed instantly.</p>

  <p>Since Axis2 supports hot deployment one can drop the service jar
  directly through the file system to the above mentioned services
  directory.It will also cause the service to be automatically installed
  without the container being restarted.</p>

  <p>Use the 'Services' link on the Web Application home page to check the
  successful installation of a service. The services and the operations of
  successfully installed services will be displayed in the available services
  page.</p>

  <p align="center"><img src="images/clip_image012.jpg" alt=""></p>

  <p></p>

  <p>If the service has deployment time error it will list those services as
  faulty services. If you click on the link you can see the your deployment
  fault error message(s).</p>

  <p align="center"><img src="images/faultservice.jpg" alt=""></p>

  <p>Deployment time error message</p>

  <p align="center"><strong><img src="images/faultmsg.jpg"
  alt=""></strong></p>

  <p></p>

  <p>Axis2 Administration is all about configuring Axis2 at the run time and
  the configuration will be transient. More descriptions are available in <a
  href="webadminguide.html">Axis2 Web Administration Guide</a></p>
</ol>
</body>
</html>
