<html>

<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <link href="axis.css" rel=stylesheet type=text/css>
   <title>Building Axis</title>
</head>

<body>
<center>
<h1>
<img SRC="images/axis.jpg" height=96 width=176></h1>
</center>
<h1>
Guide to building Axis</h1>
<i>1.4 Version</i>
<br><i>Feedback: <a href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>

<h3>Table of Contents</h3>
<a href="#Introduction">Introduction</a>
<br><a href="#Environment">Recommended Environment</a>
<br><a href="#Required">Building without Optional Components</a>
<br><a href="#Servlet">Building with Servlets</a>
<br><a href="#JSSE">Building with JSSE</a>
<br><a href="#JIMI">Building with JIMI</a>
<br><a href="#CASTOR">Building with Castor</a>
<br><a href="#HTTPCLIENT">Building with HTTP Client</a>
<br><a href="#XMLSEC">Building with XML Security</a>
<br><a href="#JMS">Building with JMS</a>
<br><a href="#Misc">Miscellaneous Information</a>
<br><a href="mailto:axis-dev@ws.apache.org">Feedback</a>


<h2><a NAME="Introduction"></a>Introduction</h2>
This guides you through the process of building Axis. It starts off with 
the process of building axis with just the bare required jars. It goes on to 
describe the process for building with other optional components. It will also 
have a recommended version of the component to use.

<h2><a NAME="Environment"></a>Recommended Environment</h2>
<ul>
    <li> JDK Version - 1.3.1+ </li>
    <li> Ant Version - 1.5.3 or 1.6 </li> 
</ul>


<h2><a NAME="Required"></a>Building without Any Optional Components</h2>
<ol>
  <li>Download the axis project from svn. ( http://svn.apache.org/repos/asf/webservices/axis/)</li>
  <li>Download activation.jar to $(axis.home)/java/lib.
       <br>You can download this from 
        <a href="http://java.sun.com/products/javabeans/glasgow/jaf.html">http://java.sun.com/products/javabeans/glasgow/jaf.html</a>   
        <br>Recommended  version : 1.0.2
  </li>     
  <li>Download mailapi.jar to $(axis.home)/java/lib.
       <br>You can download this from 
        <a href="http://java.sun.com/products/javamail/">http://java.sun.com/products/javamail/</a>   
        <br>Recommended  version : 1.3
  </li>


<li>You could also download j2ee.jar which has activation, mailapi ,
servlets and bunch of others</li>

<li>Download xercesImpl.jar and xmlApis.jar to $(axis.home)/java/lib.
Theoretically you won't need it since this is already present in your
ant's lib directory. But it is recommended to keep this in
$(axis.home)/java/lib as well.

       <br>You can download this from 
        <a href="http://xml.apache.org/xerces-j/">http://xml.apache.org/xerces-j/</a>
        (or copy it from your ant's lib directory.)   
        <br>Recommended  version : 2.2.1
  </li>     

<li> You should be able to do able to run "ant compile" now from
$(axis.home)/java/.</li>

  <li>

    To run "ant all-tests" you will need to add junit.jar to your ant
    installations lib directory. It is not sufficient that you keep it in
    $(axis.home)/java/lib. If not in ant lib it conks out saying it cannot
    create task/type of type: junit.
     <br>You can download this from 
        <a href="http://www.junit.org/index.htm">http://www.junit.org/index.htm</a>   

        <br>Recommended  version : 3.8 +
  </li>     
       
</ol>

<h2><a NAME="Servlet"></a>Building with Servlets</h2>
This is needed to build the server-side components of Axis.
<ol>
  <li>Download required Class libraries(servlet.jar) to $(axis.home)/java/lib.
       <br>You can download this from 
        <a href="http://java.sun.com/products/servlet/">http://java.sun.com/products/servlet/</a>   
        <br>Recommended  version : 2.2 or 2.3
    </li>
</ol>   

<h2><a NAME="JSSE"></a>Building with JSSE</h2>
This is needed for https support.
<ol>
  <li>Download the required Class libraries( jsse.jar, jnet.jar,jcert.jar ) to $(axis.home)/java/lib.
       <br>You can download this from 
        <a href="http://java.sun.com/products/jsse/">http://java.sun.com/products/jsse/</a>   
        <br>Recommended  version : 1.0.3
    </li>
</ol>   

<h2><a NAME="JIMI"></a>Building with JIMI</h2>
<ol>
  <li>Download the required Class libraries( JimiProClasses.zip) to $(axis.home)/java/lib.
       <br>You can download this from 
        <a href="http://java.sun.com/products/jimi/">http://java.sun.com/products/jimi/</a>   
    </li>
</ol>   

<h2><a NAME="CASTOR"></a>Building with Castor</h2>
This is needed for the Castor serializer and deserializer. 
<ol>
  <li>Download the required Class libraries( castor-&lt;version-no&gt;-xml.jar) to $(axis.home)/java/lib. 
       <br>You can download this from 
        <a href="http://castor.exolab.org">http://castor.exolab.org</a>   
        <br>Recommended  version : 0.9.4.1
    </li>
</ol>   

<h2><a NAME="HTTPCLIENT"></a>Building with HTTP Client </h2>

Httpclient is a better library for making http connections than the Java
runtime.

<ol>
  <li>Download the required Class libraries( commons-httpclient.jar) to $(axis.home)/java/lib. 
       <br>You can download this from 
        <a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a>   
        <br>Recommended  version : 2.0-alpha2
    </li>
</ol>   

<h2><a NAME="XMLSEC"></a>Building with XML Security</h2>

This is needed for Axis to support signed and encrypted messages (as
opposed to unsigned messages over HTTPS, which is different)

<ol>
  <li>Download the required Class libraries( xmlsec.jar) to $(axis.home)/java/lib. 
       <br>You can download this from 
        <a href="http://xml.apache.org/security/">http://xml.apache.org/security/</a>   
        <br>Recommended  version : 1.0.4
    </li>
    <li>To run "ant all-tests" you will need to add xalan.jar
    <br>You can download this from 
        <a href="http://xml.apache.org/xalan-j/">http://xml.apache.org/xalan-j/</a>   
        <br>Recommended  version : 2.4.0
    </li>
</ol>

<h2><a NAME="JMS"></a>Building with JMS</h2>
This is needed for Axis to take advantage of synch/asynch messaging of JMS.
<ol>
  <li>Download the required Class libraries (jms.jar) to $(axis.home)/java/lib.
    <br>You can download this from 
    <a href="http://java.sun.com/products/jms/">http://java.sun.com/products/jms/</a>
    <br>Recommended Version : 1.0.2
   </li>
</ol>   

<h2><a NAME="Misc"></a>Miscellaneous Information</h2>
<ul>

    <li>You can also compile with <a href="http://jikes.org/">Jikes</a> for
    bonus build speeds
    </li>
    
    <li>If you want a redistributable you know works with Java 1.3, build on
    Java 1.3.
    </li>
    
    <li>If you have problems installing or using Ant, start on the 
    <A href="http://jakarta.apache.org/ant/problems.html">Ant problems page</A> 


    <li>For developing in Axis please refer to the <a
    href="developers-guide.html">Developer's guide</a> 
    </li>

</ul>

</body>

</html>
