<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at May 28, 2013
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20130528" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis - 
    Installation instructions</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>Axis</h2>
                </div>
                      </div>
        <div class="pull-right">                                <a href="./" id="bannerRight">
                                                                                                <img src="images/axis-small.png"  alt="Apache Axis"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../" title="Axis">
        Axis</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../" title="Axis 1.x">
        Axis 1.x</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="./" title="Java">
        Java</a>
        </li>
      <li class="divider ">/</li>
        <li class="">
    Installation instructions</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2013-05-28</li> <li class="divider pull-right">|</li>
              <li id="projectVersion" class="pull-right">Version: 1.4.1-SNAPSHOT</li>
            
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">About</li>
                                
      <li>
    
                          <a href="index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="issue-tracking.html" title="Issue Tracking">
          <i class="none"></i>
        Issue Tracking</a>
            </li>
                  
      <li>
    
                          <a href="mail-lists.html" title="Mailing Lists">
          <i class="none"></i>
        Mailing Lists</a>
            </li>
                  
      <li>
    
                          <a href="source-repository.html" title="Source Repository">
          <i class="none"></i>
        Source Repository</a>
            </li>
                  
      <li>
    
                          <a href="artifacts.html" title="Artifacts & Dependencies">
          <i class="none"></i>
        Artifacts & Dependencies</a>
            </li>
                  
      <li>
    
                          <a href="apiDocs/index.html" title="Javadocs">
          <i class="none"></i>
        Javadocs</a>
            </li>
                              <li class="nav-header">Downloads</li>
                                
      <li>
    
                          <a href="releases.html" title="Releases">
          <i class="none"></i>
        Releases</a>
            </li>
                                                                                                                                            
      <li>
    
                          <a href="changelog.html" title="Changelogs">
          <i class="icon-chevron-right"></i>
        Changelogs</a>
                  </li>
                  
      <li>
    
                          <a href="snapshots.html" title="Snapshots">
          <i class="none"></i>
        Snapshots</a>
            </li>
                              <li class="nav-header">Documentation</li>
                                
      <li>
    
                          <a href="overview.html" title="Overview">
          <i class="none"></i>
        Overview</a>
            </li>
                  
      <li class="active">
    
            <a href="#"><i class="none"></i>Installation</a>
          </li>
                  
      <li>
    
                          <a href="user-guide.html" title="User's Guide">
          <i class="none"></i>
        User's Guide</a>
            </li>
                  
      <li>
    
                          <a href="developers-guide.html" title="Developer's Guide">
          <i class="none"></i>
        Developer's Guide</a>
            </li>
                  
      <li>
    
                          <a href="integration-guide.html" title="Integration Guide">
          <i class="none"></i>
        Integration Guide</a>
            </li>
                  
      <li>
    
                          <a href="architecture-guide.html" title="Architecture Guide">
          <i class="none"></i>
        Architecture Guide</a>
            </li>
                  
      <li>
    
                          <a href="reference.html" title="Reference Guide">
          <i class="none"></i>
        Reference Guide</a>
            </li>
                  
      <li>
    
                          <a href="reading.html" title="Reading Guide">
          <i class="none"></i>
        Reading Guide</a>
            </li>
                              <li class="nav-header">More...</li>
                                
      <li>
    
                          <a href="ant/ant.html" title="Ant Tasks">
          <i class="none"></i>
        Ant Tasks</a>
            </li>
                  
      <li>
    
                          <a href="maven/index.html" title="Maven Plugins">
          <i class="none"></i>
        Maven Plugins</a>
            </li>
                  
      <li>
    
                          <a href="castor/index.html" title="Castor Databinding">
          <i class="none"></i>
        Castor Databinding</a>
            </li>
                  
      <li>
    
                          <a href="xmlbeans/index.html" title="XmlBeans Databinding">
          <i class="none"></i>
        XmlBeans Databinding</a>
            </li>
                  
      <li>
    
                          <a href="transports/jms/index.html" title="JMS Transport">
          <i class="none"></i>
        JMS Transport</a>
            </li>
                  
      <li>
    
                          <a href="transports/http-hc3/index.html" title="HttpClient 3 Transport">
          <i class="none"></i>
        HttpClient 3 Transport</a>
            </li>
                  
      <li>
    
                          <a href="transports/http-javanet/index.html" title="java.net HTTP Transport">
          <i class="none"></i>
        java.net HTTP Transport</a>
            </li>
                  
      <li>
    
                          <a href="standalone-server/index.html" title="Stand-alone Server">
          <i class="none"></i>
        Stand-alone Server</a>
            </li>
                              <li class="nav-header">Apache</li>
                                
      <li>
    
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">
          <i class="none"></i>
        License</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
          <i class="none"></i>
        Sponsorship</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">
          <i class="none"></i>
        Security</a>
            </li>
            </ul>
                
                    
                            <form id="search-form" action="http://www.google.com/search" method="get" >
    
  <input value="ws.apache.org/axis/java" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            <!-- ~ 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. -->
  

<div class="section"><h2>Table of Contents<a name="Table_of_Contents"></a></h2>

<ul><li><a href="#Table_of_Contents">Table of Contents</a></li><li><a href="#Introduction">Introduction</a></li><li><a href="#Things_you_have_to_know">Things you have to know</a></li><li><a href="#Step_0:_Concepts">Step 0: Concepts</a></li><li><a href="#Step_1:_Preparing_the_webapp">Step 1: Preparing the webapp</a></li><li><a href="#Step_2:_Setting_up_the_libraries">Step 2: Setting up the libraries</a><ul><li><a href="#Tomcat_4.x_and_Java_1.4">Tomcat 4.x and Java 1.4</a></li><li><a href="#WebLogic_8.1">WebLogic 8.1</a></li></ul></li><li><a href="#Step_3:_starting_the_web_server">Step 3: starting the web server</a></li><li><a href="#Step_4:_Validate_the_Installation">Step 4: Validate the Installation</a><ul><li><a href="#Look_for_the_start_page">Look for the start page</a></li><li><a href="#Validate_Axis_with_happyaxis">Validate Axis with happyaxis</a></li><li><a href="#Look_for_some_services">Look for some services</a></li><li><a href="#Test_a_SOAP_Endpoint">Test a SOAP Endpoint</a></li><li><a href="#Test_a_JWS_Endpoint">Test a JWS Endpoint</a></li></ul></li><li><a href="#Step_5:_Installing_new_Web_Services">Step 5: Installing new Web Services</a></li><li><a href="#Step_6:_Deploying_your_Web_Service">Step 6: Deploying your Web Service</a><ul><li><a href="#Classpath_setup">Classpath setup</a></li><li><a href="#Find_the_deployment_descriptor">Find the deployment descriptor</a></li><li><a href="#Run_the_admin_client">Run the admin client</a></li></ul></li><li><a href="#Step_7:_Testing">Step 7: Testing</a></li><li><a href="#Advanced_Installation:_adding_Axis_to_your_own_Webapp">Advanced Installation: adding Axis to your own Webapp</a></li><li><a href="#What_if_it_doesnt_work">What if it doesn't work?</a></li><li><a href="#Summary">Summary</a></li><li><a href="#Appendix:_Enabling_the_SOAP_Monitor">Appendix: Enabling the SOAP Monitor</a></li></ul>

</div>

<div class="section"><h2>Introduction<a name="Introduction"></a></h2>

<p>This document describes how to install Apache Axis. It assumes you already know how to write and run Java code and are not afraid of XML. You should also have an application server or servlet engine and be familiar with operating and deploying to it. If you need an application server, we recommend <a class="externalLink" href="http://jakarta.apache.org/tomcat/">Jakarta Tomcat</a>. [If you are installing Tomcat, get the latest 4.1.x version, and the full distribution, not the LE version for Java 1.4, as that omits the Xerces XML parser]. Other servlet engines are supported, provided they implement version 2.2 or greater of the servlet API. Note also that Axis client and server requires Java 1.3 or later.</p>

<p>For more details on using Axis, please see the <a href="user-guide.html">user guide</a>.</p>

</div>

<div class="section"><h2>Things you have to know<a name="Things_you_have_to_know"></a></h2>

<p>A lot of problems with Axis are encountered by people who are new to Java, server-side Java and SOAP. While you can learn about SOAP as you go along, writing Axis clients and servers is not the right time to be learning foundational Java concepts, such as what an array is, or basic application server concepts such as how servlets work, and the basics of the HTTP protocol.</p>

<p>Things you need to know before writing a Web Service:</p>

<ol style="list-style-type: decimal">
  <li>Core Java datatypes, classes and programming concepts.</li>
  <li>What threads are, race conditions, thread safety and sychronization.</li>
  <li>What a classloader is, what hierarchical classloaders are, and the common causes of a &quot;ClassNotFoundException&quot;.</li>
  <li>How to diagnose trouble from exception traces, what a NullPointerException (NPE) and other common exceptions are, and how to fix them.</li>
  <li>What a web application is; what a servlet is, where classes, libraries and data go in a web application.</li>
  <li>How to start your application server and deploy a web application on it.</li>
  <li>What a network is, the core concepts of the IP protocol suite and the sockets API. Specifically, what is TCP/IP.</li>
  <li>What HTTP is. The core protocol and error codes, HTTP headers and perhaps the details of basic authentication.</li>
  <li>What XML is. Not necessarily how to parse it or anything, just what constitutes well-formed and valid XML.</li>
</ol>

<p>Axis and SOAP depends on all these details. If you don't know them, Axis (or anyone else's Web Service middleware) is a dangerous place to learn. Sooner or later you will be forced to discover these details, and there are easier places to learn than Axis.</p>

<p>If you are completely new to Java, we recommend you start off with things like the Java Tutorials on Sun's web site, and perhaps a classic book like <a class="externalLink" href="http://www.mindview.net/Books/TIJ/">Thinking in Java</a>, until you have enough of a foundation to be able to work with Axis. It is also useful to have written a simple web application, as this will give you some knowledge of how HTTP works, and how Java application servers integrate with HTTP. You may find the course notes from <a class="externalLink" href="http://www.cs.indiana.edu/classes/a348-dger/fall2002/notes/"> Mastering the World Wide Web</a> useful in this regard, even though Axis is only introduced in lecture 28.</p>

<p>Be aware that there is a lot more needed to be learned in order to use Axis and SOAP effectively than the listing above. The other big area is &quot;how to write internet scale distributed applications&quot;. Nobody knows how to do that properly yet, so that you have to learn this by doing.</p>

</div>

<div class="section"><h2>Step 0: Concepts<a name="Step_0:_Concepts"></a></h2>

<p>Apache Axis is an Open Source SOAP server and client. SOAP is a mechanism for inter-application communication between systems written in arbitrary languages, across the Internet. SOAP usually exchanges messages over HTTP: the client POSTs a SOAP request, and receives either an HTTP success code and a SOAP response or an HTTP error code. Open Source means that you get the source, but that there is no formal support organisation to help you when things go wrong.</p>

<p>SOAP messages are XML messages. These messages exchange structured information between SOAP systems. Messages consist of one or more SOAP elements inside an envelope, Headers and the SOAP Body. SOAP has two syntaxes for describing the data in these elements, <i>Section 5</i>, which is a clear descendant of the XML RPC system, and <i>XML Schema</i>, which is the newer (and usually better) system. Axis handles the magic of converting Java
objects to SOAP data when it sends it over the wire or receives results. SOAP Faults are sent by the server when something goes wrong; Axis converts these to Java exceptions.</p>

<p>SOAP is intended to link disparate systems. It is not a mechanism to tightly bind Java programs written by the same team together. It can bind Java programs together, but not as tightly as RMI or Corba. If you try sending many Java objects that RMI would happily serialize, you will be disappointed at how badly Axis fails. This is by design: if Axis copied RMI and serialized Java objects to byte streams, you would be stuck to a particular
version of Java everywhere.</p>

<p>Axis implements the JAX-RPC API, one of the standard ways to program Java services. If you look at the specification and tutorials on Sun's web site, you will understand the API. If you code to the API, your programs will work with other implementations of the API, such as those by Sun and BEA. Axis also provides extension features that in many ways extends the JAX-RPC API. You can use these to write better programs, but these will only work with the Axis implementation. But since Axis is free and you get the source, that should not matter.</p>

<p>Axis is compiled in the JAR file <i>axis.jar</i>; it implements the JAX-RPC API declared in the JAR files <i>jaxrpc.jar</i> and <i>saaj.jar</i>. It needs various helper libraries, for logging, WSDL processing and introspection. All these files can be packaged into a web application, <i>axis.war</i>, that can be dropped into a servlet container. Axis ships with some sample SOAP services. You can add your own by adding new compiled classes to the Axis webapp and registering them.</p>

<p>Before you can do that, you have to install it and get it working.</p>

</div>

<div class="section"><h2>Step 1: Preparing the webapp<a name="Step_1:_Preparing_the_webapp"></a></h2>

<p>Here we assume that you have a web server up and running on the localhost at port 8080. If your server is on a different port, replace references to 8080 to your own port number.</p>

<p>In your Application Server installation, you should find a directory into which web applications (&quot;webapps&quot;) are to be placed. Into this directory copy the webapps/axis directory from the xml-axis distribution. You can actually name this directory anything you want, just be aware that the name you choose will form the basis for the URL by which clients will access your service. The rest of this document assumes that the default webapp name, &quot;axis&quot; has been used; rename these references if appropriate. </p>

</div>

<div class="section"><h2>Step 2: Setting up the libraries<a name="Step_2:_Setting_up_the_libraries"></a></h2>

<p>In the Axis directory, you will find a WEB-INF sub-directory. This directory contains some basic configuration information, but can also be used to contain the dependencies and web services you wish to deploy.</p>

<p>Axis needs to be able to find an XML parser. If your application server or Java runtime does not make one visible to web applications, you need to download and add it. Java 1.4 includes the Crimson parser, so you <i>can</i> omit this stage, though the Axis team prefer Xerces.</p>

<p>To add an XML parser, acquire the JAXP 1.1 XML compliant parser of your choice. We recommend Xerces jars from the <a class="externalLink" href="http://xml.apache.org/dist/xerces-j/">xml-xerces distribution</a>, though others mostly work. Unless your JRE or app server has its own specific requirements, you can add the parser's libraries to axis/WEB-INF/lib. The examples in this guide use Xerces. This guide adds xml-apis.jar and xercesImpl.jar to the AXISCLASSPATH so that Axis can find the parser (<a href="#ClasspathSetup">see below</a>).</p>

<p>If you get ClassNotFound errors relating to Xerces or DOM then you do not have an XML parser installed, or your CLASSPATH (or AXISCLASSPATH) variables are not correctly configured.</p>

<div class="section"><h3>Tomcat 4.x and Java 1.4<a name="Tomcat_4.x_and_Java_1.4"></a></h3>

<p>Java 1.4 changed the rules as to how packages beginning in java.* and javax.* get loaded. Specifically, they only get loaded from <i>endorsed</i> directories. jaxrpc.jar and saaj.jar contain javax packages, so they may not get picked up. If happyaxis.jsp (see below) cannot find the relevant packages, copy them from axis/WEB-INF/lib to CATALINA_HOME/common/lib and restart Tomcat.</p>

</div>

<div class="section"><h3>WebLogic 8.1<a name="WebLogic_8.1"></a></h3>

<p>WebLogic 8.1 ships with <tt>webservices.jar</tt> that conflicts with Axis' <tt>saaj.jar</tt> and prevents Axis 1.4 from working right out of the box. This conflict exists because WebLogic uses an older definition of <tt>javax.xml.soap.*</tt> package from <a class="externalLink" href="http://java.sun.com/webservices/docs/1.0/api/javax/xml/soap"> Java Web Services Developer Pack Version 1.0</a>, whereas Axis uses a newer revision from J2EE 1.4.</p>

<p>However, there are two alternative configuration changes that enable Axis based web services to run on Weblogic 8.1.</p>

<ul> 
  <li>In a webapp containing Axis, set &lt;prefer-web-inf-classes&gt; element in <tt>WEB-INF/weblogic.xml</tt> to true.  An example of <tt>weblogic.xml</tt> is shown below:
<div class="source"><pre class="prettyprint">&lt;weblogic-web-app&gt;
  &lt;container-descriptor&gt;
    &lt;prefer-web-inf-classes&gt;true&lt;/prefer-web-inf-classes&gt;
  &lt;/container-descriptor&gt;
&lt;/weblogic-web-app&gt;</pre></div>
<p>If set to <tt>true</tt>, the <tt>&lt;prefer-web-inf-classes&gt;</tt> element will force WebLogic's classloader to load classes located in the WEB-INF directory of a web application in preference to application or system classes. This is a recommended approach since it only impacts a single web module.</p>
  </li> 

  <li>In a script used to start WebLogic server, modify <tt>CLASSPATH</tt> property by placing Axis's <tt>saaj.jar</tt> library in front of WebLogic's <tt>webservices.jar</tt>.
<p><b>NOTE:</b> This approach impacts all applications deployed on a particular WebLogic instance and may prevent them from using WebLogic's webservices.</p></li>
</ul>
 
<p>For more information on how WebLogic's class loader works, see <a class="externalLink" href="http://e-docs.bea.com/wls/docs81/programming/classloading.html">WebLogic Server Application Classloading</a>.</p>

</div>

</div>

<div class="section"><h2>Step 3: starting the web server<a name="Step_3:_starting_the_web_server"></a></h2>

<p>This varies on a product-by-product basis. In many cases it is as simple as double clicking on a startup icon or running a command from the command line.</p>

</div>

<div class="section"><h2>Step 4: Validate the Installation<a name="Step_4:_Validate_the_Installation"></a></h2>

<p>After installing the web application and dependencies, you should make sure that the server is running the web application.</p>

<div class="section"><h3>Look for the start page<a name="Look_for_the_start_page"></a></h3>

<p>Navigate to the start page of the webapp, usually <a class="externalLink" href="http://127.0.0.1:8080/axis/">http://127.0.0.1:8080/axis/</a>, though of course the port may differ.</p>

<p>You should now see an Apache-Axis start page. If you do not, then the webapp is not actually installed, or the appserver is not running.</p>

</div>

<div class="section"><h3>Validate Axis with happyaxis<a name="Validate_Axis_with_happyaxis"></a></h3>

<p>Follow the link <i>Validate the local installation's configuration</i><br />
This will bring you to <i>happyaxis.jsp</i> a test page that verifies that needed and optional libraries are present. The URL for this will be something like <a class="externalLink" href="http://localhost:8080/axis/happyaxis.jsp">http://localhost:8080/axis/happyaxis.jsp</a></p>

<p>If any of the needed libraries are missing, Axis will not work.<br />
<b>You must not proceed until all needed libraries can be found, and this validation page is happy.</b><br />
Optional components are optional; install them as your need arises. If you see nothing but an internal server error and an exception trace, then you probably have multiple XML parsers on the CLASSPATH (or AXISCLASSPATH), and this is causing version confusion. Eliminate the extra parsers, restart the app server and try again.</p>

</div>

<div class="section"><h3>Look for some services<a name="Look_for_some_services"></a></h3>

<p>From the start page, select <i>View the list of deployed Web services</i>. This will list all registered Web Services, unless the servlet is configured not to do so. On this page, you should be able to click on <i>(wsdl)</i> for each deployed Web service to make sure that your web service is up and running.</p>

<p>Note that the 'instant' JWS Web Services that Axis supports are not listed in this listing here. The install guide covers this topic in detail.</p>

</div>

<div class="section"><h3>Test a SOAP Endpoint<a name="Test_a_SOAP_Endpoint"></a></h3>

<p>Now it's time to test a service. Although SOAP 1.1 uses HTTP POST to submit an XML request to the <i>endpoint</i>, Axis also supports a crude HTTP GET access mechanism, which is useful for testing. First let's retrieve the version of Axis from the version endpoint, calling the <tt>getVersion</tt> method:</p>

<p><a class="externalLink" href="http://localhost:8080/axis/services/Version?method=getVersion">http://localhost:8080/axis/services/Version?method=getVersion</a></p>

<p>This should return something like:</p>

<div class="source"><pre class="prettyprint">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;soapenv:Envelope
 xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;
 xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
 xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
  &lt;soapenv:Body&gt;
    &lt;getVersionResponse
     soapenv:encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;&gt;
      &lt;getVersionReturn
       xsi:type=&quot;xsd:string&quot;&gt;
         Apache Axis version: 1.1 Built on Apr 04, 2003 (01:30:37 PST)
      &lt;/getVersionReturn&gt;
    &lt;/getVersionResponse&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre></div>

<p>Your browser may display the result in a formatted way; be sure to check the source code of your returned page. The Axis version and build date may of course be different.</p>

</div>

<div class="section"><h3>Test a JWS Endpoint<a name="Test_a_JWS_Endpoint"></a></h3>

<p>Now let's test a JWS web service. Axis' JWS Web Services are java files you save into the Axis webapp <i>anywhere but the WEB-INF tree</i>, giving them the .jws extension. When someone requests the .jws file by giving its URL, it is compiled and executed. The user guide covers JWS pages in detail.</p>

<p>To test the JWS service, we make a request against a built-in example, EchoHeaders.jws (look for this in the axis/ directory).</p>

<p>Point your browser at <a class="externalLink" href="http://localhost:8080/axis/EchoHeaders.jws?method=list">http://localhost:8080/axis/EchoHeaders.jws?method=list</a>.</p>

<p>This should return an XML listing of your application headers, such as</p>

<div class="source"><pre class="prettyprint">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;soapenv:Envelope
 xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;
 xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
 xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
  &lt;soapenv:Body&gt;
    &lt;listResponse
     soapenv:encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;&gt;
      &lt;listReturn xsi:type=&quot;soapenc:Array&quot;
       soapenc:arrayType=&quot;xsd:string[6]&quot;
       xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;&gt;
        &lt;item&gt;accept:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*&lt;/item&gt;
        &lt;item&gt;accept-language:en-us&lt;/item&gt;
        &lt;item&gt;accept-encoding:gzip, deflate&lt;/item&gt;
        &lt;item&gt;user-agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&lt;/item&gt;
        &lt;item&gt;host:localhost:8080&lt;/item&gt;
        &lt;item&gt;connection:Keep-Alive&lt;/item&gt;
      &lt;/listReturn&gt;
    &lt;/listResponse&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre></div>

<p>Again, the exact return values will be different, and you may need to change URLs to correct any host, port and webapp specifics.</p>

</div>

</div>

<div class="section"><h2>Step 5: Installing new Web Services<a name="Step_5:_Installing_new_Web_Services"></a></h2>

<p>So far you have got Axis installed and working--now it is time to add your own Web Service.</p>

<p>The process here boils down to (1) get the classes and libraries of your new service into the Axis WAR directory tree, and (2) tell the AxisEngine about the new file. The latter is done by submitting an XML deployment descriptor to the service via the Admin web service, which is usually done with the AdminClient program or the &lt;axis-admin&gt; Ant task. Both of these do the same thing: they run the Axis SOAP client to talk to the Axis administration service, which is a SOAP service in its own right. It's also a special SOAP service in one regard--it is restricted to local callers only (not remote access) and is password protected to stop random people from administrating your service. There is a default password that the client knows; if you change it then you need to pass the new password to the client.</p>

<p>The first step is to add your code to the server.</p>

<p>In the WEB-INF directory, look for (or create) a &quot;classes&quot; directory (i.e. axis/WEB-INF/classes ). In this directory, copy the compiled Java classes you wish to install, being careful to preserve the directory structure of the Java packages.</p>

<p>If your classes services are already packaged into JAR files, feel free to drop them into the WEB-INF/lib directory instead. Also add any third party libraries you depend on into the same directory.</p>

<p>After adding new classes or libraries to the Axis webapp, you must restart the webapp. This can be done by restarting your application server, or by using a server-specific mechanism to restart a specific webapp.</p>

<p><b>Note:</b> If your web service uses the simple authorization handlers provided with xml-axis (this is actually <u>not</u> recommended as these are merely illustrations of how to write a handler than intended for production use), then you will need to copy the corresponding users.lst file into the
WEB-INF directory.</p>

</div>

<div class="section"><h2>Step 6: Deploying your Web Service<a name="Step_6:_Deploying_your_Web_Service"></a></h2>

<p>The various classes and JARs you have just set up implement your new Web Service. What remains to be done is to tell Axis how to expose this web service. Axis takes a Web Service Deployment Descriptor (WSDD) file that describes in XML what the service is, what methods it exports and other aspects of the SOAP endpoint.</p>

<p>The users guide and reference guide cover these WSDD files; here we are going to use one from the Axis samples: the stock quote service.</p>

<div class="section"><h3>Classpath setup<a name="Classpath_setup"></a></h3>

<p>In order for these examples to work, java must be able to find axis.jar, commons-discovery.jar, commons-logging.jar, jaxrpc.jar, saaj.jar, log4j-1.2.8.jar (or whatever is appropriate for your chosen logging implementation), and the XML parser jar file or files (e.g., xerces.jar).  These examples do this by adding these files to AXISCLASSPATH and then specifying the AXISCLASSPATH when you run them. Also for these examples, we have copied the xml-apis.jar and xercesImpl.jar files into the AXIS_LIB directory.  An alternative would be to add your XML parser's jar file directly to the AXISCLASSPATH variable or to add all these files to your CLASSPATH variable.</p>

<p>On Windows, this can be done via the following. For this document we assume that you have installed Axis in C:\axis. To store this information permanently in WinNT/2000/XP you will need to right click on &quot;My Computer&quot; and select &quot;Properties&quot;. Click the &quot;Advanced&quot; tab and create the new environmental variables.  It is often better to use WordPad to create the variable string and then paste it into the appropriate text field.</p>

<div class="source"><pre class="prettyprint">set AXIS_HOME=c:\axis
set AXIS_LIB=%AXIS_HOME%\lib
set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;
  %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
  %AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar;
  %AXIS_LIB%\wsdl4j.jar
</pre></div>

<p>Unix users have to do something similar. Below we have installed AXIS into /usr/axis and are using the bash shell. See your shell's documentation for differences. To make variables permanent you will need to add them to your shell's startup (dot) files. Again, see your shell's documentation.</p>

<div class="source"><pre class="prettyprint">set AXIS_HOME=/usr/axis
set AXIS_LIB=$AXIS_HOME/lib
set AXISCLASSPATH=$AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery.jar:
  $AXIS_LIB/commons-logging.jar:$AXIS_LIB/jaxrpc.jar:$AXIS_LIB/saaj.jar:
  $AXIS_LIB/log4j-1.2.8.jar:$AXIS_LIB/xml-apis.jar:$AXIS_LIB/xercesImpl.jar:
  $AXIS_LIB/wsdl4j.jar
export AXIS_HOME; export AXIS_LIB; export AXISCLASSPATH</pre></div>

<p>To use Axis client code, you can select AXISCLASSPATH when invoking Java by entering</p>

<div class="source"><pre class="prettyprint">java -cp %AXISCLASSPATH% ...</pre></div>

<p>or</p>

<div class="source"><pre class="prettyprint">java -cp &quot;$AXISCLASSPATH&quot; ...</pre></div>

<p>depending on the platform. You may omit the quotes if your CLASSPATH doesn't have spaces in it.</p>

<p>Also, it is probably a good time to add the AXISCLASSPATH variable to your CLASSPATH variable.  This will enable you to not include the AXISCLASSPATH variable when launching the examples in this guide.  This document assumes that you have NOT done this.</p>

</div>

<div class="section"><h3>Find the deployment descriptor<a name="Find_the_deployment_descriptor"></a></h3>

<p>Look in axis/samples/stock for the file deploy.wsdd. This is the deployment descriptor we want to tell Axis about. Deployment descriptors are an Axis-specific XML file that tells Axis how to deploy (or undeploy) a Web Service, and how to configure Axis itself. The Axis Administration Web Service lets the AdminClient program and its Ant task counterpart submit a new WSDD file for interpretation. The Axis 'engine' will update its configuration, then save its state.</p>

<p>By default Axis saves it state into the global configuration file axis/WEB-INF/server-config.wsdd. Sometimes you see a warning message about such a file not being found--don't worry about this, because Axis auto-creates the file after you deploy something to it. You can check in the webapp to see what this file looks like--and even copy it to other systems if you want to give them identical configurations. Note that Axis needs an expanded web application <i>and</i> write access to the WEB-INF dir to save its state in this location.</p>

</div>

<div class="section"><h3>Run the admin client<a name="Run_the_admin_client"></a></h3>

<p>Execute the following command from the samples/stock directory.  If you are not in this directory you will get a &quot;java.io.FileNotFoundException: deploy.wsdd (The system cannot find the file specified)&quot; exception.</p>

<table border="0" class="table table-striped">
  <tr class="a">
    <td><b>On Windows</b>
<div class="source"><pre class="prettyprint">java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient
     -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd</pre></div>
<b>On UNIX</b>
<div class="source"><pre class="prettyprint">java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient
     -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd</pre></div>
    </td>
  </tr>
</table>

<p>If you get some java client error (like ClassNotFoundException), then you haven't set up your AXISCLASSPATH (or CLASSPATH) variable right, mistyped the classname, or did some other standard error. Tracking down such problems are foundational Java development skills--if you don't know how to do these things, learn them now!</p>

<p><b>Note:</b> You may need to replace localhost with your host name, and 8080 with the port number used by your web server. If you have renamed the web application to something other than &quot;axis&quot; change the URL appropriately.</p>

<p>If you get some AxisFault listing, then the client is working, but the deployment was unsuccessful. This is where the knowledge of the sockets API to TCP and the basics of the HTTP that Web Service development requires begins to be needed. If you got some socket error like connection refused, the computer at the far end isn't talking to you, so find the cause of that and fix it. If you get an HTTP error code back find out what the error means and correct the problem.  These skills are fundamental to using web services.</p>

<p>The <a href="user-guide.html">user's guide</a> covers the AdminClient in more detail, and there is also an <a href="ant/axis-admin.html">Ant task</a> to automate the use of Axis in your Ant build scripts.</p>

</div>

</div>

<div class="section"><h2>Step 7: Testing<a name="Step_7:_Testing"></a></h2>

<p>This step is optional, but highly recommended. For illustrative purposes, it is presumed that you have installed and deployed the stock quote demo.</p>

<ul>
  <li>Change directory to the distribution directory for xml-axis and execute the following command (or its Unix equivalent):
<table border="0" class="table table-striped">
  <tr class="a">
    <td><b>On Windows</b>
<div class="source"><pre class="prettyprint">java -cp .;%AXISCLASSPATH% samples.stock.GetQuote
     -lhttp://localhost:8080/axis/servlet/AxisServlet
     -uuser1 -wpass1 XXX</pre></div>
<b>On UNIX</b>
<div class="source"><pre class="prettyprint">java -cp .:$AXISCLASSPATH samples.stock.GetQuote
     -lhttp://localhost:8080/axis/servlet/AxisServlet
     -uuser1 -wpass1 XXX</pre></div>
    </td>
  </tr>
</table>
  </li>

  <li>You should get back &quot;55.25&quot; as a result.</li>
</ul>

<p><b>Note:</b> Again, you may need to replace localhost with your host name, and 8080 with the port number used by your web server. If you have renamed the web application to something other than &quot;axis&quot; change the URL appropriately.</p>

</div>

<div class="section"><h2>Advanced Installation: adding Axis to your own Webapp<a name="Advanced_Installation:_adding_Axis_to_your_own_Webapp"></a></h2>

<p>If you are experienced in web application development, and especially if you wish to add web services to an existing or complex webapp, you can take an alternate approach to running Axis. Instead of adding your classes to the Axis webapp, you can add Axis to your application.</p>

<p>The core concepts are</p>

<ol style="list-style-type: decimal">
  <li>Add axis.jar, wsdl.jar, saaj.jar, jaxrpc.jar and the other dependent libraries to your WAR file.</li>

  <li>Copy all the Axis Servlet declarations and mappings from axis/WEB-INF/web.xml and add them to your own web.xml</li>

  <li>Build and deploy your webapp.</li>

  <li>Run the Axis AdminClient against your own webapp, instead of Axis, by changing the URL you invoke it with.</li>
</ol>

<p>The process is also covered in Chapter 15 of <a class="externalLink" href="http://www.manning.com/hatcher">Java Development with Ant</a>, which can be downloaded as a <a class="externalLink" href="http://www.manning-source.com/books/hatcher/hatcher_ch15.pdf">PDF file</a>.</p>

</div>

<div class="section"><h2>What if it doesn't work?<a name="What_if_it_doesnt_work"></a></h2>

<p>Axis is a complicated system to install. This is because it depends on the underlying functionality of your app server, has a fairly complex configuration, and, like all distributed applications, depends upon the network too.</p>

<p>We see a lot of people posting their problems on the axis-user mailing list, and other Axis users as well as the Axis developers do their best to help when they can. But before you rush to post your own problems to the mailing list, a word of caution:</p>

<p>Axis is free. This means nobody gets paid to man the support lines. All the help you get from the community is voluntary and comes from the kindness of their hearts. They may be other users, willing to help you get past the same hurdles they had to be helped over, or they may be the developers themselves. But it is all voluntary, so you may need to keep your expectations low!</p>

<ol style="list-style-type: decimal">
  <li>Post to the <a class="externalLink" href="mailto:axis-user@ws.apache.org">user mail</a> list, not the developer list. You may think the developer mail list is a short cut to higher quality answers. But the developers are also on the user list along with many other skilled users--so more people will be able to answer your questions. Also, it is helpful for all user issues to be on one list to help build the searchable mailing list archive.</li>

  <li>Don't ask non-Axis-related questions. The list is not the place to ask about non-Axis, non-SOAP, problems. Even questions about the MS Soap toolkit or .NET client side, don't get many positive answers--we avoid them. That also goes for the Sun Java Web Services Developer Pack, or the Jboss.net stuff that they've done with Axis.</li>

  <li>Never bother posting to the soapbuilders mailing list either, that is only for people developing SOAP toolkits, not using them--all off-topic messages are pointedly ignored.</li>

  <li>There is no guarantee that anyone will be able to solve your problem. The usual response in such a situation is silence, for a good reason: if everybody who didn't know the answer to a question said &quot;I don't know&quot;, the list would be overflowed with noise. Don't take silence personally.</li>

  <li>Never expect an immediate answer. Even if someone knows the answer, it can take a day or two before they read their mail. So if you don't get an answer in an hour or two, don't panic and resend. Be patient. And put the time to use by trying to solve your problems yourself.</li>

  <li>Do your homework first. This document lists the foundational stuff you need to understand. It has also warned you that it can take a day to get a reply. Now imagine you get a HTTP Error '404' on a SOAP call. Should you rush to post a 'help' request, or should you try and find out what an HTTP error code is, what #404 usually means and how to use a Java debugger. We provide the source to make that debugging easier :)</li>

  <li>Post meaningful subject lines. You want your message read, not deleted unread. A subject line of 'Axis problem', 'Help with Axis', etc. is not meaningful, and is not likely to get many readers.</li>

  <li>Search the <a class="externalLink" href="http://mail-archives.apache.org/eyebrowse/SummarizeList?listId=209">mailing list archives</a> FIRST to see if someone had the same problem. This list is searchable--and may save you much time in getting an answer to your problem.</li>

  <li>Use the <a class="externalLink" href="http://issues.apache.org/jira/">jira</a> database to search for Axis bugs, both open and closed.</li>

  <li>Consult the <a class="externalLink" href="http://wiki.apache.org/ws/FrontPage/Axis">Axis Wiki</a> for its Frequently Asked Questions (FAQ), installation notes, interoperability issues lists, and other useful information.</li>

  <li>Don't email people for help directly, unless you know them. It's rude and presumptuous. Messages sent over the mail list benefit the whole community--both the original posters and people who search the list. Personal messages just take up the recipients time, and are unwelcome. Usually, if not ignored outright, recipients of personal requests will just respond 'ask the mail list' anyway!</li>

  <li>Know that configuration problems are hard to replicate, and so can be difficult to get help on. We have tried with the happyaxis.jsp demo to automate the diagnostics gathering for you, but it can be hard for people to be of help here, especially for obscure platforms.</li>

  <li>Keep up to date with Axis releases, even the beta copies of forthcoming releases. You wouldn't want your problem to be a bug that was already known and fixed in a more recent release. Often the common response to any question is 'have you tried the latest release'.</li>

  <li>Study and use the source, and fix it when you find defects. Even fix the documentation when you find defects. It is only through the participation of Axis' users that it will ever get better.</li>
</ol>

<p>Has this put you off joining and participating in the Axis user mail list? We hope not--this list belongs to the people who use Axis and so will be your peers as your project proceeds. We just need for you to be aware that it is not a 24x7 support line for people new to server side Java development, and that you will need to be somewhat self sufficient in this regard. It is not a silver bullet. However, knowing how to make effective use of the list will help you develop better with Axis. </p>

</div>

<div class="section"><h2>Summary<a name="Summary"></a></h2>

<p>Axis is simply an implementation of SOAP which can be added to your own webapp, and a webapp which can host your own web services. Installing it can be a bit fiddly, especially given Java 1.4's stricter requirements. If you follow a methodical process, including testing along the way, using happyaxis and the bundled test services, you will find it easier to get started with Axis.</p>

</div>

<div class="section"><h2>Appendix: Enabling the SOAP Monitor<a name="Appendix:_Enabling_the_SOAP_Monitor"></a></h2>

<p>SOAP Monitor allows for the monitoring of SOAP requests and responses via a web browser with Java plug-in 1.3 or higher. For a more comprehensive explanation of its usage, read <a href="user-guide.html#AppendixUsingTheSOAPMonitor">Using the SOAP Monitor</a> in the User's Guide.</p>

<p>By default, the SOAP Monitor is not enabled. The basic steps for enabling it are compiling the SOAP Monitor java applet, deploying the SOAP Monitor web service and adding request and response flow definitions for each monitored web service. In more detail:</p>

<ol style="list-style-type: decimal"> 
  <li>Go to $AXIS_HOME/webapps/axis (or %AXIS_HOME%\webapps\axis) and compile SOAPMonitorApplet.java.<br />
    <table border="0" class="table table-striped">
      <tr class="a">
        <td>
          <b>On Windows</b>
          <div class="source"><pre class="prettyprint">javac -classpath %AXIS_HOME%\lib\axis.jar SOAPMonitorApplet.java</pre></div>
          <b>On Unix</b>
          <div class="source"><pre class="prettyprint">javac -classpath $AXIS_HOME/lib/axis.jar SOAPMonitorApplet.java</pre></div>
        </td>
      </tr>
    </table>
    <p>Copy all resulting class files (i.e. SOAPMonitorApplet*.class) to the root directory of the web application using the SOAP Monitor (e.g. .../tomcat/webapps/axis)</p>
  </li> 
  <li>Deploy the SOAPMonitorService web service with the admin client and the deploy-monitor.wsdd file (shown below).<br />
    <p>Go to the directory deploy-monitor.wsdd is located and execute the command below. The command assume that /axis is the intended web application and it is available on port 8080.</p>
    <table border="0" class="table table-striped">
      <tr class="a">
        <td>
          <b>On Windows</b>
          <div class="source"><pre class="prettyprint">java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient 
     -lhttp://localhost:8080/axis/services/AdminService deploy-monitor.wsdd</pre></div>
          <b>On UNIX</b>
          <div class="source"><pre class="prettyprint">java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient
     -lhttp://localhost:8080/axis/services/AdminService deploy-monitor.wsdd</pre></div>
        </td>
      </tr>
    </table>
    <b>SOAPMonitorService Deployment Descriptor (deploy-monitor.wsdd)</b>
    <div class="source"><pre class="prettyprint">&lt;deployment xmlns=&quot;http://xml.apache.org/axis/wsdd/&quot; 
            xmlns:java=&quot;http://xml.apache.org/axis/wsdd/providers/java&quot;&gt; 
  &lt;handler name=&quot;soapmonitor&quot; 
           type=&quot;java:org.apache.axis.handlers.SOAPMonitorHandler&quot;&gt; 
    &lt;parameter name=&quot;wsdlURL&quot; 
               value=&quot;/axis/SOAPMonitorService-impl.wsdl&quot;/&gt; 
    &lt;parameter name=&quot;namespace&quot; 
               value=&quot;http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl&quot;/&gt; 
    &lt;parameter name=&quot;serviceName&quot; value=&quot;SOAPMonitorService&quot;/&gt; 
    &lt;parameter name=&quot;portName&quot; value=&quot;Demo&quot;/&gt; 
  &lt;/handler&gt; 
  &lt;service name=&quot;SOAPMonitorService&quot; provider=&quot;java:RPC&quot;&gt; 
    &lt;parameter name=&quot;allowedMethods&quot; value=&quot;publishMessage&quot;/&gt; 
    &lt;parameter name=&quot;className&quot; 
               value=&quot;org.apache.axis.monitor.SOAPMonitorService&quot;/&gt; 
    &lt;parameter name=&quot;scope&quot; value=&quot;Application&quot;/&gt; 
  &lt;/service&gt;
&lt;/deployment&gt;</pre></div>
  </li> 
  <li>For each service that is to be monitored, add request and response flow definitions to the service's deployment descriptor and deploy (or redeploy) the service. The <span style="font-weight: bold;">requestFlow</span> and <span style="font-weight: bold;"> responseFlow</span> definitions follow the start tag of the <span style="font-weight: bold;"> &lt;service&gt;</span> element. If a service is already deployed, undeploy it and deploy it with the modified deployment descriptor. An example is shown below:
    <div class="source"><pre class="prettyprint">... 
   &lt;service name=&quot;xmltoday-delayed-quotes&quot; provider=&quot;java:RPC&quot;&gt; 
     &lt;requestFlow&gt; 
       &lt;handler type=&quot;soapmonitor&quot;/&gt; 
     &lt;/requestFlow&gt; 
     &lt;responseFlow&gt; 
       &lt;handler type=&quot;soapmonitor&quot;/&gt; 
     &lt;/responseFlow&gt; 
       ...</pre></div> 
  </li> 
  <li>With a web browser, go to http[s]://host[:port][/webapp]/SOAPMonitor (e.g. http://localhost:8080/axis/SOAPMonitor) substituting the correct values for your web application. This will show the SOAP Monitor applet for viewing service requests and responses. Any requests to services that have been configured and deployed correctly should show up in the applet.</li> 
</ol> 

</div>

  

                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2000-2013
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>