<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--*** This is a generated file.  Do not edit.  ***-->
<link rel="stylesheet" href="skin/tigris.css" type="text/css">
<link rel="stylesheet" href="skin/mysite.css" type="text/css">
<link rel="stylesheet" href="skin/site.css" type="text/css">
<link media="print" rel="stylesheet" href="skin/print.css" type="text/css">
<title>The Apache Axis Project</title>
</head>
<body bgcolor="white" class="composite">
<!--================= start Banner ==================-->
<div id="banner">
<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0">
<tbody>
<tr>
<!--================= start Group Logo ==================-->
<td align="left">
<div class="groupLogo">
<a href="http://ws.apache.org/"><img border="0" class="logoImage" alt="The Apache WebServices Project" src="images/project-logo.jpg"></a>
</div>
</td>
<!--================= end Group Logo ==================-->
<!--================= start Project Logo ==================--><td align="right">
<div class="projectLogo">
<a href="http://ws.apache.org/axis/"><img border="0" class="logoImage" alt="The Apache Axis Project" src="images/axis.jpg"></a>
</div>
</td>
<!--================= end Project Logo ==================-->
<!--================= start Search ==================--><td valign="top" rowspan="2" align="right" class="search">
<form target="_blank" action="http://www.google.com/search" method="get">
<table summary="search" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#a5b6c6" colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif" class="spacer"></td>
</tr>
<tr>
<td colspan="3"><img height="8" width="1" alt="" src="skin/images/spacer.gif" class="spacer"></td>
</tr>
<tr>
<td><img height="1" width="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"><input value="ws.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif" class="spacer"><input name="Search" value="GO" type="submit">
<br>
                          Search WS</td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif" class="spacer"></td>
</tr>
<tr>
<td colspan="3"><img height="7" width="1" alt="" src="skin/images/spacer.gif" class="spacer"></td>
</tr>
<tr>
<td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td>
</tr>
</table>
</form>
</td>
<!--================= end Search ==================-->
</tr>
</tbody>
</table>
</div>
<!--================= end Banner ==================-->
<!--================= start Main ==================-->
<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs">
<tbody>
<!--================= start Status ==================-->
<tr class="status">
<td>
<!--================= start BreadCrumb ==================--><a href="http://www.apache.org/">Apache</a> | <a href="http://ws.apache.org/">WS</a><a href=""></a>
<!--================= end BreadCrumb ==================--></td><td id="tabs">
<!--================= start Tabs ==================-->
<div class="tab">
<span class="selectedTab"><a class="base-selected" href="index.html">WebServices-Axis</a></span>
</div>
<!--================= end Tabs ==================-->
</td>
</tr>
</tbody>
</table>
<!--================= end Status ==================-->
<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0">
<tbody>
<tr valign="top">
<!--================= start Menu ==================-->
<td id="leftcol">
<div id="navcolumn">
<div class="menuBar">
<div class="menu">
<span class="menuLabel">Axis</span>
 
<div class="menuItem">
<a href="index.html">Introduction</a>
</div>
 
<div class="menuItem">
<a href="news.html">News</a>
</div>

 
<div class="menuItem">
<a href="http://wiki.apache.org/ws/FrontPage/Axis">FAQ/Wiki</a>
</div>
 
<div class="menu">
<span class="menuLabel">Get Involved</span>
  
<div class="menuItem">
<a href="overview.html">Overview</a>
</div>
  
<div class="menuItem">
<a href="cvs.html">CVS Repository</a>
</div>
  
<div class="menuItem">
<a href="mail.html">Mailing Lists</a>
</div>
  
<div class="menuItem">
<a href="ref.html">Reference Library</a>
</div>
  
<div class="menuItem">
<a href="bugs.html">Bugs</a>
</div>
  
<div class="menuItem">
<a href="howtobuild.html">HowToBuildSite</a>
</div>
 
</div>
 
<div class="menu">
<span class="menuLabel">Axis (Java)</span>
  
<div class="menuItem">
<a href="java/index.html">Documentation</a>
</div>
  
<div class="menuItem">
<a href="java/install.html">Installation</a>
</div>
  
<div class="menuItem">
<a href="java/user-guide.html">User's Guide</a>
</div>
  
<div class="menuItem">
<a href="java/developers-guide.html">Developer's Guide</a>
</div>
  
<div class="menuItem">
<a href="java/integration-guide.html">Integration Guide</a>
</div>
  
<div class="menuItem">
<a href="java/architecture-guide.html">Architecture Guide</a>
</div>
  
<div class="menuItem">
<a href="java/reference.html">Reference Guide</a>
</div>
  
<div class="menuItem">
<a href="java/reading.html">Reading Guide</a>
</div>
  
<div class="menuItem">
<a href="java/requirements.html">Requirements</a>
</div>
 
</div>
 
<div class="menu">
<span class="menuLabel">Axis (C++)</span>
  
<div class="menuItem">
<a href="cpp/index.html">Latest Axis C++ Release!</a>
</div>
  
<div class="menuItem">
<a href="cpp/documentation.html">Documentation</a>
</div>
  
<div class="menuItem">
<a href="cpp/download.html">Download</a>
</div>
  
<div class="menuItem">
<a href="http://wiki.apache.org/ws/FrontPage/AxisCPP">Wiki Pages</a>
</div>
  
<div class="menuItem">
<a href="cpp/who.html">Who we are</a>
</div>
  
</div>

<div class="menu">
<span class="menuLabel">Downloads</span>
  
<div class="menuItem">
<a href="releases.html">Releases</a>
</div>
  
<div class="menuItem">
<a href="interim.html">Interim Drops</a>
</div>
  
<div class="menuItem">
<a href="http://cvs.apache.org/viewcvs/ws-axis/">Source Code</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">Translation</span>
  
<div class="menuItem">
<a href="http://ws.apache.org/axis/jp/">Japanese</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">Related Projects</span>
  
<div class="menuItem">
<a href="http://ws.apache.org/wsif/">WSIF</a>
</div>
  
<div class="menuItem">
<a href="http://cvs.apache.org/viewcvs/*checkout*/ws-wsil/java/README.htm">WSIL</a>
</div>
  
<div class="menuItem">
<a href="http://www-124.ibm.com/developerworks/projects/wsdl4j/">WSDL4J</a>
</div>
  
<div class="menuItem">
<a href="http://www.uddi4j.org/">UDDI4J</a>
</div>

</div>

<div class="menu">
<span class="menuLabel">Misc</span>
  
<div class="menuItem">
<span class="menuSelected">Whole Site</span>
</div>
  
<div class="menuItem">
<a href="who.html">Who We Are</a>
</div>
  
<div class="menuItem">
<a href="contact.html">Contact</a>
</div>
  
<div class="menuItem">
<a href="legal.html">Legal</a>
</div>
  
<div class="menuItem">
<a href="docs.html">Notes/Docs</a>
</div>

</div>


</div>
</div>
</div>
</td>
<!--================= end Menu ==================-->
<!--================= start Content ==================--><td>
<div id="bodycol">
<div class="app">
<div align="center">
<h1>The Apache Axis Project</h1>
</div>
<div class="h3">
<div class="h3">
<h3>Axis</h3>
</div>
 
<div class="h4">
<h4>WebServices - Axis</h4>
</div> 
    
<div class="h2">
<h2>WebServices - Axis - Introduction</h2>
</div>
      


<p>NEWS (April 09, 2005) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.5 Final
   </a> is now available!
</p>


<p>NEWS ((March 01, 2005)) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2RC2/">Axis 1.2 RC3 release</a> is now available!
</p>


<p>NEWS (February 08, 2005) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.5 Alpha
   </a> is now available!
</p>


<p>NEWS (December 16, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.4 Final
   </a> is now available!
</p>


<p>NEWS (December 03, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.4 Alpha
   </a> is now available!
</p>

<p>NEWS (November 16, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2RC2/">1.2 RC2 release</a> is now available!
</p>

<p>NEWS (October 29, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.3 Final
   </a> is now available!
</p>

<p>NEWS (September 30, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2RC1/">1.2 RC1 release</a> is now available!
</p>

<p>NEWS (September 15, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.3 Beta
   </a> is now available!
</p>

<hr>

<p>NEWS (August 18, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.3 Alpha 
   </a> is now available!
</p>

<p>NEWS (August 17, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2beta3/">1.2 beta 3 release</a> is now available!
</p>

<p>NEWS (July 14, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2beta2/">1.2 beta 2 release</a> is now available!</p>

<p>NEWS (July 09, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.2 
   </a> is now available!
</p>

<p>NEWS (June 29, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.2 Beta
   </a> is now available!
</p>

<p>NEWS (June 15, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.2 Alpha
   </a> is now available!
</p>

<p>NEWS (May 07, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.1.1 
   </a> is now available!
</p>

<p>NEWS (April 16, 2004) : Axis C++<a href="http://ws.apache.org/axis/cpp/download.html">1.1 
   </a> is now available!
</p>

<p>NEWS (March 31, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2beta/">1.2 
   Beta </a> is now available.
</p>

<p>NEWS (December 1, 2003) : Axis <a href="http://ws.apache.org/axis/download.cgi">1.2 
  Alpha </a> is now available.
</p>

<p>NEWS (June 16, 2003) : Axis <a href="http://ws.apache.org/axis/download.cgi">1.1 
  Final </a> is still the most recent stable release (read the <a href="http://cvs.apache.org/viewcvs/%7Echeckout%7E/ws-axis/java/release-notes.html">release 
  notes</a>)! 
</p>

<hr>

<p>Apache Axis is an implementation of the SOAP ("Simple Object Access
Protocol") <a href="http://www.w3.org/TR/SOAP">submission</a>
to W3C.
</p>

<p>From the draft W3C specification:
<blockquote>SOAP is a lightweight protocol for exchange of information
in a decentralized, distributed environment. It is an XML based protocol
that consists of three parts: an envelope that defines a framework for
describing what is in a message and how to process it, a set of encoding
rules for expressing instances of application-defined datatypes, and a
convention for representing remote procedure calls and responses.</blockquote>

</p>

<p>
This project is a follow-on to the <a href="http://ws.apache.org/soap">Apache SOAP project</a>.
</p>

<p>Please see the <a href="#ref.html">Reference Library</a> for a list of
technical resources that should prove useful.
</p>



<div class="h2">
<h2>Axis 1.2 and beyond</h2>
</div>
      

<p>
Axis 1.1 has proven itself to be a reliable and stable base on which to
implement Java Web Services.  There is a very active 
<a href="http://ws.apache.org/axis/mail.html">user community</a>
 and there a many companies who use Axis for Web Service
support in their products.
</p>

<p>
For Axis 1.2, we are focusing on our document/literal support to better address the 
<a href="http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html">WS-I Basic Profile 1.0</a>
 and <a href="http://java.sun.com/xml/downloads/jaxrpc.html">JAX-RPC 1.1</a> specifications.
And we are fixing as many bug as possible.
</p>

<p>
We can always use <b>your</b> help.  Here are some links to help you help us:
<ul>

<li>
<a href="http://ws.apache.org/axis/bugs.html">How do I report bugs?</a>
</li>

<li>
<a href="http://wiki.apache.org/ws/SubmitPatches">How do I submit patches to Axis?</a>
</li>

<li>
<a href="http://cvs.apache.org/snapshots/ws-axis/">Where can i get snapshots of latest CVS?</a>
</li> 

</ul>


</p>
    
    
<div class="h2">
<h2>Credits</h2>
</div>
      

<p>
The Axis Development Team
</p>
    
  
 
<div class="h4">
<h4>WebServices - Axis</h4>
</div> 
    
<div class="h2">
<h2>WebServices - Axis - News</h2>
</div>
      

<p>(April 09, 2005) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.5 Final  is available!</b></a>
</p>

<p>(March 01, 2005) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2RC2/">1.2 RC3 release</a> is now available!</p>

<p>(February 08, 2005) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.5 Alpha  is available!</b></a>
</p>

<p>(December 16, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.4 Final  is available!</b></a>
</p>

<p>(December 03, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.4 Alpha  is available!</b></a>
</p>

<p>(November 16, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2RC2/">1.2 RC2 release</a> is now available!</p>

<p>(October 29, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.3 Final is available!</b></a>
</p>

<p>(September 30, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2RC1/">1.2 RC1 release</a> is now available!</p>

<p>(September 15, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.3 Beta  is available!</b></a>
</p>

<p>(August 18, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.3 Alpha  is available!</b></a>
</p>

<p>(August 17, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2beta3/">1.2 beta 3 release</a> is now available!</p>

<p>(July 14, 2004) : Axis <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2beta2/">1.2 beta 2 release</a> is now available!</p>

<p>(July 09, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.2  is available!</b></a>
</p>

<p>(June 29, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.2 Beta is available!</b></a>
</p>

<p>(June 15, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.2 Alpha is available!</b></a>
</p>

<p>(May 07, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.1.1 is available!</b></a>
</p>

<p>(April 16, 2004) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.1 is available!</b></a>
</p>

<p>(December 29, 2003) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/"><b>1.0 is released!</b></a>
</p>

<p>(December 01, 2003) : Axis <a href="http://archive.apache.org/dist/ws/axis/1_2alpha/">1.2 Alpha</a> is available! </p>

<p>(December 01, 2003) : Axis C++ <a href="http://www.apache.org/dist/ws/axis-c/">Beta</a> is available! </p>

<p>(October 31, 2003) : Axis C++ alpha has been released! </p>

<p>(September 10, 2003) : Axis CVS Repository has moved from xml-axis to <a href="http://cvs.apache.org/viewcvs/ws-axis/">ws-axis</a>
</p>

<p>(June 16, 2003) : Axis <a href="http://ws.apache.org/axis/download.cgi">1.1</a> is now available!</p>

<p>(March 5, 2003) : Axis <a href="http://archive.apache.org/dist/ws/axis/1_1rc2/">1.1 RC2 release</a> is now available!</p>

<p>(February 9, 2003) : Axis <a href="http://archive.apache.org/dist/ws/axis/1_1RC1/">1.1 RC1 release</a> is now available!</p>

<p>(October 7, 2002) : Axis <a href="http://archive.apache.org/dist/ws/axis/1_0rc2/">1.0</a> is now available!</p>

<p>(September 30, 2002) : Axis <a href="http://archive.apache.org/dist/ws/axis/1_0rc2/">1.0 RC2 release</a> is now available!</p>

<p>(September 6, 2002) : Axis <a href="http://archive.apache.org/dist/ws/axis/1_0rc1/">1.0 RC1 release</a> is now available!</p>

<p>(July 9, 2002) : The Axis <a href="http://archive.apache.org/dist/ws/axis/beta3/">beta 3 release</a> is available!</p>

<p>See the <a href="#mail.html">Mailing Lists</a> for more information.
</p>

<p>
The Axis Development Team
</p>
    
  

 
 
<div class="h4">
<h4>Get Involved</h4>
</div>
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Overview</h5>
</div>
      


<p>
Every volunteer project obtains its strength from the people involved in it. 
We invite you to participate as much or as little as you choose. The roles 
and responsibilities that people can assume in the project are based on 
merit. Everybody's input matters!
</p>

<p>
There are a variety of ways to participate. Regardless of how you choose 
to participate, we suggest you join some or all of our 
<a href="#mail.html">mailing lists</a>. 
</p>

<p>

<b>Use the Products and Give Us Feedback</b>

</p>

<p>
Using the products,reporting bugs, making feature requests, etc. is by 
far the most important role. It's your feedback that allows the technology 
to evolve. 
<ul>
  
<li>
<a href="#mail.html">Join Mailing Lists </a>
</li>
  
<li>
<a href="#releases.html">Download Binary Builds </a>
</li>
  
<li>
<a href="#bugs.html">Report bugs/Request additional features </a>
</li>

</ul>

</p>

<p>

<b>Contribute Code or Documentation Patches</b>

</p>

<p>
In this role, you participate in the actual development of the code. If this 
is the type of role you'd like to play, here are some steps (in addition to 
the ones above) to get you started: 
<ul>
  
<li> 
<a href="#mailguide.html">Read Guidelines </a>
</li>
  
<li> 
<a href="#ref.html">Review Reference Library </a>
</li>
  
<li> 
<a href="http://cvs.apache.org/viewcvs/ws-axis/">Download the Source Code </a>
</li>
  
<li> 
<a href="#cvs.html">Access CVS Repository </a>
</li>

</ul>

</p>
    
  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - CVS Repositories</h5>
</div>
      
    
<p>
      Most users of the source code probably don't need to have day
      to day access to the source code as it changes. For these
      users we provide easy to unpack source code downloads via our
      <a href="#releases.html">download pages</a>.
    </p>
    
<p>
      
<b><font size="+1">View the Source Tree</font></b>
<br>
    
</p>
    
<p> Latest CVS sources can be viewed at <a href="http://cvs.apache.org/viewcvs/ws-axis/">http://cvs.apache.org/viewcvs/ws-axis/</a>
    
</p>
    
<p>
      
<b><font size="+1">Access the Source Tree
      (AnonCVS)</font></b>
<br>
       So, you've decided that you need access to the source tree
      to see the latest and greatest code. There's two different
      forms of CVS access. The first is anonymous and anybody can
      use it. The second is not and you must have a login to the
      development server. If you don't know what this means, join
      the <a href="#mail.html">mailing list</a> and find out.
    </p>
    
<p>
      Anyone can checkout source code from our anonymous CVS
      server. To do so, simply use the following commands (if you
      are using a GUI CVS client, configure it appropriately):
    </p>
    
<blockquote>
      
<table class="ForrestTable" cellspacing="1" cellpadding="4">
        
<tr class="b">
          
<td colspan="1" rowspan="1">
            
<pre>
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
password: anoncvs

cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout ws-axis
</pre>
          
</td>
        
</tr>
      
</table>
    
</blockquote>
<b><font size="+1">Full Remote CVS
    Access</font></b> 
<br>
     If you are a <i>Committer</i> and have a login on the Apache
    development server, this section is for you. If you are not a
    Committer, but you want to submit patches or even request
    commit privileges, please see the <a href="http://jakarta.apache.org/site/guidelines.html">Jakarta
    GuideLines</a> page (we follow the same rules) for more
    information. 
    <p>
      To have full access to the CVS server, you need to follow the
      links depending on the operating system you are using:
    </p>
    
<ul>
      
<li>
        
<a href="http://jakarta.apache.org/site/cvsonunix.html">Unix</a>
      
</li>
      
<li>
        
<a href="http://jakarta.apache.org/site/cvsonwin32.html">Windows</a>
      
</li>
    
</ul>
   
  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Mailing List</h5>
</div>
      

<p>

<b>Before subscribing to any of the mailing lists, please make sure you have
read and understand the <a href="#mailguide.html">guidelines</a>.</b>

</p>

<p>While the mailing lists are not archived on Apache they are available
at other sites, for example <a href="http://marc.theaimsgroup.com">
http://marc.theaimsgroup.com</a> is pretty good and is used for searching below.
</p>
    
    
<div class="h5">
<h5>The Axis User List</h5>
</div>
      

<p>

<b>Medium Traffic</b>
<a href="#mailto:axis-user-subscribe@ws.apache.org">Subscribe</a>
<a href="#mailto:axis-user-unsubscribe@ws.apache.org">Unsubscribe</a>
<a href="#mailto:axis-user-digest-subscribe@ws.apache.org">Subscribe(Digest)</a>
<a href="#mailto:axis-user-digest-unsubscribe@ws.apache.org">Unsubscribe(Digest)</a>
<a href="#mailto:axis-user@ws.apache.org">Send mail to list</a>

<br>
This list is for developers that are using Axis in their own projects to 
ask questions, share knowledge, and discuss issues related to using Axis.
<br>

<form action="http://marc.theaimsgroup.com/" method="get">
    
<input name="l" type="hidden" value="axis-user">
    <input name="w" type="hidden" value="2">

<table class="ForrestTable" cellspacing="0" cellpadding="0" border="0">

<tr class="b">
<td align="left" colspan="1" rowspan="1"><input name="r" type="hidden" value="1">Search:&nbsp;<input maxlength="40" name="s" size="25" type="text" value=""><input type="submit" value="Search"><input type="reset" value="Reset">
<br>[<input name="q" type="radio" value="t">]&nbsp;Subjects&nbsp;[<input name="q" type="radio" value="a">]&nbsp;Authors&nbsp;[<input name="q" type="radio" value="b">]&nbsp;Bodies&nbsp;for&nbsp;list&nbsp;'axis-user'
<br>
</td>
</tr>
</table>

</form>

</p>
    
    
<div class="h5">
<h5>The Axis Developer List</h5>
</div>
      

<p>

<b>Medium Traffic</b>
<a href="#mailto:axis-dev-subscribe@ws.apache.org">Subscribe</a>
<a href="#mailto:axis-dev-unsubscribe@ws.apache.org">Unsubscribe</a>
<a href="#mailto:axis-dev-digest-subscribe@ws.apache.org">Subscribe(Digest)</a>
<a href="#mailto:axis-dev-digest-unsubscribe@ws.apache.org">Unsubscribe(Digest)</a>
<a href="#mailto:axis-dev@ws.apache.org">Send mail to list</a>

<br>
This is the list where participating developers of the Axis project meet 
and discuss issues, code changes/additions, etc. 
<form action="http://marc.theaimsgroup.com/" method="get">
    
<input name="l" type="hidden" value="axis-dev">
    <input name="w" type="hidden" value="2">

<table class="ForrestTable" cellspacing="0" cellpadding="0" border="0">

<tr class="b">
<td align="left" colspan="1" rowspan="1"><input name="r" type="hidden" value="1">Search:&nbsp;<input maxlength="40" name="s" size="25" type="text" value=""><input type="submit" value="Search"><input type="reset" value="Reset">
<br>[<input name="q" type="radio" value="t">]&nbsp;Subjects&nbsp;[<input name="q" type="radio" value="a">]&nbsp;Authors&nbsp;[<input name="q" type="radio" value="b">]&nbsp;Bodies&nbsp;for&nbsp;list&nbsp;'axis-dev'
<br>
</td>
</tr>
</table>

</form>

</p>
    


    
<div class="h5">
<h5>The Axis C++ User List</h5>
</div>
      

<p>

<b>Medium Traffic</b>
<a href="#mailto:axis-c-user-subscribe@ws.apache.org">Subscribe</a>
<a href="#mailto:axis-c-user-unsubscribe@ws.apache.org">Unsubscribe</a>
<a href="#mailto:axis-c-user-digest-subscribe@ws.apache.org">Subscribe(Digest)</a>
<a href="#mailto:axis-c-user-digest-unsubscribe@ws.apache.org">Unsubscribe(Digest)</a>
<a href="#mailto:axis-c-user@ws.apache.org">Send mail to list</a>

<br>
This list is for developers that are using Axis C++ in their own projects to 
ask questions, share knowledge, and discuss issues related to using Axis C++.
<form action="http://marc.theaimsgroup.com/" method="get">
    
<input name="l" type="hidden" value="axis-c-user">
    <input name="w" type="hidden" value="2">

<table class="ForrestTable" cellspacing="0" cellpadding="0" border="0">

<tr class="b">
<td align="left" colspan="1" rowspan="1"><input name="r" type="hidden" value="1">Search:&nbsp;<input maxlength="40" name="s" size="25" type="text" value=""><input type="submit" value="Search"><input type="reset" value="Reset">
<br>[<input name="q" type="radio" value="t">]&nbsp;Subjects&nbsp;[<input name="q" type="radio" value="a">]&nbsp;Authors&nbsp;[<input name="q" type="radio" value="b">]&nbsp;Bodies&nbsp;for&nbsp;list&nbsp;'axis-c-user'
<br>
</td>
</tr>
</table>

</form>

</p>
    



    
<div class="h5">
<h5>The Axis C++ Developer List</h5>
</div>
      

<p>

<b>Medium Traffic</b>
<a href="#mailto:axis-c-dev-subscribe@ws.apache.org">Subscribe</a>
<a href="#mailto:axis-c-dev-unsubscribe@ws.apache.org">Unsubscribe</a>
<a href="#mailto:axis-c-dev-digest-subscribe@ws.apache.org">Subscribe(Digest)</a>
<a href="#mailto:axis-c-dev-digest-unsubscribe@ws.apache.org">Unsubscribe(Digest)</a>
<a href="#mailto:axis-c-dev@ws.apache.org">Send mail to list</a>

<br>
This is the list where participating developers of the Axis C++ project meet 
and discuss issues, code changes/additions, etc. 
<form action="http://marc.theaimsgroup.com/" method="get">
    
<input name="l" type="hidden" value="axis-c-dev">
    <input name="w" type="hidden" value="2">

<table class="ForrestTable" cellspacing="0" cellpadding="0" border="0">

<tr class="b">
<td align="left" colspan="1" rowspan="1"><input name="r" type="hidden" value="1">Search:&nbsp;<input maxlength="40" name="s" size="25" type="text" value=""><input type="submit" value="Search"><input type="reset" value="Reset">
<br>[<input name="q" type="radio" value="t">]&nbsp;Subjects&nbsp;[<input name="q" type="radio" value="a">]&nbsp;Authors&nbsp;[<input name="q" type="radio" value="b">]&nbsp;Bodies&nbsp;for&nbsp;list&nbsp;'axis-c-dev'
<br>
</td>
</tr>
</table>

</form>

</p>
   


  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Reference Library</h5>
</div>
      

<p>The Axis Project lives or fails based on its human resources. Users
and contributors alike help the project with ideas and brainpower. A common
foundation of knowledge is required to effectively participate in this
virtual community. The following is a list of documents that we have found
helpful for us and may be helpful to you:</p>

<p>These resources are required reading for anybody contributing source
code to the project.</p>

<p>
<b><font>SOAP Specific Resources</font></b>
</p>

<p>
<b><a href="http://www.w3.org/TR/SOAP/">SOAP W3C Specification</a></b>

<br>Required reading.</p>

<p>
<b><a href="http://www.w3.org/TR/SOAP-attachments">SOAP
Messaging with Attachments W3C Specification</a></b>

<br>SOAP combined with MIME.</p>

<p>
<b><a href="http://www.w3.org/TR/SOAP-dsig/">SOAP Security
Extensions: Digital Signature Specification</a></b>

<br>Adding security to SOAP.</p>

<p>
<b><font>Other Specifications</font></b><b><font><a href="http://www.w3c.org/TR/wsdl.html"></a></font></b>
</p>

<p>
<a href="http://www.w3c.org/TR/wsdl.html">Web Services Description Language
(WSDL) 1.1</a>
</p>

<p>
<a href="http://www.ws-i.org/Profiles/BasicProfile-1.0.html">WS-I Basic Profile Version 1.0</a>
</p>

<p>
<a href="http://jcp.org/aboutJava/communityprocess/first/jsr101/index.html">Java
API for XML-based RPC (JAX-RPC)</a>
</p>

<p>
<b><font>Other Resources</font></b>
</p>

<p>
<b><a href="http://java.sun.com/docs/books/jls/index.html">The
Java Language Specification</a></b>

<br>Written by the creators of the Java Programming Language, this online
book is considered by many to be the bible for programming in Java. A must
read.</p>

<p>
<b><a href="http://java.sun.com/products/jdk/javadoc/index.html">Javadoc</a></b>

<br>Javadoc is the automatic software documentation generator used by Java
since it was first released. All code written for this project must be
documented using Javadoc conventions.</p>

<p>
<b><a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">The
Java Code Conventions</a></b>

<br>This Sun document specifies the de-facto standard way of formatting
Java code. All code written for this project must follow these conventions.</p>

<p>
<b><a href="http://cvsbook.red-bean.com/">Open Source Development
with CVS</a></b>

<br>Written by Karl Fogel, this is an online version of many of the primary
chapters from the dead-tree version of his book.</p>

<p>
<b><a href="http://www.cvshome.org/docs/blandy.html">Introduction
to CVS</a></b>

<br>Written by Jim Blandy, this brief introduction gives a first look into
CVS. If you have never used CVS before, you'll want to start here.</p>

<p>
<b><a href="http://www.cvshome.org/docs/manual/cvs.html">Version
Management with CVS</a></b>

<br>Written by Per Cederqvist et al, this is the main manual for CVS. It
provides details on all documented CVS features.
</p>
    
  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - </h5>
</div>
      
    
<p>
      New Axis bugs should be reported using
      <a href="http://issues.apache.org/jira">JIRA</a> (the Apache bug database).
    </p>
    
<ul>
      
<li>
        Please report bugs against the newest release.
      </li>
      
<li>
        If you're not sure whether the behavior in question is a
        bug or a feature, please post a message to the
        <a href="#mailto:axis-dev@ws.apache.org">axis-dev</a>
        mailing list for clarification.
      </li>
      
<li>
        To avoid duplicate bug reports, please query JIRA to
        see whether the bug has already been reported (and perhaps
        fixed). 
      </li>
      
<li>
        If you can't find your bug in the database, it would help
        if you could check out Axis from CVS, and build it locally
        to verify that the bug still exists.
      </li>
      
<li>
        If you have found a new bug, please enter an Axis bug
        report in JIRA. Remember to include the following
        information: 
        <ul>
          
<li>
            Version number of Axis
          </li>
          
<li>
            Version number of JDK (enter "java -fullversion")
          </li>
          
<li>
            Instructions for how to reproduce the problem, ideally
            including a small testcase.
          </li>
        
</ul>
        
<p>
          
<i>Before you can enter your first bug report, you must
          submit your email address to JIRA and receive a
          password.</i>
        
</p>
      
</li>
    
</ul>
    
<p>
      Bugs related to WSDL4J should be addressed to the Expert Group for JSR110 at
      <a href="http://groups.yahoo.com/group/jsr110-eg-disc">http://groups.yahoo.com/group/jsr110-eg-disc</a>.
    </p>
    
<p>
      For more information visit the following links:
    </p>
    
<ul>
      
<li>
        
<a href="http://issues.apache.org/jira/">Apache
        JIRA</a>
      
</li>
    
</ul>
    
<p>
      We also encourage you to write patches for problems you find
      and submit them to the
      <a href="#mailto:axis-dev@ws.apache.org">axis-dev</a> mailing
      list. If we agree the problem is a bug and the patch fixes it
      and does not break something else, we are likely to include
      the patch in the next release.
    </p>
    
  
  
<div class="h2">
<h2>How To Build Axis Project's Website</h2>
</div>
        
<div class="h5">
<h5>Installing Forrest</h5>
</div>
            
            
<p>
                The Axis website build system requires two components to perform a build.<br>
                
<a href="http://ant.apache.org/">Ant</a> and
                <a href="http://forrest.apache.org/">Forrest</a>.
            </p>
            
<p>
                Specifically the build has been tested to work with Ant version
                1.6.1 and Forrest 0.5.1. To install these products download
                the distributions and follow the instructions in their
                documentation.  Make sure you don't forget to set the
                environment variables FORREST_HOME and ANT_HOME.  The
                ANT_HOME/bin directory should be in the path.
            </p>
        
        
<div class="h5">
<h5>Checking out ws-axis and ws-site module</h5>
</div>
            
            
<p>
                Check out <b>'ws-axis/site/src'</b> and <b>'ws-site/target/axis'</b>
                module via your favorite CVS tools.<br>
                Please follow the guildeline written <a href="#site:cvs">here</a>.
            </p>
        
        
<div class="h5">
<h5>Running the Build</h5>
</div>
            
            
<p>
                Here's a list of targets for the ant task. But, what you need to do is just "ant".
            </p>
            
<table class="ForrestTable" cellspacing="1" cellpadding="4">
                
<tr class="b">
                    
<th colspan="1" rowspan="1">Target</th>
                    <th colspan="1" rowspan="1">Description</th>
                
</tr>
                
<tr class="a">
                    
<td colspan="1" rowspan="1">clean</td>
                    <td colspan="1" rowspan="1">Erase all build work products (ie, everything in the
                        build directory</td>
                
</tr>
                
<tr class="b">
                    
<td colspan="1" rowspan="1">run-forrest</td>
                    <td colspan="1" rowspan="1">Run Forrest with Jetty server 
                        to review the target</td>
                
</tr>
                
<tr class="a">
                    
<td colspan="1" rowspan="1">run-browser</td>
                    <td colspan="1" rowspan="1">Invoke a web browser (ie, Internet Explorer)</td>
                
</tr>
                
<tr class="b">
                    
<td colspan="1" rowspan="1">backcopy</td>
                    <td colspan="1" rowspan="1">Reflect the updates on the build directory to
                        the master source on 'ws-axis/site/src'</td>
                
</tr>
                
<tr class="a">
                    
<td colspan="1" rowspan="1">forrest</td>
                    <td colspan="1" rowspan="1">Create the updated static contents</td>
                
</tr>

                
<tr class="b">
                    
<td colspan="1" rowspan="1">replace</td>
                    <td colspan="1" rowspan="1">Copy the contents to ws-site/targets/axis directory</td>
                
</tr>
                
<tr class="a">
                    
<td colspan="1" rowspan="1">build-site (default)</td>
                    <td colspan="1" rowspan="1">Do clean up and all tasks to the build site</td>
                
</tr>
            
</table>
        
        
<div class="h5">
<h5>For Committers (Highly recommended)</h5>
</div>
            
            
<p>
                The procedure to make changes to http://ws.apache.org/axis/ is:
            </p>
            
<ul>
            
<li>*cd* into the local <b>'ws-axis/site'</b> CVS dir</li>
            
<li>execute <b>"ant"</b>
</li>
            
<li>make changes to  <b>'build/webapp/content/xdocs'</b>
</li>
            
<li>
<b>reload and review the contents</b> with the autostarted browser</li>
            
<li>
<b>close the browser and the forrest window</b> when you are ready to
                finish editing the site</li>
            
<li>cvs commit (ie, <b>'ws-axis/site/src'</b> and 
                <b>'ws-site/target/axis'</b>)</li>
            
</ul>
        
        
<div class="h5">
<h5>Manual update (If you want to realize the value of ant tasks above ...)</h5>
</div>
            
            
<p>
            If you just want to update the site step-by-step, the followings
            are the instructions.
            </p>

<PRE>
1. Installing Forrest
    [Note] At this time, the version 0.5.1 of Forrest is tested version.

2. Checking out 'ws-axis/site' module
    [ex]
    'ws-axis/site/src/documentation/content/xdocs/java/user-guide.ihtml'

3. Make changes to the target

4. Confirming the change with "forrest run"
   4-1) cd into the local "ws-axis/site" CVS dir
   4-2) execute "forrest run"
   4-3) have an access to http://localhost:8888/ to see the site

5. Generating a static content with "forrest"
   5-1) execute "forrest" in the "ws-axis/site" dir
   5-2) check the generated contents in "ws-axis/site/build/site/"

6. Make commitments
   6-1) commit the original source (xml/ihtml/gif/jpg) to "ws-axis"
   6-2) copy the generated contents into "ws-site/targets/axis"
   6-3) commit the generated contents to "ws-site"

7. (Optional) If you are in a hurry to reflect the change to the site,
   cd to /www/ws.apache.org, and execute "cvs update -P" on minotaur.

   [Note] *** VERY IMPORTANT ***
      YOU HAVE TO CHECK YOUR UMASK IS "002" BEFORE DOING THE COMMAND,
    OR THE SITE WILL BECOME A NON-UPDATABLE SITE FROM THEN ON.

   The site will be updated automatically twice a day 12 midnight and
   12 noon PST by a cron job of dims.
</PRE>
        
        
<div class="h5">
<h5>F.A.Q.</h5>
</div>
            
            
<p>
<em>Q1.</em>
<br>
                I encountered<br>
                The &lt;xmlcatalog&gt; data type doesn't support the nested "catalogpath" element.<br>
                error, during the build.
            </p>
            
<p>
             
<em>A1.</em>
<br>
            Please make sure that your Ant version is later than 1.6 alpha. You can check the Ant version, by running "ant -version".
            </p>
            
<p>
<em>Q2.</em>
<br>
		I see an error like this regarding mirrors.pdf<br>
		[java] X [0]	mirrors.pdf BROKEN ....
	    </p>
            
<p>
<em>A2.</em>
<br>
		This is a known issue, but does not affect the site itself.
            </p>
            
<p>
            
<strong>( more to be come )</strong>
            
</p>
        
    
 
 
<div class="h4">
<h4>Axis (Java)</h4>
</div>
  
<div class="h2">
<h2>Axis Documentation</h2>
</div>
<div class="h5">
<h5>Documentation</h5>
</div>
<p>This is the documentation for <a href="http://ws.apache.org/axis/">Apache Axis 1.2</a> If the version of Axis you are using is older or newer than this version, then this is the wrong documentation to be using. Read the version that came with your copy of Axis.</p>
<div class="h5">
<h5>Documentation for Axis Users</h5>
</div>
<ul>
<li>
<a href="#install.html">Installation Instructions</a>
</li>
<li>
<a href="#user-guide.html">User's Guide</a>
</li>
<li>
<a href="#client-side-axis.html">Client-side Axis</a>
</li>
<li>
<a href="#security.html">Securing an Axis-based Web Service</a>
</li>
<li>
<a href="#ant/ant.html">Axis Ant Tasks</a>
</li>
<li>
<a href="#reference.html">Reference Material</a>
</li>
<li>
<a href="#reading.html">Further Reading</a>
</li>
</ul>
<div class="h5">
<h5>Documentation for Axis Developers</h5>
</div>
<ul>
<li>
<a href="#apiDocs/index.html">API Documentation</a>
</li>
<li>
<a href="#building-axis.html">Building Axis</a> - Guidelines for building Axis with/without optional components.</li>
<li>
<a href="#developers-guide.html">Developer's Guide</a> - Collection of guidelines for developing code in Axis.</li>
<li>
<a href="#integration-guide.html">Integration Guide</a> - Description of APIs and development direction to allow integration into an existing web application server.</li>
<li>
<a href="#architecture-guide.html">Architecture Guide</a> - Axis design concepts and rationale.</li>
</ul>
  
<div class="h2">
<h2>Axis installation instructions</h2>
</div>
<div class="h5">
<h5>Axis installation instructions</h5>
</div>
<p>
<strong>Contents</strong>
</p>
<ul>
<li>
<a href="##intro">Introduction</a>
</li>
<li>
<a href="##webapp">Creating Webapps</a>
</li>
<li>
<a href="##depend">Installing Dependencies</a>
</li>
<li>
<a href="##websvc">Installing Web Services</a>
</li>
<li>
<a href="##start">Starting the web server</a>
</li>
<li>
<a href="##install-test">Installation testing</a>
</li>
<li>
<a href="##deploy">Deploying web services</a>
</li>
<li>
<a href="##test">Testing</a>
</li>
<li>
<a href="##advanced">Advanced Installation</a>
</li>
<li>
<a href="##broken">What if it doesn't work?</a>
</li>
<li>
<a href="##summary">Summary</a>
</li>
<li>
<a href="##soapmon">Appendix: Enabling the SOAP Monitor</a>
</li>
</ul>
<p>
<a name="java/install.html#intro"></a>
</p>
<div class="h5">
<h5>Introduction</h5>
</div>
<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 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 class="h5">
<h5>Things you have to know</h5>
</div>
<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>
<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 "ClassNotFoundException".</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 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 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 "how to write internet scale distributed applications". Nobody knows how to do that properly yet, so that you have to learn this by doing.</p>
<div class="h5">
<h5>Step 0: Concepts</h5>
</div>
<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, <em>Section 5</em>, which is a clear descendant of the XML RPC system, and <em>XML Schema</em>, 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 <em>axis.jar</em>; it implements the JAX-RPC API declared in the JAR files <em>jaxrpc.jar</em> and <em>saaj.jar</em>. It needs various helper libraries, for logging, WSDL processing and introspection. All these files can be packaged into a web application, <em>axis.war</em>, 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>
<p>
<a name="java/install.html#webapp"></a>
</p>
<div class="h5">
<h5>Step 1: Preparing the webapp</h5>
</div>
<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 ("webapps") 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, "axis" has been used; rename these references if appropriate.</p>
<p>
<a name="java/install.html#depend"></a>
</p>
<div class="h5">
<h5>Step 2: Setting up the libraries</h5>
</div>
<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 <em>can</em> 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 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.&nbsp; The examples in this guide use Xerces.&nbsp; This guide adds xml-apis.jar and xercesImpl.jar to the AXISCLASSPATH so that Axis can find the parser (<a href="##Classpath_setup">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="h5">
<h5>Tomcat 4.x and Java 1.4</h5>
</div>
<p>Java 1.4 changed the rules as to how packages beginning in java.* and javax.* get loaded. Specifically, they only get loaded from <em>endorsed</em> 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 class="h5">
<h5>WebLogic 8.1</h5>
</div>
<p>WebLogic 8.1 ships with <span class="codefrag">webservices.jar</span> that conflicts with Axis' <span class="codefrag">saaj.jar</span> and prevents Axis 1.2 from working right out of the box. This conflict exists because WebLogic uses an older definition of <span class="codefrag">javax.xml.soap.*</span> package from <a 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 <span class="codefrag">WEB-INF/weblogic.xml</span> to true. An example of <span class="codefrag">weblogic.xml</span> is shown below: <pre>   &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>
<p>If set to <span class="codefrag">true</span>, the <span class="codefrag">&lt;prefer-web-inf-classes&gt;</span> 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 <span class="codefrag">CLASSPATH</span> property by placing Axis's <span class="codefrag">saaj.jar</span> library in front of WeLlogic's <span class="codefrag">webservices.jar</span>. <p>
<strong>NOTE:</strong> 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 href="http://e-docs.bea.com/wls/docs81/programming/classloading.html">WebLogic Server Application Classloading</a>.</p>
<p>
<a name="java/install.html#start"></a>
</p>
<div class="h5">
<h5>Step 3: starting the web server</h5>
</div>
<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>
<p>
<a name="java/install.html#install-test"></a>
</p>
<div class="h5">
<h5>Step 4: Validate the Installation</h5>
</div>
<p>After installing the web application and dependencies, you should make sure that the server is running the web application.</p>
<div class="h5">
<h5>Look for the start page</h5>
</div>
<p>Navigate to the start page of the webapp, usually <a href="http://127.0.0.1:8080/axis/">http://127.0.0.1:8080/axis/</a>, though of course the port may differ.<br>
<br> 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 class="h5">
<h5>Validate Axis with happyaxis</h5>
</div>
<p>Follow the link <em>Validate the local installation's configuration</em>
<br> This will bring you to <em>happyaxis.jsp</em> a test page that verifies that needed and optional libraries are present. The URL for this will be something like <a 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> 
<strong>You must not proceed until all needed libraries can be found, and this validation page is happy.</strong>
<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 class="h5">
<h5>Look for some services</h5>
</div>
<p>From the start page, select <em>View the list of deployed Web services</em>. 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 <em>(wsdl)</em> 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.&nbsp; The install guide covers this topic in detail.</p>
<div class="h5">
<h5>Test a SOAP Endpoint</h5>
</div>
<p>Now it's time to test a service. Although SOAP 1.1 uses HTTP POST to submit an XML request to the <em>endpoint</em>, 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 <span class="codefrag">getVersion</span> method:<br>
<br> 
<a href="http://localhost:8080/axis/services/Version?method=getVersion">http://localhost:8080/axis/services/Version?method=getVersion</a>
<br>
<br> This should return something like:</p>
<pre class="xml">  &lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br>  &lt;soapenv:Envelope<br>   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"<br>   xmlns:xsd="http://www.w3.org/2001/XMLSchema"<br>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;<br>   &lt;soapenv:Body&gt;<br>   &lt;getVersionResponse<br>    soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"&gt;<br>    &lt;getVersionReturn<br>     xsi:type="xsd:string"&gt;<br>     Apache Axis version: 1.1 Built on Apr 04, 2003 (01:30:37 PST)<br>    &lt;/getVersionReturn&gt;<br>   &lt;/getVersionResponse&gt;<br>   &lt;/soapenv:Body&gt;<br>  &lt;/soapenv:Envelope&gt;
</pre>
<p>The Axis version and build date may of course be different.</p>
<div class="h5">
<h5>Test a JWS Endpoint</h5>
</div>
<p>Now let's test a JWS web service. Axis' JWS Web Services are java files you save into the Axis webapp <em>anywhere but the WEB-INF tree</em>, 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 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>
<pre class="xml">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br>&lt;soapenv:Envelope<br> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"<br> xmlns:xsd="http://www.w3.org/2001/XMLSchema"<br> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;<br> &lt;soapenv:Body&gt;<br>  &lt;listResponse<br>   soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"&gt;<br>   &lt;listReturn xsi:type="soapenc:Array"<br>    soapenc:arrayType="xsd:string[6]"<br>    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"&gt;<br>    &lt;item&gt;accept:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*&lt;/item&gt;<br>    &lt;item&gt;accept-language:en-us&lt;/item&gt;<br>    &lt;item&gt;accept-encoding:gzip, deflate&lt;/item&gt;<br>    &lt;item&gt;user-agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&lt;/item&gt;<br>    &lt;item&gt;host:localhost:8080&lt;/item&gt;<br>    &lt;item&gt;connection:Keep-Alive&lt;/item&gt;<br>   &lt;/listReturn&gt;<br>  &lt;/listResponse&gt;<br> &lt;/soapenv:Body&gt;<br>&lt;/soapenv:Envelope&gt;
</pre>
<br>
<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>
<p>
<a name="java/install.html#websvc"></a>
</p>
<div class="h5">
<h5>Step 5: Installing new Web Services</h5>
</div>
<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 "classes" 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>Note: 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>
<p>
<a name="java/install.html#deploy"></a>
</p>
<div class="h5">
<h5>Step 6: Deploying your Web Service</h5>
</div>
<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>
<p>
<a name="java/install.html#Classpath_setup"></a>
</p>
<div class="h5">
<h5>Classpath setup</h5>
</div>
<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.<br>
<br> 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 "My Computer" and select "Properties". Click the "Advanced" 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>
<pre class="xml"> set AXIS_HOME=c:\axis<br> set AXIS_LIB=%AXIS_HOME%\lib<br> set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;<br>    %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;<br>    %AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar
</pre>
<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 permeate you will need to add them to your shell's startup (dot) files. Again, see your shell's documentation.</p>
<pre class="xml"> set AXIS_HOME=/usr/axis<br> set AXIS_LIB=$AXIS_HOME/lib<br> set AXISCLASSPATH=$AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery.jar:<br>    $AXIS_LIB/commons-logging.jar:$AXIS_LIB/jaxrpc.jar:$AXIS_LIB/saaj.jar:<br>    $AXIS_LIB/log4j-1.2.8.jar:$AXIS_LIB/xml-apis.jar:$AXIS_LIB/xercesImpl.jar<br> export AXIS_HOME; export AXIS_LIB; export AXISCLASSPATH
</pre>
<p>To use Axis client code, you can select AXISCLASSPATH when invoking Java by entering</p>
<pre class="xml">java -cp %AXISCLASSPATH% ...
</pre>
<p>or</p>
<pre class="xml">java -cp "$AXISCLASSPATH" ...
</pre>
<p>depending on the platform. You may omit the quotes if your CLASSPATH doesn't have spaces in it.<br>
<br> 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 class="h5">
<h5>Find the deployment descriptor</h5>
</div>
<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 <em>and</em> write access to the WEB-INF dir to save its state in this location.</p>
<div class="h5">
<h5>Run the admin client</h5>
</div>
<p>Execute the following command from the samples/stock directory. If you are not in this directory you will get a "java.io.FileNotFoundException: deploy.wsdd (The system cannot find the file specified)" exception.</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><strong>On Windows</strong>
<br> 
<pre>java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient
     -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd<br>
</pre>
<br> 
<strong>On UNIX</strong>
<br> 
<pre>java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient
     -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd</pre>
</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>Note: 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 "axis" 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>
<p>
<a name="java/install.html#test"></a>
</p>
<div class="h5">
<h5>Step 7: Testing</h5>
</div>
<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 class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><strong>On Windows</strong>
<br> 
<pre>java -cp .;%AXISCLASSPATH% samples.stock.GetQuote
     -lhttp://localhost:8080/axis/servlet/AxisServlet
     -uuser1 -wpass1 XXX
 </pre>
<strong>On UNIX</strong>
<br> 
<pre>java -cp $AXISCLASSPATH samples.stock.GetQuote
     -lhttp://localhost:8080/axis/servlet/AxisServlet
     -uuser1 -wpass1 XXX
 </pre>
</td>
</tr>
</table>
</li>
<li>You should get back "55.25" as a result.</li>
</ul>
<p>Note: 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 "axis" change the URL appropriately.</p>
<p>
<a name="java/install.html#advanced"></a>
</p>
<div class="h5">
<h5>Advanced Installation: adding Axis to your own Webapp</h5>
</div>
<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>
<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 href="http://manning.com/antbook">Java Development with Ant</a>, which can be downloaded as a <a href="http://www.manning.com/hatcher/chap15.pdf">PDF file</a>.</p>
<p>
<a name="java/install.html#broken"></a>
</p>
<div class="h5">
<h5>What if it doesn't work?</h5>
</div>
<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>
<li>Post to the <a 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 "I don't know", 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 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 href="http://issues.apache.org/jira/">jira</a> database to search for Axis bugs, both open and closed.</li>
<li>Consult the <a 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>
<p>
<a name="java/install.html#summary"></a>
</p>
<div class="h5">
<h5>Summary</h5>
</div>
<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>
<p>
<a name="java/install.html#soapmon"></a>
</p>
<div class="h5">
<h5>Appendix: Enabling the SOAP Monitor</h5>
</div>
<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#soapmon">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>
<li>Go to $AXIS_HOME/webapps/axis (or %AXIS_HOME%\webapps\axis) and compile SOAPMonitorApplet.java.<br> 
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><strong>On Windows</strong>
<br> 
<span class="codefrag">javac -classpath %AXIS_HOME%\lib\axis.jar SOAPMonitorApplet.java</span>
<br> 
<br> 
<strong>On Unix</strong>
<br> 
<span class="codefrag">javac -classpath $AXIS_HOME/lib/axis.jar SOAPMonitorApplet.java</span>
<br>
</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> 
<pre>    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.<br>


</pre>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><strong>On Windows</strong>
<br> 
<pre>
<span class="codefrag">java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient 
   -lhttp://localhost:8080/axis/services/AdminService deploy-monitor.wsdd</span>
</pre>
<br> 
<strong>On UNIX</strong>
<br> 
<pre>
<span class="codefrag">java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient  
   -lhttp://localhost:8080/axis/services/AdminService deploy-monitor.wsdd</span>
</pre>
</td>
</tr>
</table>
<pre>
   
<strong>SOAPMonitorService Deployment Descriptor (deploy-monitor.wsdd)</strong>
   
</pre>
<pre class="xml">&lt;deployment xmlns="http://xml.apache.org/axis/wsdd/" 
       xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt; 
     &lt;handler name="soapmonitor" 
         type="java:org.apache.axis.handlers.SOAPMonitorHandler"&gt; 
       &lt;parameter name="wsdlURL" 
         value="/axis/SOAPMonitorService-impl.wsdl"/&gt; 
       &lt;parameter name="namespace" 
         value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/&gt; 
       &lt;parameter name="serviceName" value="SOAPMonitorService"/&gt; 
       &lt;parameter name="portName" value="Demo"/&gt; 
     &lt;/handler&gt; 
     &lt;service name="SOAPMonitorService" provider="java:RPC"&gt; 
       &lt;parameter name="allowedMethods" value="publishMessage"/&gt; 
       &lt;parameter name="className" 
         value="org.apache.axis.monitor.SOAPMonitorService"/&gt; 
       &lt;parameter name="scope" value="Application"/&gt; 
     &lt;/service&gt; 
   &lt;/deployment&gt; 
  </pre>
<pre> 
  
</pre>
</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 <strong>requestFlow</strong>requestFlow and <strong>responseFlow</strong>responseFlow definitions follow the start tag of the <strong>&lt;service&gt;</strong>&lt;service&gt; element. If a service is already deployed, undeploy it and deploy it with the modified deployment descriptor. An example is shown below: <pre class="xml">... 
   &lt;service name="xmltoday-delayed-quotes" provider="java:RPC"&gt; 
       &lt;requestFlow&gt; 
         &lt;handler type="soapmonitor"/&gt; 
       &lt;/requestFlow&gt; 
       &lt;responseFlow&gt; 
         &lt;handler type="soapmonitor"/&gt; 
       &lt;/responseFlow&gt; 
       ...</pre>
</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>
<li style="list-style: none">
<hr noshade="noshade" size="1">Copyright &copy; 2001-2003, Apache Software Foundation</li>
</ol>
  
<div class="h2">
<h2>Axis User's Guide</h2>
</div>
<div class="h5">
<h5>Axis User's Guide</h5>
</div>
<p>
<em>1.2 Version</em>
<br> 
<em>Feedback: axis-dev@ws.apache.org</em>
</p>
<div class="h5">
<h5>Table of Contents</h5>
</div>
<ul>
<li>
<a href="##Introduction">Introduction</a>
</li>
<li>
<a href="##Installation">Installing Axis</a>
</li>
<li>
<a href="##ConsumingServices">Consuming Web Services with Axis</a>
</li>
<li>
<a href="##PublishingServices">Publishing Web Services with Axis</a>
</li>
<li>
<a href="##DataMapping">XML &lt;-&gt; Java Data Mapping in Axis</a>
</li>
<li>
<a href="##WSDL">Using WSDL with Axis</a>
</li>
<li style="list-style: none">
<ul>
<li>
<a href="##WSDLObtaining">?WSDL: Obtaining WSDL for deployed services</a>
</li>
<li>
<a href="##WSDL2Java">WSDL2Java: Building stubs, skeletons, and data</a>
</li>
<li>
<a href="##Java2WSDL">Java2WSDL: Building WSDL from Java</a>
</li>
</ul>
</li>
<li>
<a href="##publishedinterfaces">Published Interfaces</a>
</li>
<li>
<a href="##newbie">Newbie Tips: Finding Your Way Around</a>
</li>
<li>
<a href="##tcpmon">Appendix : Using TCPMon</a>
</li>
<li>
<a href="##soapmon">Appendix : Using SOAP Monitor</a>
</li>
<li>
<a href="##Glossary">Glossary</a>
</li>
</ul>
<p>
<a name="java/user-guide.html#Introduction"></a>
</p>
<div class="h5">
<h5>Introduction</h5>
</div>
<p>Welcome to Axis, the third generation of Apache SOAP!</p>
<div class="h5">
<h5>What is SOAP?</h5>
</div>
<p>SOAP is an XML<em>-</em>based communication protocol and encoding format for inter-application communication. Originally conceived by Microsoft and Userland software, it has evolved through several generations; the current spec is version, <a href="http://w3.org/TR/soap">SOAP 1.2</a>, though version 1.1 is more widespread. The W3C's <a href="http://www.w3.org/2000/xp/Group/">XML Protocol working group</a> is in charge of the specification.</p>
<p>SOAP is widely viewed as the backbone to a new generation of cross-platform cross-language distributed computing applications, termed Web Services.</p>
<div class="h5">
<h5>What is Axis?</h5>
</div>
<p>Axis is essentially a <em>SOAP engine</em> -- a framework for constructing SOAP processors such as clients, servers, gateways, etc. The current version of Axis is written in Java, but a C++ implementation of the client side of Axis is being developed.</p>
<p>But Axis isn't just a SOAP engine -- it also includes:</p>
<ul>
<li>a simple stand-alone server,</li>
<li>a server which plugs into servlet engines such as Tomcat,</li>
<li>extensive support for the <em>Web Service Description Language (WSDL)</em>,</li>
<li>emitter tooling that generates Java classes from WSDL.</li>
<li>some sample programs, and</li>
<li>a tool for monitoring TCP/IP packets.</li>
</ul>
<p>Axis is the third generation of Apache SOAP (which began at IBM as "SOAP4J"). In late 2000, the committers of Apache SOAP v2 began discussing how to make the engine much more flexible, configurable, and able to handle both SOAP and the upcoming XML Protocol specification from the W3C.</p>
<p>After a little while, it became clear that a ground-up rearchitecture was required. Several of the v2 committers proposed very similar designs, all based around configurable "chains" of message "handlers" which would implement small bits of functionality in a very flexible and composable manner.</p>
<p>After months of continued discussion and coding effort in this direction, Axis now delivers the following key features:</p>
<ul>
<li>
<strong>Speed.</strong> Axis uses SAX (event-based) parsing to acheive significantly greater speed than earlier versions of Apache SOAP.</li>
<li style="list-style: none">
<p></p>
</li>
<li>
<strong>Flexibility.</strong> The Axis architecture gives the developer complete freedom to insert extensions into the engine for custom header processing, system management, or anything else you can imagine.</li>
<li style="list-style: none">
<p>
<a name="java/user-guide.html#publishedinterfaces"></a>
</p>
</li>
<li>
<strong>Stability.</strong> Axis defines a set of <strong>published interfaces</strong> which change relatively slowly compared to the rest of Axis.</li>
<li style="list-style: none">
<p></p>
</li>
<li>
<strong>Component-oriented deployment.</strong> You can easily define reusable networks of Handlers to implement common patterns of processing for your applications, or to distribute to partners.</li>
<li style="list-style: none">
<p></p>
</li>
<li>
<strong>Transport framework.</strong> We have a clean and simple abstraction for designing transports (i.e., senders and listeners for SOAP over various protocols such as SMTP, FTP, message-oriented middleware, etc), and the core of the engine is completely transport-independent.</li>
<li style="list-style: none">
<p></p>
</li>
<li>
<strong>WSDL support.</strong> Axis supports the <a href="http://www.w3.org/TR/wsdl">Web Service Description Language</a>, version 1.1, which allows you to easily build stubs to access remote services, and also to automatically export machine-readable descriptions of your deployed services from Axis.</li>
</ul>
<p>We hope you enjoy using Axis. Please note that this is an open-source effort - if you feel the code could use some new features or fixes, please get involved and lend a hand! The Axis developer community welcomes your participation. And in case you're wondering what <em>Axis</em> stands for, it's <strong>A</strong>pache E<strong>X</strong>tensible <strong>I</strong>nteraction <strong>S</strong>ystem - a fancy way of implying it's a very configurable SOAP engine.</p>
<div class="h5">
<h5>Let us know what you think!</h5>
</div>
<p>Please send feedback about the package to "<a href="#mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a>". Also, Axis is registered in <a href="http://issues.apache.org/jira">jira</a>, the Apache bug tracking and feature-request database.</p>
<div class="h5">
<h5>What's in this release?</h5>
</div>
<p>This release includes the following features:</p>
<ul>
<li>SOAP 1.1/1.2 compliant engine</li>
<li>Flexible configuration / deployment system</li>
<li>Support for "drop-in" deployment of SOAP services (JWS)</li>
<li>Support for all basic types, and a type mapping system for defining new serializers/deserializers</li>
<li>Automatic serialization/deserialization of Java Beans, including customizable mapping of fields to XML elements/attributes</li>
<li>Automatic two-way conversions between Java Collections and SOAP Arrays</li>
<li>Providers for RPC and message based SOAP services</li>
<li>Automatic WSDL generation from deployed services</li>
<li>WSDL2Java tool for building Java proxies and skeletons from WSDL documents</li>
<li>Java2WSDL tool for building WSDL from Java classes.</li>
<li>Preliminary security extensions, which can integrate with Servlet 2.2 security/roles</li>
<li>Support for session-oriented services, via HTTP cookies or transport-independent SOAP headers</li>
<li>Preliminary support for the <strong>SOAP with Attachments</strong> specification</li>
<li>An EJB provider for accessing EJB's as Web Services</li>
<li>HTTP servlet-based transport</li>
<li>JMS based transport</li>
<li>Standalone version of the server (with HTTP support)</li>
<li>Examples, including a client and server for the SoapBuilders community interoperability tests and experimental TCP, JMS, and file-based transports.</li>
</ul>
<div class="h5">
<h5>What's still to do?</h5>
</div>
<p>Please click for <a href="#to-do.html">a list of what we think needs doing</a> - and please consider helping out if you're interested &amp; able!</p>
<p>
<a name="java/user-guide.html#Installation"></a>
</p>
<div class="h5">
<h5>Installing Axis and Using this Guide</h5>
</div>
<p>See the <a href="#install.html">Axis Installation Guide</a> for instructions on installing Axis as a web application on your J2EE server.</p>
<p>Before running the examples in this guide, you'll need to make sure that your CLASSPATH includes (Note: If you build Axis from a CVS checkout, these will be in xml-axis/java/build/lib instead of axis-1_2/lib):</p>
<ul>
<li>axis-1_2/lib/axis.jar</li>
<li>axis-1_2/lib/jaxrpc.jar</li>
<li>axis-1_2/lib/saaj.jar</li>
<li>axis-1_2/lib/commons-logging.jar</li>
<li>axis-1_2/lib/commons-discovery.jar</li>
<li>axis-1_2/lib/wsdl4j.jar</li>
<li>axis-1_2/ <em>(for the sample code)</em>
</li>
<li>A JAXP-1.1 compliant XML parser such as Xerces or Crimson. We recommend <a href="http://xml.apache.org/xerces2-j/">Xerces</a>, as it is the one that the product has been tested against.</li>
</ul>
<p>
<a name="java/user-guide.html#ConsumingServices"></a>
</p>
<div class="h5">
<h5>Consuming Web Services with Axis</h5>
</div>
<div class="h5">
<h5>Basics - Getting Started</h5>
</div>
<p>Let's take a look at an example Web Service client that will call the <strong>echoString</strong> method on the public Axis server at Apache.</p>
<pre class="example">1   import org.apache.axis.client.Call;
2   import org.apache.axis.client.Service;
3   import javax.xml.namespace.QName;
4   
5   public class TestClient {
6      public static void main(String [] args) {
7          try {
8              String endpoint =
9                       "http://ws.apache.org:5049/axis/services/echo";
10  
11             Service  service = new Service();
12             Call     call    = (Call) service.createCall();
13  
14             call.setTargetEndpointAddress( new java.net.URL(endpoint) );
15             call.setOperationName(new QName("http://soapinterop.org/", echoString"));
16  
17             String ret = (String) call.invoke( new Object[] { "Hello!" } );
18  
19             System.out.println("Sent 'Hello!', got '" + ret + "'");
20         } catch (Exception e) {
21             System.err.println(e.toString());
22         }
23     }
24  }</pre>
<p>(You'll find this file in <a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java/samples/userguide/example1/TestClient.java">samples/userguide/example1/TestClient.java</a>)</p>
<p>Assuming you have a network connection active, this program can be run as follows:</p>
<pre class="example">% java samples.userguide.example1.TestClient
Sent 'Hello!', got 'Hello!'
%
</pre>
<p>So what's happening here? On lines 11 and 12 we create new Service and Call objects. These are the standard JAX-RPC objects that are used to store metadata about the service to invoke. On line 14, we set up our endpoint URL - this is the destination for our SOAP message. On line 15 we define the operation (method) name of the Web Service. And on line 17 we actually invoke the desired service, passing in an array of parameters - in this case just one String.</p>
<p>You can see what happens to the arguments by looking at the SOAP request that goes out on the wire (look at the colored sections, and notice they match the values in the call above):</p>
<pre class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;SOAP-ENV:Body&gt;
 &lt;ns1:<strong>echoString</strong> xmlns:ns1="<strong>http://soapinterop.org/</strong>"&gt;
   &lt;arg0 xsi:type="xsd:string"&gt;<strong>Hello!</strong>&lt;/arg0&gt;
 &lt;/ns1:echoString&gt;
  &lt;/SOAP-ENV:Body&gt;
&lt;/SOAP-ENV:Envelope&gt;
</pre>
<p>The String argument is automatically serialized into XML, and the server responds with an identical String, which we deserialize and print.</p>
<p>
<em>Note: To actually watch the XML flowing back and forth between a SOAP client and server, you can use the included tcpmon tool or SOAP monitor tool. See the appendix for an overview.</em>
</p>
<div class="h5">
<h5>Naming Parameters</h5>
</div>
<p>In the above example, you can see that Axis automatically names the XML-encoded arguments in the SOAP message "arg0", "arg1", etc. (In this case there's just "arg0") If you want to change this, it's easy! Before calling <tt>invoke()</tt> you need to call <tt>addParameter</tt> for each parameter and <tt>setReturnType</tt> for the return, like so:</p>
<pre class="example">  call.addParameter("testParam", 
     org.apache.axis.Constants.XSD_STRING,
     javax.xml.rpc.ParameterMode.IN);
  call.setReturnType(org.apache.axis.Constants.XSD_STRING); 
</pre>
<p>This will assign the name <strong>testParam</strong> to the 1st (and only) parameter on the invoke call. This will also define the type of the parameter (<tt>org.apache.axis.Constants.XSD_STRING</tt>) and whether it is an input, output or inout parameter - in this case its an input parameter. Now when you run the program you'll get a message that looks like this:</p>
<pre class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;SOAP-ENV:Body&gt;
 &lt;ns1:echoString xmlns:ns1="http://soapinterop.org/"&gt;
   &lt;testParam xsi:type="xsd:string"&gt;Hello!&lt;/testParam&gt;
 &lt;/ns1:echoString&gt;
  &lt;/SOAP-ENV:Body&gt;
&lt;/SOAP-ENV:Envelope&gt;
</pre>
<p>Note that the param is now named "testParam" as expected.</p>
<div class="h5">
<h5>Interoperating with "untyped" servers</h5>
</div>
<p>In the above examples, we've been casting the return type of invoke(), which is Object, to the appropriate "real" type - for instance, we know that the echoString method returns a String, so we expect to get one back from client.invoke(). Let's take a moment and investigate how this happens, which sheds light on a potential problem (to which, of course, we have a solution - so don't fret :)).</p>
<p>Here's what a typical response might look like to the echoString method:</p>
<pre class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br> &lt;SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt; 
  &lt;SOAP-ENV:Body&gt;
   &lt;ns1:echoStringResponse xmlns:ns1="http://soapinterop.org/"&gt; 
 &lt;result xsi:type="xsd:string"&gt;Hello!&lt;/result&gt;
   &lt;/ns1:echoStringResponse&gt; 
  &lt;/SOAP-ENV:Body&gt;
 &lt;/SOAP-ENV:Envelope&gt;
</pre>
<p>Take a look at the section which we've highlighted in red - that attribute is a schema <strong>type declaration</strong>, which Axis uses to figure out that the contents of that element are, in this case, deserializable into a Java String object. Many toolkits put this kind of explicit typing information in the XML to make the message "self-describing". On the other hand, some toolkits return responses that look like this:</p>
<pre class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
 &lt;SOAP-ENV:Body&gt;
  &lt;ns1:echoStringResponse xmlns:ns1="http://soapinterop.org/"&gt;
   &lt;result&gt;Hello, I'm a string!&lt;/result&gt;
  &lt;/ns1:echoStringResponse&gt;
 &lt;/SOAP-ENV:Body&gt;
&lt;/SOAP-ENV:Envelope&gt;
</pre>
<p>There's no type in the message, so how do we know what Java object we should deserialize the &lt;result&gt; element into? The answer is <strong>metadata</strong> - data about data. In this case, we need a <strong>description</strong> of the service that tells us what to expect as the return type. Here's how to do it on the client side in Axis:</p>
<pre class="example">  call.setReturnType( org.apache.axis.Constants.XSD_STRING );
</pre>
<p>This method will tell the Axis client that if the return element is not typed then it should act as if the return value has an xsi:type attribute set to the predefined SOAP String type. (You can see an example of this in action in the interop echo-test client - samples/echo/TestClient.java.)</p>
<p>There is also a similar method which allows you to specify the Java class of the expected return type:</p>
<pre class="example">call.setReturnClass(String.class);
</pre>
<p>OK - so now you know the basics of accessing SOAP services as a client. But how do you publish your own services?</p>
<p>
<a name="java/user-guide.html#PublishingServices"></a>
</p>
<div class="h5">
<h5>Publishing Web Services with Axis</h5>
</div>
<p>Let's say we have a simple class like the following:</p>
<pre class="example">public class Calculator {
  public int add(int i1, int i2)
  {
 return i1 + i2; 
  }
  
  public int subtract(int i1, int i2)
  {
 return i1 - i2;
  }
}
</pre>
<p>(You'll find this very class in <a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java/samples/userguide/example2/Calculator.java">samples/userguide/example2/Calculator.java</a>.)</p>
<p>How do we go about making this class available via SOAP? There are a couple of answers to that question, but we'll start with the easiest way Axis provides to do this, which takes almost no effort at all!</p>
<div class="h5">
<h5>JWS (Java Web Service) Files - Instant Deployment</h5>
</div>
<p>OK, here's step 1 : copy the above .java file into your webapp directory, and rename it "Calculator.jws". So you might do something like this:</p>
<pre>% copy Calculator.java <em>&lt;your-webapp-root&gt;</em>/axis/Calculator.jws
</pre>
<p>Now for step 2... hm, wait a minute. You're done! You should now be able to access the service at the following URL (assuming your Axis web application is on port 8080):</p>
<p>
<a href="http://localhost:8080/axis/Calculator.jws">http://localhost:8080/axis/Calculator.jws</a>
</p>
<p>Axis automatically locates the file, compiles the class, and converts SOAP calls correctly into Java invocations of your service class. Try it out - there's a calculator client in samples/userguide/example2/CalcClient.java, which you can use like this:</p>
<pre class="example">% java samples.userguide.example2.CalcClient -p8080 add 2 5
Got result : 7
% java samples.userguide.example2.CalcClient -p8080 subtract 10 9
Got result : 1
%
</pre>
<p>(Note that you may need to replace the "-p8080" with whatever port your J2EE server is running on)</p>
<p>
<em>Important:</em> JWS web services are intended for simple web services. You cannot use packages in the pages, and as the code is compiled at run time you can not find out about errors until after deployment. Production quality web services should use Java classes with custom deployment.</p>
<div class="h5">
<h5>Custom Deployment - Introducing WSDD</h5>
</div>
<p>JWS files are great quick ways to get your classes out there as Web Services, but they're not always the best choice. For one thing, you need the source code - there might be times when you want to expose a pre-existing class on your system without source. Also, the amount of configuration you can do as to how the service gets accessed is pretty limited - you can't specify custom type mappings, or control which Handlers get invoked when people are using your service. <em>(Note for the future : the Axis team, and the Java SOAP community at large, are thinking about ways to be able to embed this sort of metadata into your source files if desired - stay tuned!)</em>
</p>
<p>
<a name="java/user-guide.html#descriptors"></a>
</p>
<div class="h5">
<h5>Deploying via descriptors</h5>
</div>
<p>To really use the flexibility available to you in Axis, you should get familiar with the Axis <strong>Web Service Deployment Descriptor (WSDD)</strong> format. A deployment descriptor contains a bunch of things you want to "deploy" into Axis - i.e. make available to the Axis engine. The most common thing to deploy is a Web Service, so let's start by taking a look at a deployment descriptor for a basic service (this file is <a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java/samples/userguide/example3/deploy.wsdd">samples/userguide/example3/deploy.wsdd</a>):</p>
<pre class="example">&lt;deployment xmlns="http://xml.apache.org/axis/wsdd/"
   xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;
 &lt;service name="MyService" provider="java:RPC"&gt;
  &lt;parameter name="className" value="samples.userguide.example3.MyService"/&gt;
  &lt;parameter name="allowedMethods" value="*"/&gt;
 &lt;/service&gt;
&lt;/deployment&gt;
</pre>
<p>Pretty simple, really - the outermost element tells the engine that this is a WSDD deployment, and defines the "java" namespace. Then the service element actually defines the service for us. A service is a <strong>targeted chain</strong> (see the <a href="#architecture-guide.html">Architecture Guide</a>), which means it may have any/all of: a request flow, a pivot Handler (which for a service is called a "provider"), and a response flow. In this case, our provider is "java:RPC", which is built into Axis, and indicates a Java RPC service. The actual class which handles this is <strong>org.apache.axis.providers.java.RPCProvider</strong>. We'll go into more detail later on the different styles of services and their providers.</p>
<p>We need to tell the RPCProvider that it should instantiate and call the correct class (e.g. samples.userguide.example3.MyService), and we do so by including &lt;parameter&gt; tags, giving the service one parameter to configure the class name, and another to tell the engine that any public method on that class may be called via SOAP (that's what the "*" means; we could also have restricted the SOAP-accessible methods by using a space or comma separated list of available method names).</p>
<div class="h5">
<h5>Advanced WSDD - specifying more options</h5>
</div>
<p>WSDD descriptors can also contain other information about services, and also other pieces of Axis called "Handlers" which we'll cover in a later section.</p>
<div class="h5">
<h5>Scoped Services</h5>
</div>
<p>Axis supports scoping service objects (the actual Java objects which implement your methods) three ways. "Request" scope, the default, will create a new object each time a SOAP request comes in for your service. "Application" scope will create a singleton shared object to service <strong>all</strong> requests. "Session" scope will create a new object for each session-enabled client who accesses your service. To specify the scope option, you add a &lt;parameter&gt; to your service like this (where "<em>value</em>" is request, session, or application):</p>
<pre class="xml">&lt;service name="MyService"...&gt;
  &lt;parameter name="scope" value="<em>value</em>"/&gt;
  ...
&lt;/service&gt;
</pre>
<div class="h5">
<h5>Using the AdminClient</h5>
</div>
<p>Once we have this file, we need to send it to an Axis server in order to actually deploy the described service. We do this with the AdminClient, or the "org.apache.axis.client.AdminClient" class. If you have deployed Axis on a server other than Tomcat, you may need to use the -p <em>&lt;port&gt;</em> argument. The default port is 8080. A typical invocation of the AdminClient looks like this:</p>
<pre class="example">% java org.apache.axis.client.AdminClient deploy.wsdd
&lt;Admin&gt;Done processing&lt;/Admin&gt;
</pre>
<p>This command has now made our service accessible via SOAP. Check it out by running the Client class - it should look like this:</p>
<pre class="example">% java samples.userguide.example3.Client
 -lhttp://localhost:8080/axis/services/MyService "test me!"
You typed : test me!
%
</pre>
<p>If you want to prove to yourself that the deployment really worked, try undeploying the service and calling it again. There's an "undeploy.wsdd" file in the example3/ directory which you can use just as you did the deploy.wsdd file above. Run the AdminClient on that file, then try the service Client again and see what happens.</p>
<p>You can also use the AdminClient to get a listing of all the deployed components in the server:</p>
<pre class="example">% java org.apache.axis.client.AdminClient list
&lt;big XML document returned here&gt;
</pre>
<p>In there you'll see services, handlers, transports, etc. Note that this listing is an exact copy of the server's "server-config.wsdd" file, which we'll talk about in more detail a little later.</p>
<div class="h5">
<h5>More deployment - Handlers and Chains</h5>
</div>
<p>Now let's start to explore some of the more powerful features of the Axis engine. Let's say you want to track how many times your service has been called. We've included a sample handler in the samples/log directory to do just this. To use a handler class like this, you first need to deploy the Handler itself, and then use the name that you give it in deploying a service. Here's a sample deploy.wsdd file (this is example 4 in samples/userguide):</p>
<pre class="example">&lt;deployment xmlns="http://xml.apache.org/axis/wsdd/"
   xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;
  &lt;!-- define the logging handler configuration --&gt;
 &lt;handler name="track" type="java:samples.userguide.example4.LogHandler"&gt;
  &lt;parameter name="filename" value="MyService.log"/&gt;
 &lt;/handler&gt;
 
 &lt;!-- define the service, using the log handler we just defined --&gt;
 &lt;service name="LogTestService" <strong></strong>provider="java:RPC"&gt;
  &lt;requestFlow&gt;
   &lt;handler type="track"/&gt;
  &lt;/requestFlow&gt;
 
  &lt;parameter name="className" value="samples.userguide.example4.Service"/&gt;
  &lt;parameter name="allowedMethods" value="*"/&gt;
 &lt;/service&gt;
&lt;/deployment&gt;
</pre>
<p>The first section defines a Handler called "track" that is implemented by the class samples.userguide.example4.LogHandler. We give this Handler an option to let it know which file to write its messages into.</p>
<p>Then we define a service, LogTestService, which is an RPC service just like we saw above in our first example. The difference is the &lt;requestFlow&gt; element inside the &lt;service&gt; - this indicates a set of Handlers that should be invoked when the service is invoked, before the provider. By inserting a reference to "track", we ensure that the message will be logged each time this service is invoked.</p>
<div class="h5">
<h5>Remote Administration</h5>
</div>
<p>Note that by default, the Axis server is configured to only accept administration requests from the machine on which it resides - if you wish to enable remote administration, you must set the "enableRemoteAdmin" property of the AdminService to <strong>true</strong>. To do this, find the "server-config.wsdd" file in your webapp's WEB-INF directory. In it, you'll see a deployment for the AdminService. Add an option as follows:</p>
<pre class="xml">&lt;service name="AdminService" provider="java:MSG"&gt;
  &lt;parameter name="className" value="org.apache.axis.util.Admin"/&gt;
  &lt;parameter name="allowedMethods" value="*"/&gt;
  <strong>&lt;parameter name="enableRemoteAdmin" value="true"/&gt;
</strong>&lt;/service&gt;
</pre>
<p>
<strong>WARNING: enabling remote administration may give unauthorized parties access to your machine. If you do this, please make sure to add security to your configuration!</strong>
</p>
<div class="h5">
<h5>Service Styles - RPC, Document, Wrapped, and Message</h5>
</div>
<p>There are four "styles" of service in Axis. <strong>RPC</strong> services use the SOAP RPC conventions, and also the SOAP "section 5" encoding. <strong>Document</strong> services do not use any encoding (so in particular, you won't see multiref object serialization or SOAP-style arrays on the wire) but DO still do XML&lt;-&gt;Java databinding. <strong>Wrapped</strong> services are just like document services, except that rather than binding the entire SOAP body into one big structure, they "unwrap" it into individual parameters. <strong>Message</strong> services receive and return arbitrary XML in the SOAP Envelope without any type mapping / data binding. If you want to work with the raw XML of the incoming and outgoing SOAP Envelopes, write a message service.</p>
<div class="h5">
<h5>RPC services</h5>
</div>
<p>RPC services are the default in Axis. They are what you get when you deploy services with &lt;service ... provider="java:RPC"&gt; or &lt;service ... style="RPC"&gt;. RPC services follow the SOAP RPC and encoding rules, which means that the XML for an RPC service will look like the "echoString" example above - each RPC invocation is modeled as an outer element which matches the operation name, containing inner elements each of which maps to a parameter of the operation. Axis will deserialize XML into Java objects which can be fed to your service, and will serialize the returned Java object(s) from your service back into XML. Since RPC services default to the soap section 5 encoding rules, objects will be encoded via "multi-ref" serialization, which allows object graphs to be encoded. (See the SOAP spec for more on multi-ref serialization.)</p>
<div class="h5">
<h5>Document / Wrapped services</h5>
</div>
<p>Document services and wrapped services are similar in that neither uses the SOAP encoding for data; it's just plain old XML schema. In both cases, however, Axis still "binds" Java representations to the XML (see the <a href="##DataMapping">databinding</a> section for more), so you end up dealing with Java objects, not directly with XML constructs.</p>
<p>A good place to start in describing the difference between document and wrapped services is with a sample SOAP message containing a purchase order:</p>
<pre class="xml">&lt;soap:Envelope xmlns="http://xml.apache.org/axis/wsdd/"
   xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;
  &lt;soap:Body&gt;
 &lt;myNS:PurchaseOrder xmlns:myNS="http://commerce.com/PO"&gt;
   &lt;item&gt;SK001&lt;/item&gt;
   &lt;quantity&gt;1&lt;/quantity&gt;
   &lt;description&gt;Sushi Knife&lt;/description&gt;
 &lt;/myNS:PurchaseOrder&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;
</pre>
<p>The relevant schema for the PurchaseOrder looks like this:</p>
<pre class="xml">&lt;schema targetNamespace="http://commerce.com/PO"&gt;
  &lt;complexType name="POType"&gt;
 &lt;sequence&gt;
   &lt;element name="item" type="xsd:string"/&gt;
   &lt;element name="quantity" type="xsd:int"/&gt;
   &lt;element name="description" type="xsd:string"/&gt;
 &lt;/sequence&gt;
  &lt;/complexType&gt;
  &lt;element name="PurchaseOrder" type="POType"/&gt;
&lt;/schema&gt;
</pre>
<p>For a <strong>document</strong> style service, this would map to a method like this:</p>
<p>public void method(PurchaseOrder po)</p>
<p>In other words, the ENTIRE &lt;PurchaseOrder&gt; element would be handed to your method as a single bean with three fields inside it. On the other hand, for a <strong>wrapped</strong> style service, it would map to a method like this:</p>
<p>public void purchaseOrder(String item, int quantity, String description)</p>
<p>Note that in the "wrapped" case, the &lt;PurchaseOrder&gt; element is a "wrapper" (hence the name) which only serves to indicate the correct operation. The arguments to our method are what we find when we "unwrap" the outer element and take each of the inner ones as a parameter.</p>
<p>The document or wrapped style is indicated in WSDD as follows:</p>
<p>&lt;service ... style="document"&gt;&lt;service ... style="document"&gt; for document style<br> &lt;service ... style="wrapped"&gt;&lt;service ... style="wrapped"&gt; for wrapped style</p>
<p>In most cases you won't need to worry about document or wrapped services if you are starting from a WSDL document (<a href="##WSDL">see below</a>).</p>
<div class="h5">
<h5>Message services</h5>
</div>
<p>Finally, we arrive at "Message" style services, which should be used when you want Axis to step back and let your code at the actual XML instead of turning it into Java objects. There are four valid signatures for your message-style service methods:</p>
<p>
<span class="codefrag">public Element [] method(Element [] bodies);</span><span class="codefrag"> public SOAPBodyElement [] method (SOAPBodyElement [] bodies);</span><span class="codefrag"> public Document method(Document body); public void method(SOAPEnvelope req, SOAPEnvelope resp);</span>
</p>
<p>The first two will pass your method arrays of either DOM Elements or SOAPBodyElements - the arrays will contain one element for each XML element inside the &lt;soap:body&gt; in the envelope.</p>
<p>The third signature will pass you a DOM Document representing the &lt;soap:body&gt;, and expects the same in return.</p>
<p>The fourth signature passes you two SOAPEnvelope objects representing the request and response messages. This is the signature to use if you need to look at or modify headers in your service method. Whatever you put into the response envelope will automatically be sent back to the caller when you return. Note that the response envelope may already contain headers which have been inserted by other Handlers.</p>
<p>
<strong>Message Example</strong>
</p>
<p>A sample message service can be found in <a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java/samples/message/MessageService.java">samples/message/MessageService.java</a>. The service class, <span class="codefrag">MessageService</span>, has one public method, <span class="codefrag">echoElements</span>, which matches the first of the three method signatures above:</p>
<pre class="example">public Element[] echoElements(Element [] elems) 
</pre>
<p>The <span class="codefrag">MsgProvider</span> handler calls the method with an array of <span class="codefrag">org.w3c.dom.Element</span> objects that correspond to the immediate children of the incoming message's SOAP Body. Often, this array will contain a single Element (perhaps the root element of some XML document conforming to some agreed-upon schema), but the SOAP Body can handle any number of children. The method returns an <span class="codefrag">Element[]</span> array to be returned in the SOAP body of the response message.</p>
<p>Message services must be deployed with a WSDD file. Here is the full WSDD for the <span class="codefrag">MessageService</span> class:</p>
<pre class="XML">&lt;deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/"
   xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
   xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"&gt;
  &lt;service name="MessageService" style="message"&gt;
 &lt;parameter name="className" value="samples.message.MessageService"/&gt;
 &lt;parameter name="allowedMethods" value="echoElements"/&gt;
  &lt;/service&gt;<br>&lt;/deployment&gt;
</pre>
<p>Note that the "style" attribute is different from the RPC deployment example. The "message" style tells Axis that this service is to be handled by <span class="codefrag">org.apache.axis.providers.java.MsgProvider</span> rather than <span class="codefrag">org.apache.axis.providers.java.RPCProvider</span>.</p>
<p>You can test this service by deploying it, then running samples.message.TestMsg (look at the source to see what the test driver does).</p>
<p>
<a name="java/user-guide.html#DataMapping"></a>
</p>
<div class="h5">
<h5>XML &lt;-&gt; Java Data Mapping in Axis</h5>
</div>
<div class="h5">
<h5>How your Java types map to SOAP/XML types</h5>
</div>
<p>Interoperability, <em>interop</em>, is an ongoing challenge between SOAP implementations. If you want your service to work with other platforms and implementations, you do need to understand the issues. There are some <a href="#reading.html#interop">external articles</a> on the subject that act as a good starting place. The basic mapping between Java types and WSDL/XSD/SOAP in Axis is determined by the JAX-RPC specification. Read chapters 4 and 5 of the <a href="http://java.sun.com/xml/jaxrpc/">specification</a> to fully understand how things are converted. Here are some of the salient points.</p>
<div class="h5">
<h5>Standard mappings from WSDL to Java</h5>
</div>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td>xsd:base64Binary</td><td><tt>byte[]</tt></td>
</tr>
<tr class="a">
<td>xsd:boolean</td><td><tt>boolean</tt></td>
</tr>
<tr class="b">
<td>xsd:byte</td><td><tt>byte</tt></td>
</tr>
<tr class="a">
<td>xsd:dateTime</td><td><tt>java.util.Calendar</tt></td>
</tr>
<tr class="b">
<td>xsd:decimal</td><td><tt>java.math.BigDecimal</tt></td>
</tr>
<tr class="a">
<td>xsd:double</td><td><tt>double</tt></td>
</tr>
<tr class="b">
<td>xsd:float</td><td><tt>float</tt></td>
</tr>
<tr class="a">
<td>xsd:hexBinary</td><td><tt>byte[]</tt></td>
</tr>
<tr class="b">
<td>xsd:int</td><td><tt>int</tt></td>
</tr>
<tr class="a">
<td>xsd:integer</td><td><tt>java.math.BigInteger</tt></td>
</tr>
<tr class="b">
<td>xsd:long</td><td><tt>long</tt></td>
</tr>
<tr class="a">
<td>xsd:QName</td><td><tt>javax.xml.namespace.QName</tt></td>
</tr>
<tr class="b">
<td>xsd:short</td><td><tt>short</tt></td>
</tr>
<tr class="a">
<td>xsd:string</td><td><tt>java.lang.String</tt></td>
</tr>
</table>
<p>If the WSDL says that an object can be <tt>nillable</tt>, that is the caller may choose to return a value of <tt>nil</tt>, then the primitive data types are replaced by their wrapper classes, such as Byte, Double, Boolean, etc.</p>
<div class="h5">
<h5>SOAP Encoding Datatypes</h5>
</div>
<p>Alongside the XSD datatypes are the SOAP 'Section 5' datatypes that are all nillable, and so only ever map to the wrapper classes. These types exist because they all support the "ID" and "HREF" attributes, and so will be used when in an RPC-encoded context to support multi-ref serialization.</p>
<div class="h5">
<h5>Exceptions</h5>
</div>
<p>This is an area which causes plenty of confusion, and indeed, the author of this section is not entirely sure how everything works, especially from an interop perspective. This means treat this section as incomplete and potentially inaccurate. See also section 5.5.5 and chapter 14 in the JAX-RPC specification</p>
<div class="h5">
<h5>RemoteExceptions map to SOAP Faults</h5>
</div>
<p>If the server method throws a <tt>java.rmi.RemoteException</tt> then this will be mapped into a SOAP Fault. The <tt>faultcode</tt> of this will contain the classname of the fault. The recipient is expected to deserialize the body of the fault against the classname.</p>
<p>Obviously, if the recipient does not know how to create an instance of the received fault, this mechanism does not work. Unless you include information about the exception class in the WSDL description of the service, or sender and receiver share the implementation, you can only reliably throw <tt>java.rmi.RemoteException</tt> instances, rather than subclasses.</p>
<p>When an implementation in another language receives such an exception, it should see the name of the class as the faultCode, but still be left to parse the body of the exception. You need to experiment to find out what happens there.</p>
<div class="h5">
<h5>Exceptions are represented as wsdl:fault elements</h5>
</div>
<p>If a method is marked as throwing an <tt>Exception</tt> that is not an instance or a subclass of <tt>java.rmi.RemoteException</tt>, then things are subtly different. The exception is no longer a SOAP Fault, but described as a <tt>wsdl:fault</tt> in the WSDL of the method. According to the JAX-RPC specification, your subclass of Exception must have accessor methods to access all the fields in the object to be marshalled <em>and</em> a constructor that takes as parameters all the same fields (i.e, arguments of the same name and type). This is a kind of immutable variant of a normal <a href="http://java.sun.com/products/javabeans">JavaBean</a>. The fields in the object must be of the datatypes that can be reliably mapped into WSDL.</p>
<p>If your exception meets this specification, then the WSDL describing the method will describe the exception too, enabling callers to create stub implementations of the exception, regardless of platform.</p>
<p>Again, to be sure of interoperability, you need to be experiment a bit. Remember, the calling language may not have the notion of Exceptions, or at least not be as rigorous as Java in the rules as to how exceptions must be handled.</p>
<div class="h5">
<h5>Java Collections</h5>
</div>
<p>Some of the Collection classes, such as <tt>Hashtable</tt>, do have serializers, but there is no formal interoperability with other SOAP implementations, and nothing in the SOAP specifications which covers complex objects. The most reliable way to send aggregate objects is to use arrays. In particular, .NET cannot handle them, though many Java SOAP implementations can marshall and unmarshall hash tables.</p>
<div class="h5">
<h5>Arbitrary Objects without Pre-Registration</h5>
</div>
<p>You cannot send arbitrary Java objects over the wire and expect them to be understood at the far end. With RMI you can send and receive <tt>Serializable</tt> Java objects, but that is because you are running Java at both ends. <strong>Axis will only send objects for which there is a registered Axis serializer.</strong> This document shows below how to use the BeanSerializer to serialize any class that follows the JavaBean pattern of accessor and mutator. To serve up objects you must either register your classes with this BeanSerializer, or there must be serialization support built in to Axis.</p>
<div class="h5">
<h5>Remote References</h5>
</div>
<p>Remote references are neither part of the SOAP specification, nor the JAX-RPC specification. You cannot return some object reference and expect the caller to be able to use it as an endpoint for SOAP calls or as a parameter in other calls. Instead you must use some other reference mechanism, such as storing them in a <tt>HashMap</tt> with numeric or string keys that can be passed over the wire.</p>
<div class="h5">
<h5>What Axis can send via SOAP with restricted Interoperability</h5>
</div>
<div class="h5">
<h5>What Axis can not send via SOAP</h5>
</div>
<div class="h5">
<h5>Encoding Your Beans - the BeanSerializer</h5>
</div>
<p>Axis includes the ability to serialize/deserialize, without writing any code, arbitrary Java classes which follow the standard <a href="http://java.sun.com/products/javabeans">JavaBean</a> pattern of get/set accessors. All you need to do is tell Axis which Java classes map to which XML Schema types. Configuring a bean mapping looks like this:</p>
<pre class="xml">&lt;beanMapping qname="ns:local" xmlns:ns="someNamespace"
    languageSpecificType="java:my.java.thingy"/&gt;
</pre>
<p>The &lt;beanMapping&gt; tag maps a Java class (presumably a bean) to an XML QName. You'll note that it has two important attributes, <strong>qname</strong> and <strong>languageSpecificType</strong>. So in this case, we'd be mapping the "my.java.thingy" class to the XML QName [someNamespace]:[local].</p>
<p>Let's take a look at how this works in practice. Go look at <a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java/samples/userguide/example5/BeanService.java">samples/userguide/example5/BeanService.java</a>. The key thing to notice is that the argument to the service method is an Order object. Since Order is not a basic type which Axis understands by default, trying to run this service without a type mapping will result in a fault. (If you want to try this for yourself, you can use the bad-deploy.wsdd file in the example5 directory.) But if we put a beanMapping into our deployment, all will be well. Here's how to run this example (from the example5 directory):</p>
<pre class="example">% java org.apache.axis.client.AdminClient -llocal:///AdminService deploy.wsdd
&lt;Admin&gt;Done processing&lt;/Admin&gt;

% java samples.userguide.example5.Client -llocal://
Hi, Glen Daniels!

You seem to have ordered the following:

1 of item : mp3jukebox
4 of item : 1600mahBattery

If this had been a real order processing system, we'd probably have charged
you about now.
%

</pre>
<div class="h5">
<h5>When Beans Are Not Enough - Custom Serialization</h5>
</div>
<p>Just as JWS deployment is sometimes not flexible enough to meet all needs, the default bean serialization model isn't robust enough to handle every case either. At times there will be non-bean Java classes (especially in the case of pre-existing assets) which you need to map to/from XML, and there also may be some custom XML schema types which you want to map into Java in particular ways. Axis gives you the ability to write custom serializers/deserializers, and some tools to help make your life easier when you do so.</p>
<p>
<em>TBD - this section will be expanded in a future version! For now look at the DataSer/DataDeser classes (in samples/encoding). Also look at the BeanSerializer, BeanDeserializer, ArraySerializer, ArrayDeserializer and other classes in the org.apache.axis.encoding.ser package.</em>
</p>
<div class="h5">
<h5>Deploying custom mappings - the &lt;typeMapping&gt; tag</h5>
</div>
<p>Now that you've built your serializers and deserializers, you need to tell Axis which types they should be used for. You do this with a typeMapping tag in WSDD, which looks like this:</p>
<pre class="xml">&lt;typeMapping qname="ns:local" xmlns:ns="someNamespace"
    languageSpecificType="java:my.java.thingy"
    serializer="my.java.Serializer"
    deserializer="my.java.DeserializerFactory"
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/&gt;
</pre>
<p>This looks a lot like the &lt;beanMapping&gt; tag we saw earlier, but there are three extra attributes. One, <strong>serializer</strong>, is the Java class name of the Serializer <em>factory</em> which gets the serializer to be used to marshal an object of the specified Java class (i.e., my.java.thingy) into XML. Another, <strong>deserializer</strong>, is the class name of a Deserializer <em>factory</em> that gets the deserializer to be used to unmarshall XML into the correct Java class. The final attribute, the <strong>encodingStyle</strong>, which is SOAP encoding.</p>
<p>(The &lt;beanMapping&gt; tag is really just shorthand for a &lt;typeMapping&gt; tag with <tt>serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"</tt>, <tt>deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"</tt>, and <tt>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"</tt>, but clearly it can save a lot of typing!)</p>
<p>
<a name="java/user-guide.html#WSDL"></a>
</p>
<div class="h5">
<h5>Using WSDL with Axis</h5>
</div>
<p>The <a href="http://www.w3.org/TR/wsdl">Web Service Description Language</a> is a specification authored by IBM and Microsoft, and supported by many other organizations. WSDL serves to describe Web Services in a structured way. A WSDL description of a service tells us, in a machine-understandable way, the interface to the service, the data types it uses, and where the service is located. Please see the spec (follow the link in the first sentence) for details about WSDL's format and options.</p>
<p>Axis supports WSDL in three ways:</p>
<ol>
<li>When you deploy a service in Axis, users may then access your service's URL with a standard web browser and by appending "?WSDL" to the end of the URL, they will obtain an automatically-generated WSDL document which describes your service.</li>
<li>We provide a "WSDL2Java" tool which will build Java proxies and skeletons for services with WSDL descriptions.</li>
<li>We provide a "Java2WSDL" tool which will build WSDL from Java classes.</li>
</ol>
<p>
<a name="java/user-guide.html#WSDLObtaining"></a>
</p>
<div class="h5">
<h5>?WSDL: Obtaining WSDL for deployed services</h5>
</div>
<p>When you make a service available using Axis, there is typically a unique URL associated with that service. For JWS files, that URL is simply the path to the JWS file itself. For non-JWS services, this is usually the URL "http://&lt;host&gt;/axis/services/&lt;service-name&gt;".</p>
<p>If you access the service URL in a browser, you'll see a message indicating that the endpoint is an Axis service, and that you should usually access it using SOAP. However, if you tack on "?wsdl" to the end of the URL, Axis will automatically generate a service description for the deployed service, and return it as XML in your browser (try it!). The resulting description may be saved or used as input to proxy-generation, described next. You can give the WSDL-generation URL to your online partners, and they'll be able to use it to access your service with toolkits like .NET, SOAP::Lite, or any other software which supports using WSDL.</p>
<p>You can also generate WSDL files from existing Java classes (see <a href="##Java2WSDL">Java2WSDL: Building WSDL from Java</a> ).<br>
</p>
<p>
<a name="java/user-guide.html#WSDL2Java"></a>
</p>
<div class="h5">
<h5>WSDL2Java: Building stubs, skeletons, and data types from WSDL</h5>
</div>
<div class="h5">
<h5>Client-side bindings</h5>
</div>
<p>You'll find the Axis WSDL-to-Java tool in "org.apache.axis.wsdl.WSDL2Java". The basic invocation form looks like this:</p>
<pre class="example">% java org.apache.axis.wsdl.WSDL2Java (WSDL-file-URL)
</pre>
<p>This will generate only those bindings necessary for the client. Axis follows the JAX-RPC specification when generating Java client bindings from WSDL. For this discussion, assume we executed the following:</p>
<pre class="example">% cd samples/addr
% java org.apache.axis.wsdl.WSDL2Java AddressBook.wsdl
</pre>
<p>The generated files will reside in the directory "AddressFetcher2". They are put here because that is the target namespace from the WSDL and namespaces map to Java packages. Namespaces will be discussed in detail later.</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><strong>WSDL clause</strong></td><td><strong>Java class(es) generated</strong></td>
</tr>
<tr class="a">
<td>For each entry in the type section</td><td>A java class</td>
</tr>
<tr class="b">
<td></td><td>A holder if this type is used as an inout/out parameter</td>
</tr>
<tr class="a">
<td>For each portType</td><td>A java interface</td>
</tr>
<tr class="b">
<td>For each binding</td><td>A stub class</td>
</tr>
<tr class="a">
<td>For each service</td><td>A service interface</td>
</tr>
<tr class="b">
<td></td><td>A service implementation (the locator)</td>
</tr>
</table>
<p>There is an <a href="#ant/axis-wsdl2java.html">Ant Task</a> to integrate this action with an Ant based build process.</p>
<div class="h5">
<h5>Types</h5>
</div>
<p>The Java class generated from a WSDL type will be named from the WSDL type. This class will typically, though not always, be a bean. For example, given the WSDL (the WSDL used throughout the WSDL2Java discussion is from the <a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java/samples/addr/AddressBook.wsdl">Address Book sample</a>):</p>
<pre class="example">&lt;xsd:complexType name="phone"&gt;
  &lt;xsd:all&gt;
 &lt;xsd:element name="areaCode" type="xsd:int"/&gt;
 &lt;xsd:element name="exchange" type="xsd:string"/&gt;
 &lt;xsd:element name="number" type="xsd:string"/&gt;
  &lt;/xsd:all&gt;
&lt;/xsd:complexType&gt;
</pre>
<p>WSDL2Java will generate:</p>
<pre class="example">public class Phone implements java.io.Serializable {
 public Phone() {...}
 public int getAreaCode() {...}
 public void setAreaCode(int areaCode) {...}
 public java.lang.String getExchange() {...}
 public void setExchange(java.lang.String exchange) {...}
 public java.lang.String getNumber() {...}
 public void setNumber(java.lang.String number) {...}
 public boolean equals(Object obj) {...}
 public int hashCode() {...}
}
</pre>
<div class="h5">
<h5>Mapping XML to Java types : Metadata</h5>
</div>
<p>Notice in the mapping above, the XML type name is "phone" and the generated Java class is "Phone" - the capitalization of the first letter has changed to match the Java coding convention that classes begin with an uppercase letter. This sort of thing happens a lot, because the rules for expressing XML names/identifiers are much less restrictive than those for Java. For example, if one of the sub-elements in the "phone" type above was named "new", we couldn't just generate a Java field called "new", since that is a reserved word and the resultant source code would fail to compile.</p>
<p>To support this kind of mapping, and also to enable the serialization/deserialization of XML attributes, we have a <strong>type metadata</strong> system which allows us to associate Java data classes with descriptors which control these things.</p>
<p>When the WSDL2Java tool creates a data bean like the Phone class above, it notices if the schema contains any attributes, or any names which do not map directly to Java field/property names. If it finds any of these things, it will generate a static piece of code to supply a <strong>type descriptor</strong> for the class. The type descriptor is essentially a collection of <strong>field descriptors</strong>, each of which maps a Java field/property to an XML element or attribute.</p>
<p>To see an example of this kind of metadata, look at the "test.encoding.AttributeBean" class in the Axis source, or generate your own bean from XML which uses attributes or names which would be illegal in Java.</p>
<div class="h5">
<h5>Holders</h5>
</div>
<p>This type may be used as an inout or out parameter. Java does not have the concept of inout/out parameters. In order to achieve this behavior, JAX-RPC specifies the use of holder classes. A holder class is simply a class that contains an instance of its type. For example, the holder for the Phone class would be:</p>
<pre class="example">package samples.addr.holders;
public final class PhoneHolder implements javax.xml.rpc.holders.Holder {
 public samples.addr.Phone value;

 public PhoneHolder()
 {
 }

 public PhoneHolder(samples.addr.Phone value) {
  this.value = value;
 }
}
</pre>
<p>A holder class is <strong>only</strong> generated for a type if that type is used as an inout or out parameter. Note that the holder class has the suffix "Holder" appended to the class name, and it is generated in a sub-package with the "holders".</p>
<p>The holder classes for the primitive types can be found in javax.xml.rpc.holders.</p>
<div class="h5">
<h5>PortTypes</h5>
</div>
<p>The Service Definition Interface (SDI) is the interface that's derived from a WSDL's portType. This is the interface you use to access the operations on the service. For example, given the WSDL:</p>
<pre class="example">&lt;message name="empty"&gt;
&lt;message name="AddEntryRequest"&gt;
  &lt;part name="name" type="xsd:string"/&gt;
  &lt;part name="address" type="typens:address"/&gt;
&lt;/message&gt;
&lt;portType name="AddressBook"&gt;
  &lt;operation name="addEntry"&gt;
 &lt;input message="tns:AddEntryRequest"/&gt;
 &lt;output message="tns:empty"/&gt;
  &lt;/operation&gt;
&lt;/portType&gt;
</pre>
<p>WSDL2Java will generate:</p>
<pre class="example">public interface AddressBook extends java.rmi.Remote {
 public void addEntry(String name, Address address) throws
  java.rmi.RemoteException;
}
</pre>
<p>A note about the name of the SDI. The name of the SDI is typically the name of the portType. However, to construct the SDI, WSDL2Java needs information from both the portType <strong>and</strong> the binding. (This is unfortunate and is a topic of discussion for WSDL version 2.)</p>
<p>JAX-RPC says (section 4.3.3): "The name of the Java interface is mapped from the name attribute of the wsdl:portType element. ... If the mapping to a service definition interface uses elements of the wsdl:binding ..., then the name of the service definition interface is mapped from the name of the wsdl:binding element."</p>
<p>Note the name of the spec. It contains the string "RPC". So this spec, and WSDL2Java, assumes that the interface generated from the portType is an RPC interface. If information from the binding tells us otherwise (in other words, we use elements of the wsdl:binding), then the name of the interface is derived instead from the binding.</p>
<p>Why? We could have one portType - pt - and two bindings - bRPC and bDoc. Since document/literal changes what the interface looks like, we cannot use a single interface for both of these bindings, so we end up with two interfaces - one named pt and another named bDoc - and two stubs - bRPCStub (which implements pt) and bDocStub (which implements bDoc).</p>
<p>Ugly, isn't it? But you can see why it's necessary. Since document/literal changes what the interface looks like, and we could have more than one binding referring to a single portType, we have to create more than one interface, and each interface must have a unique name.<br>
</p>
<div class="h5">
<h5>Bindings</h5>
</div>
<p>A Stub class implements the SDI. Its name is the binding name with the suffix "Stub". It contains the code which turns the method invocations into SOAP calls using the Axis Service and Call objects. It stands in as a <strong>proxy</strong> (another term for the same idea) for the remote service, letting you call it exactly as if it were a local object. In other words, you don't need to deal with the endpoint URL, namespace, or parameter arrays which are involved in dynamic invocation via the Service and Call objects. The stub hides all that work for you.</p>
<p>Given the following WSDL snippet:</p>
<pre class="example">&lt;binding name="AddressBookSOAPBinding" type="tns:AddressBook"&gt;
  ...
&lt;/binding&gt;
</pre>
<p>WSDL2Java will generate:</p>
<pre class="example">public class AddressBookSOAPBindingStub extends org.apache.axis.client.Stub
          implements AddressBook {
 public AddressBookSOAPBindingStub() throws org.apache.axis.AxisFault
 {...}

 public AddressBookSOAPBindingStub(URL endpointURL, 
           javax.xml.rpc.Service service)
  throws org.apache.axis.AxisFault
 {...}
<br> public AddressBookSOAPBindingStub(javax.xml.rpc.Service service)
  throws org.apache.axis.AxisFault
 {...}
<br> public void addEntry(String name, Address address) throws RemoteException
 {...}<br>}
</pre>
<div class="h5">
<h5>Services</h5>
</div>
<p>Normally, a client program would not instantiate a stub directly. It would instead instantiate a service locator and call a get method which returns a stub. This locator is derived from the service clause in the WSDL. WSDL2Java generates two objects from a service clause. For example, given the WSDL:</p>
<pre class="example">&lt;service name="AddressBookService"&gt;
  &lt;port name="AddressBook" binding="tns:AddressBookSOAPBinding"&gt;
 &lt;soap:address location="http://localhost:8080/axis/services/AddressBook"/&gt;
  &lt;/port&gt;
&lt;/service&gt;
</pre>
<p>WSDL2Java will generate the service interface:</p>
<pre class="example">public interface AddressBookService extends javax.xml.rpc.Service {
 public String getAddressBookAddress();
<br> public AddressBook getAddressBook() throws javax.xml.rpc.ServiceException;
<br> public AddressBook getAddressBook(URL portAddress)
  throws javax.xml.rpc.ServiceException;
}
</pre>
<p>WSDL2Java will also generate the locator which implements this interface:</p>
<pre class="example">public class AddressBookServiceLocator extends org.apache.axis.client.Service
            implements AddressBookService {
 ...
}
</pre>
<p>The service interface defines a get method for each port listed in the service element of the WSDL. The locator is the implementation of this service interface. It implements these get methods. It serves as a locator for obtaining Stub instances. The Service class will by default make a Stub which points to the endpoint URL described in the WSDL file, but you may also specify a different URL when you ask for the PortType.</p>
<p>A typical usage of the stub classes would be as follows:</p>
<pre class="example">public class Tester
{
 public static void main(String [] args) throws Exception {
  // Make a service
  AddressBookService service = new AddressBookServiceLocator();
 
  // Now use the service to get a stub which implements the SDI.
  AddressBook port = service.getAddressBook();
 
  // Make the actual call
  Address address = new Address(...);
  port.addEntry("Russell Butek", address);
 }<br>}
</pre>
<div class="h5">
<h5>Server-side bindings</h5>
</div>
<p>Just as a stub is the client side of a Web Service represented in Java, a <strong>skeleton</strong> is a Java framework for the server side. To make skeleton classes, you just specify the "--server-side --skeletonDeploy true" options to WSDL2Java. For instance, using the AddressBook.wsdl as we had above:</p>
<pre class="example">% java org.apache.axis.wsdl.WSDL2Java --server-side
  --skeletonDeploy true AddressBook.wsdl
</pre>
<p>You will see that WSDL2Java generates all the classes that were generated before for the client, but it generates a few new files:<br>
<br>
</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><strong>WSDL clause</strong></td><td><strong>Java class(es) generated</strong></td>
</tr>
<tr class="a">
<td>For each binding</td><td>A skeleton class</td>
</tr>
<tr class="b">
<td></td><td>An implementation template class</td>
</tr>
<tr class="a">
<td>For all services</td><td>One deploy.wsdd file</td>
</tr>
<tr class="b">
<td></td><td>One undeploy.wsdd file</td>
</tr>
</table>
<p>If you don't specify the "--skeletonDeploy true" option, a skeleton will not be generated. Instead, the generated deploy.wsdd will indicate that the implementation class is deployed directly. In such cases, the deploy.wsdd contains extra meta data describing the operations and parameters of the implementation class. Here is how you run WSDL2Java to deploy directly to the implementation:</p>
<pre class="example">% java org.apache.axis.wsdl.WSDL2Java --server-side AddressBook.wsdl
</pre>
<p>And here are the server side files that are generated:<br>
<br>
</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><strong>WSDL clause</strong></td><td><strong>Java class(es) generated</strong></td>
</tr>
<tr class="a">
<td>For each binding</td><td>An implementation template class</td>
</tr>
<tr class="b">
<td>For all services</td><td>One deploy.wsdd file with operation meta data</td>
</tr>
<tr class="a">
<td></td><td>One undeploy.wsdd file</td>
</tr>
</table>
<div class="h5">
<h5>Bindings</h5>
</div>
<div class="h5">
<h5>Skeleton Description (for Skeleton Deployment)</h5>
</div>
<p>The skeleton class is the class that sits between the Axis engine and the actual service implementation. Its name is the binding name with suffix "Skeleton". For example, for the AddressBook binding, WSDL2Java will generate:</p>
<pre class="example">public class AddressBookSOAPBindingSkeleton implements AddressBook,
           org.apache.axis.wsdl.Skeleton {
 private AddressBook impl;
 
 public AddressBookSOAPBindingSkeleton() {
  this.impl = new AddressBookSOAPBindingImpl();
 }
 
 public AddressBookSOAPBindingSkeleton(AddressBook impl) {
  this.impl = impl;
 }
 
 public void addEntry(java.lang.String name, Address address)
  throws java.rmi.RemoteException
 {
  impl.addEntry(name, address);
 }
}
</pre>
<p>(The real skeleton is actually much richer. For brevity we just show you the basic skeleton.)</p>
<p>The skeleton contains an implementation of the AddressBook service. This implementation is either passed into the skeleton on construction, or an instance of the generated implementation is created. When the Axis engine calls the skeleton's addEntry method, it simply delegates the invocation to the real implementation's addEntry method.</p>
<div class="h5">
<h5>Implementation Template Description</h5>
</div>
<p>WSDL2Java also generates an implementation template from the binding:</p>
<pre class="example">public class AddressBookSOAPBindingImpl implements AddressBook {
<br> public void addEntry(String name, Address address)
  throws java.rmi.RemoteException {
 }
}
</pre>
<p>This template could actually be used as a test implementation but, as you can see, it doesn't do anything. It is intended that the service writer fill out the implementation from this template.</p>
<p>When WSDL2Java is asked to generate the implementation template (via the --server-side flag), it will ONLY generate it if it does not already exist. If this implementation already exists, it will not be overwritten.</p>
<div class="h5">
<h5>Services</h5>
</div>
<p>The tool also builds you a "deploy.wsdd" and an "undeploy.wsdd" for each service for use with the AdminClient. These files may be used to deploy the service once you've filled in the methods of the Implementation class, compiled the code, and made the classes available to your Axis engine.</p>
<p>
<a name="java/user-guide.html#Java2WSDL"></a>
</p>
<div class="h5">
<h5>Java2WSDL: Building WSDL from Java</h5>
</div>
<p>The Java2WSDL and WSDL2Java emitters make it easy to develop a new web service. The following sections describe the steps in building a web service from a Java interface.<br>
</p>
<div class="h5">
<h5>Step 1: Provide a Java interface or class</h5>
</div>
<p>Write and compile a Java interface (or class) that describes the web service interface. Here is an example interface that describes a web services that can be used to set/query the price of widgets (<a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java/samples/userguide/example6/WidgetPrice.java">samples/userguide/example6/WidgetPrice.java</a>):</p>
<pre class="example">package samples.userguide.example6;
<br>/**
 * Interface describing a web service to set and get Widget prices.
 **/
public interface WidgetPrice {
 public void setWidgetPrice(String widgetName, String price);
 public String getWidgetPrice(String widgetName);
}
</pre>
<p>
<strong>Note:</strong> If you compile your class with debug information, Java2WSDL will use the debug information to obtain the method parameter names.</p>
<div class="h5">
<h5>Step 2: Create WSDL using Java2WSDL</h5>
</div>
<p>Use the Java2WSDL tool to create a WSDL file from the interface above.</p>
<p>Here is an example invocation that produces the wsdl file (<tt>wp.wsdl</tt>) from the interface described in the previous section:</p>
<pre class="example">% java org.apache.axis.wsdl.Java2WSDL -o wp.wsdl
  -l"http://localhost:8080/axis/services/WidgetPrice"
  -n  "urn:Example6" -p"samples.userguide.example6" "urn:Example6"
  samples.userguide.example6.WidgetPrice
</pre>
<p>Where:</p>
<ul>
<li>-o indicates the name of the <strong>output WSDL</strong> file</li>
<li>-l indicates the<strong>location of the service</strong>
</li>
<li>-n is the target <strong>namespace</strong> of the WSDL file</li>
<li>-p indicates a mapping from the <strong>package to a namespace</strong>. There may be multiple mappings.</li>
<li>the class specified contains the interface of the webservice.</li>
</ul>
<p>The output WSDL document will contain the appropriate WSDL types, messages, portType, bindings and service descriptions to support a SOAP rpc, encoding web service. If your specified interface methods reference other classes, the Java2WSDL tool will generate the appropriate xml types to represent the classes and any nested/inherited types. The tool supports JAX-RPC complex types (bean classes), extension classes, enumeration classes, arrays and Holder classes.</p>
<p>The Java2WSDL tool has many additional options which are detailed in the <a href="#reference.html#Java2WSDL">reference guide</a>. There is an <a href="#ant/axis-java2wsdl.html">Ant Task</a> to integrate this action with an Ant based build process.</p>
<div class="h5">
<h5>Step 3: Create Bindings using WSDL2Java</h5>
</div>
<p>Use the generated WSDL file to build the appropriate client/server bindings for the web service (see <a href="##WSDL2Java:Buildingstubs,skeletons,anddata">WSDL2Java</a>):</p>
<pre class="example">% java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true
  -Nurn:Example6 samples.userguide.example6 wp.wsdl
</pre>
<p>This will generate the following files:</p>
<ul>
<li>
<strong>WidgetPriceSoapBindingImpl.java</strong> : Java file containing the default server implementation of the WidgetPrice web service.</li>
<li style="list-style: none">
<br> You will need to modify the *SoapBindingImpl file to add your implementation (see <a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java//samples/userguide/example6/WidgetPriceSoapBindingImpl.java">samples/userguide/example6/WidgetPriceSoapBindingImpl.java</a> ).</li>
<li>
<strong>WidgetPrice.java</strong>: New interface file that contains the appropriate <strong>java.rmi.Remote</strong> usages.</li>
<li>
<strong>WidgetPriceService.java</strong>: Java file containing the client side service interface.</li>
<li>
<strong>WidgetPriceServiceLocator.java</strong>: Java file containing the client side service implementation class.</li>
<li>
<strong>WidgetPriceSoapBindingSkeleton.java</strong>: Server side skeleton.</li>
<li>
<strong>WidgetPriceSoapBindingStub.java</strong>: Client side stub.</li>
<li>
<strong>deploy.wsdd</strong>: Deployment descriptor</li>
<li>
<strong>undeploy.wsdd</strong>: Undeployment descriptor</li>
<li>(data types): Java files will be produced for all of the other types and holders necessary for the web service. There are no additional files for the WidgetPrice web service.</li>
</ul>
<p>Now you have all of the necessary files to build your client/server side code and deploy the web service!</p>
<p>
<a name="java/user-guide.html#published_interfaces"></a>
</p>
<div class="h5">
<h5>Published Axis Interfaces</h5>
</div>
<p>Although you may use any of the interfaces and classes present in Axis, you need to be aware that some are more stable than others since there is a continuing need to refactor Axis to maintain and improve its modularity.</p>
<p>Hence certain interfaces are designated as <em>published</em>, which means that they are relatively stable. As Axis is refactored, the Axis developers will try to avoid changing published interfaces unnecessarily and will certainly consider the impact on users of any modifications.</p>
<p>So if you stick to using only published interfaces, you'll minimise the pain of migrating between releases of Axis. On the other hand, if you decide to use unpublished interfaces, migrating between releases could be an interesting exercise! If you would like an interface to be published, you should make the case for this on the <a href="#mailto:axis-user@ws.apache.org">axis-user</a> mailing list.</p>
<p>The current list of published interfaces is as follows:</p>
<ul>
<li>JAX-RPC interfaces. These interfaces are from JAX-RPC 1.0 specification, and will change only when new versions of the specification are released. <ul>
<li>javax.xml.messaging.Endpoint</li>
<li>javax.xml.messaging.URLEndpoint</li>
<li>javax.xml.rpc.Call</li>
<li>javax.xml.rpc.FaultException</li>
<li>javax.xml.rpc.JAXRPCException</li>
<li>javax.xml.rpc.ParameterMode</li>
<li>javax.xml.rpc.Service</li>
<li>javax.xml.rpc.ServiceException</li>
<li>javax.xml.rpc.ServiceFactory</li>
<li>javax.xml.rpc.Stub</li>
<li>javax.xml.rpc.encoding.DeserializationContext</li>
<li>javax.xml.rpc.encoding.Deserializer</li>
<li>javax.xml.rpc.encoding.DeserializerFactory</li>
<li>javax.xml.rpc.encoding.SerializationContext</li>
<li>javax.xml.rpc.encoding.Serializer</li>
<li>javax.xml.rpc.encoding.SerializerFactory</li>
<li>javax.xml.rpc.encoding.TypeMapping</li>
<li>javax.xml.rpc.encoding.TypeMappingRegistry</li>
<li>javax.xml.rpc.handler.Handler</li>
<li>javax.xml.rpc.handler.HandlerChain</li>
<li>javax.xml.rpc.handler.HandlerInfo</li>
<li>javax.xml.rpc.handler.HandlerRegistry</li>
<li>javax.xml.rpc.handler.MessageContext</li>
<li>javax.xml.rpc.handler.soap.SOAPMessageContext</li>
<li>javax.xml.rpc.holders.BigDecimalHolder</li>
<li>javax.xml.rpc.holders.BigIntegerHolder</li>
<li>javax.xml.rpc.holders.BooleanHolder</li>
<li>javax.xml.rpc.holders.BooleanWrapperHolder</li>
<li>javax.xml.rpc.holders.ByteArrayHolder</li>
<li>javax.xml.rpc.holders.ByteHolder</li>
<li>javax.xml.rpc.holders.ByteWrapperArrayHolder</li>
<li>javax.xml.rpc.holders.ByteWrapperHolder</li>
<li>javax.xml.rpc.holders.CalendarHolder</li>
<li>javax.xml.rpc.holders.DateHolder</li>
<li>javax.xml.rpc.holders.DoubleHolder</li>
<li>javax.xml.rpc.holders.DoubleWrapperHolder</li>
<li>javax.xml.rpc.holders.FloatHolder</li>
<li>javax.xml.rpc.holders.FloatWrapperHolder</li>
<li>javax.xml.rpc.holders.Holder</li>
<li>javax.xml.rpc.holders.IntHolder</li>
<li>javax.xml.rpc.holders.IntegerWrapperHolder</li>
<li>javax.xml.rpc.holders.LongHolder</li>
<li>javax.xml.rpc.holders.LongWrapperHolder</li>
<li>javax.xml.rpc.holders.ObjectHolder</li>
<li>javax.xml.rpc.holders.QNameHolder</li>
<li>javax.xml.rpc.holders.ShortHolder</li>
<li>javax.xml.rpc.holders.ShortWrapperHolder</li>
<li>javax.xml.rpc.holders.StringHolder</li>
<li>javax.xml.rpc.namespace.QName</li>
<li>javax.xml.rpc.server.ServiceLifecycle</li>
<li>javax.xml.rpc.soap.SOAPFault</li>
<li>javax.xml.rpc.soap.SOAPHeaderFault</li>
<li>javax.xml.transform.Source</li>
</ul>
</li>
<li>Axis interfaces. These have less guarantees of stability: <ul>
<li>org.apache.axis.AxisFault</li>
<li>org.apache.axis.Handler</li>
<li>org.apache.axis.DefaultEngineConfigurationFactory</li>
<li>org.apache.axis.EngineConfiguration</li>
<li>org.apache.axis.EngineConfigurationFactory</li>
<li>org.apache.axis.Message</li>
<li>org.apache.axis.MessageContext</li>
<li>org.apache.axis.SOAPPart</li>
<li>org.apache.axis.client.Call</li>
<li>org.apache.axis.client.Service</li>
<li>org.apache.axis.client.ServiceFactory</li>
<li>org.apache.axis.client.Stub</li>
<li>org.apache.axis.client.Transport</li>
<li>org.apache.axis.description.TypeDesc</li>
<li>org.apache.axis.description.AttributeDesc</li>
<li>org.apache.aixs.description.ElementDesc</li>
<li>org.apache.axis.encoding.DeserializationContext</li>
<li>org.apache.axis.encoding.Deserializer</li>
<li>org.apache.axis.encoding.DeserializerFactory</li>
<li>org.apache.axis.encoding.DeserializerTarget</li>
<li>org.apache.axis.encoding.FieldTarget</li>
<li>org.apache.axis.encoding.MethodTarget</li>
<li>org.apache.axis.encoding.SerializationContext</li>
<li>org.apache.axis.encoding.Serializer</li>
<li>org.apache.axis.encoding.SerializerFactory</li>
<li>org.apache.axis.encoding.SimpleType</li>
<li>org.apache.axis.encoding.Target</li>
<li>org.apache.axis.encoding.TypeMapping</li>
<li>org.apache.axis.encoding.TypeMappingRegistry</li>
<li>org.apache.axis.encoding.ser.BaseDeserializerFactory</li>
<li>org.apache.axis.encoding.ser.BaseSerializerFactory</li>
<li>org.apache.axis.encoding.ser.BeanPropertyTarget</li>
<li>org.apache.axis.encoding.ser.SimpleSerializer</li>
<li>org.apache.axis.encoding.ser.SimpleDeserializer</li>
<li>org.apache.axis.session.Session</li>
<li>org.apache.axis.transport.http.SimpleAxisServer</li>
<li>org.apache.axis.transport.jms.SimpleJMSListener</li>
<li>org.apache.axis.utils.BeanProperty</li>
<li>org.apache.axis.wsdl.WSDL2Java</li>
<li>org.apache.axis.wsdl.Java2WSDL</li>
</ul>
</li>
</ul>
<p>
<a name="java/user-guide.html#newbie"></a>
</p>
<div class="h5">
<h5>Newbie Tips: Finding Your Way Around</h5>
</div>
<p>So you've skimmed the User's Guide and written your first .jws service, and everything went perfectly! Now it's time to get to work on a real project, and you have something specific you need to do that the User's Guide didn't cover. It's a simple thing, and you know it must be in Axis <em>somewhere</em>, but you don't know what it's called or how to get at it. This section is meant to give you some starting points for your search.</p>
<div class="h5">
<h5>Places to Look for Clues</h5>
</div>
<p>Here are the big categories.</p>
<ul>
<li>
<a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/ws-axis/java/samples/"><strong>The samples.</strong></a> These examples are complete with deployment descriptors and often contain both client and server code.</li>
<li>
<strong>The Javadocs.</strong> Full Javadocs are included with the binary distribution. The Javadocs can be intimidating at first, but once you know the major user classes, they are one of the fastest ways to an answer.</li>
<li>
<strong>The mailing list archives.</strong> If you know what you want but don't know what it's called in Axis, this is the best place to look. Chances are someone has wanted the same thing and someone else has used (or developed) Axis long enough know the name.</li>
<li>Consult the <a href="http://ws.apache.org/axis">Axis web site</a> for updated documentation and the <a 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>
<strong>WSDL2Java.</strong> Point WSDL2Java at a known webservice that does some of the things you want to do. See what comes out. This is useful even if you will be writing the actual service or client from scratch. If you want nice, human-readable descriptions of existing web services, try <a href="http://www.xmethods.net">http://www.xmethods.net</a>.</li>
</ul>
<div class="h5">
<h5>Classes to Know</h5>
</div>
<div class="h5">
<h5>org.apache.axis.MessageContext</h5>
</div>
<p>The answer to most "where do I find..." questions for an Axis web service is "in the MessageContext." Essentially everything Axis knows about a given request/response can be retrieved via the MessageContext. Here Axis stores:</p>
<ul>
<li>A reference to the AxisEngine</li>
<li>The request and response messages (<span class="codefrag">org.apache.axis.Message</span> objects available via getter and setter methods)</li>
<li>Information about statefulness and service scope (whether the service is maintaining session information, etc.)</li>
<li>The current status of processing (whether or not the "pivot" has been passed, which determines whether the request or response is the current message)</li>
<li>Authentication information (username and password, which can be provided by a servlet container or other means)</li>
<li>Properties galore. Almost anything you would want to know about the message can be retrieved via <span class="codefrag">MessageContext.getProperty()</span>. You only need to know the name of the property. This can be tricky, but it is usually a constant, like those defined in <span class="codefrag">org.apache.axis.transport.http.HTTPConstants</span>. So, for example, to retrieve the ServletContext for the Axis Servlet, you would want: <span class="codefrag">((HttpServlet)msgC.getProperty(HTTPConstants.MC_HTTP_SERVLET)).getServletContext();</span>
<br>
</li>
</ul>
<p>From within your service, the current MessageContext object is always available via the static method <span class="codefrag">MessageContext.getCurrentContext()</span>. This allows you to do any needed customization of the request and response methods, even from within an RPC service that has no explicit reference to the MessageContext.</p>
<div class="h5">
<h5>org.apache.axis.Message</h5>
</div>
<p>An <span class="codefrag">org.apache.axis.Message</span> object is Axis's representation of a SOAP message. The request and response messages can be retrieved from the MessageContext as described above. A Message has:</p>
<ul>
<li>MIME headers (if the message itself has MIME information)</li>
<li>Attachments (if the message itself has attachments)</li>
<li>A SOAPPart (and a convenience method for quick retrieval of the SOAPPart's SOAPEnvelope). The SOAPPart gives you access to the SOAP "guts" of the message (everything inside the &lt;soap:Envelope&gt; tags)</li>
</ul>
<div class="h5">
<h5>org.apache.axis.SOAPEnvelope</h5>
</div>
<p>As you can see, starting with the MessageContext lets you work your way down through the API, discovering all the information available to you about a single request/response exchange. A MessageContext has two Messages, which each have a SOAPPart that contains a SOAPEnvelope. The SOAPEnvelope, in turn, holds a full representation of the SOAP Envelope that is sent over the wire. From here you can get and set the contents of the SOAP Header and the SOAP Body. See the Javadocs for a full list of the properties available.</p>
<p>
<a name="java/user-guide.html#tcpmon"></a>
</p>
<div class="h5">
<h5>Appendix : Using the Axis TCP Monitor (tcpmon)</h5>
</div>
<p>The included "tcpmon" utility can be found in the org.apache.axis.utils package. To run it from the command line:</p>
<pre>% java org.apache.axis.utils.tcpmon [listenPort targetHost targetPort]
</pre>
<p>Without any of the optional arguments, you will get a gui which looks like this:</p>
<p>
<p>
<img alt="" src="images/tcpmon1.jpg"></p>
</p>
<p>To use the program, you should select a local port which tcpmon will monitor for incoming connections, a target host where it will forward such connections, and the port number on the target machine which should be "tunneled" to. Then click "add". You should then notice another tab appearing in the window for your new tunneled connection. Looking at that panel, you'll see something like this:</p>
<p>
<p>
<img alt="" src="images/tcpmon2.jpg"></p>
</p>
<p>Now each time a SOAP connection is made to the local port, you will see the request appear in the "Request" panel, and the response from the server in the "Response" panel. Tcpmon keeps a log of all request/response pairs, and allows you to view any particular pair by selecting an entry in the top panel. You may also remove selected entries, or all of them, or choose to save to a file for later viewing.</p>
<p>The "resend" button will resend the request you are currently viewing, and record a new response. This is particularly handy in that you can edit the XML in the request window before resending - so you can use this as a great tool for testing the effects of different XML on SOAP servers. Note that you may need to change the content-length HTTP header value before resending an edited request.</p>
<p>
<a name="java/user-guide.html#soapmon"></a>
</p>
<div class="h5">
<h5>Appendix: Using the SOAP Monitor</h5>
</div>
<p>Web service developers often have the need to see the SOAP messages being used to invoke web services along with the results of those messages. The goal of the SOAP Monitor utility is to provide a way for these developers to monitor the SOAP messages being used without requiring any special configuration or restarting of the server.</p>
<p>In this utility, a handler has been written and added to the global handler chain. As SOAP requests and responses are received, the SOAP message information is forwarded to a SOAP monitor service where it can be displayed using a web browser interface.</p>
<p>The SOAP message information is accessed with a web browser by going to http://localhost:&lt;port&gt;/axis/SOAPMonitor (where &lt;port&gt; is the port number where the application server is running).</p>
<p>The SOAP message information is displayed through a web browser by using an applet that opens a socket connection to the SOAP monitor service. This applet requires a Java plug-in 1.3 or higher to be installed in your browser. If you do not have a correct plug-in, the browser should prompt you to install one.</p>
<p>The port used by the SOAP monitor service to comminicate with applets is configurable. Edit the web.xml file for the Axis web application to change the port to be used.<br> 
<strong>Note: The SOAP Monitor is NOT enabled by default for security reasons.</strong> To enable it, read <a href="#install.html#soapmon">Enabling the SOAP Monitor</a> in the Installation instructions.</p>
<p>
<a name="java/user-guide.html#Glossary"></a>
</p>
<div class="h5">
<h5>Glossary</h5>
</div>
<dl>
<dt>
<em>Handler</em>
</dt>
<dd>A reusable class which is responsible for processing a MessageContext in some custom way. The Axis engine invokes a series of Handlers whenever a request comes in from a client or a transport listener.</dd>
<dt>
<em>SOAP</em>
</dt>
<dd>The Simple Object Access Protocol (yes, despite the fact that it sometimes doesn't seem so simple, and doesn't have anything to do with objects... :)). You can read the SOAP 1.1 specification at <a href="http://www.w3.org/TR/SOAP">http://www.w3.org/TR/SOAP</a>. The W3C is currently in the midst of work on SOAP 1.2, under the auspices of the <a href="http://www.w3.org/2000/xp/Group/">XML Protocol Group</a>.</dd>
<dt>
<em>Provider</em>
</dt>
<dd>A provider is the "back-end" Handler which is responsible for actually performing the "meat" of the desired SOAP operation. Typically this means calling a method on some back-end service object. The two commonly used providers are RPCProvider and MsgProvider, both in the org.apache.axis.providers.java package.</dd>
</dl>
  
<div class="h2">
<h2>Axis Developer's Guide</h2>
</div>
<div class="h5">
<h5>Axis Developer's Guide</h5>
</div>
<p>
<em>1.2 Version</em>
<br> 
<em>Feedback: axis-dev@ws.apache.org</em>
</p>
<div class="h5">
<h5>Introduction</h5>
</div>
<p>This guide is a collection of topics related to developing code for Axis.</p>
<div class="h5">
<h5>General Guidelines</h5>
</div>
<ul>
<li>Axis specific information (cvs repository access, mailing list info, etc.) can be found on the <a href="http://ws.apache.org/axis/index.html">Axis Home Page</a>.</li>
<li>Axis uses the <a href="http://jakarta.apache.org/site/guidelines.html">Jakarta Project Guidelines.</a>
</li>
<li>Code changes should comply with <a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">"Code Conventions for the Java Programming Language"</a>
</li>
<li>When fixing a bug, please include the href of the bug in the cvs commit message.</li>
<li>Incompatible changes to <a href="#user-guide.html#published%20interfaces">published Axis interfaces</a> should be avoided where possible. When changes are necessary, for example to maintain or improve the overall modularity of Axis, the impact on users must be considered and, preferably, documented.</li>
<li>If you are making a big change that may affect interoperability, please run the <a href="http://xml.apache.org/~rubys/echotest.pl">echotest2 round 2 interop test</a> to ensure that your change does not result in any new interop failures. You will also need the <a href="http://xml.apache.org/~rubys/client_deploy.wsdd">client_deploy.wsdd</a>. Here are the <a href="http://xml.apache.org/~rubys/ApacheClientInterop.html">nightly interop test results</a>.</li>
</ul>
<div class="h5">
<h5>Development Environment</h5>
</div>
<p>The following packages are required for axis development:</p>
<ul>
<li>
<a href="http://jakarta.apache.org/ant/index.html">ant</a> - Java based build tool. <strong>Please Note: Version 1.5 OR HIGHER is required</strong>
</li>
<li>
<a href="http://www.junit.org">junit</a> - testing package</li>
<li>
<a href="http://xml.apache.org/dist/xerces-j">xerces</a> - xml processor</li>
<li>Install Java 1.3.1 JDK (or later).</li>
</ul>
<p>
<br> The Axis jar files are built in the <tt>xml-axis/java/build/lib</tt> directory.&nbsp;&nbsp; Here is an example CLASSPATH, which I use when developing code:</p>
<pre class="code">G:\xerces\xerces-1_4_2\xerces.jar
G:\junit3.7\junit.jar
G:\xml-axis\java\build\lib\commons-discovery.jar
G:\xml-axis\java\build\lib\commons-logging.jar
G:\xml-axis\java\build\lib\wsdl4j.jar
G:\xml-axis\java\build\lib\axis.jar
G:\xml-axis\java\build\lib\log4j-1.2.8.jar
G:\xml-axis\java\build\classes
</pre>
<p>If you access the internet via a proxy server, you'll need to set an environment variable so that the Axis tests do the same. Set ANT_OPTS to, for example:</p>
<pre class="code">      -Dhttp.proxyHost=proxy.somewhere.com
      -Dhttp.proxyPort=80
      -Dhttp.nonProxyHosts="localhost"</pre>
<div class="h5">
<h5>Pluggable-Components</h5>
</div>
<p>The <a href="#architecture-guide.html">Axis Architecture Guide</a> explains the requirements for pluggable components.</p>
<div class="h5">
<h5>Discovery</h5>
</div>
<p>An Axis-specific component factory should be created of the form:</p>org.apache.axis.components.&lt;componentType&gt;.&lt;factoryClassName&gt;<p>For example, <span class="codefrag">org.apache.axis.components.logger.LogFactory</span> is the factory, or discovery mechanism, for the logger component/service.</p>
<p>The <span class="codefrag">org.apache.axis.components.image</span> package demonstrates both a factory, and supporting classes for different image tools used by Axis. This is representative of a pluggable component that uses external tooling, isolating it behind a 'thin' wrapper to Axis that provides only a limited interface to meet Axis minimal requirements. This allows future designers and implementors to gain an explicit understanding of the Axis's specific requirements on these tools.</p>
<div class="h5">
<h5>Logging/Tracing</h5>
</div>
<p>Axis logging and tracing is based on the Logging component of the <a href="http://jakarta.apache.org/commons/index.html">Jakarta Commons</a> project, or the Jakarta Commons Logging (JCL) SPI. The JCL provides a Log interface with thin-wrapper implementations for other logging tools, including <a href="http://jakarta.apache.org/log4j/docs/index.html">Log4J</a>, <a href="http://jakarta.apache.org/avalon/logkit/index.html">Avalon LogKit</a>, and JDK 1.4. The interface maps closely to Log4J and LogKit.</p>
<div class="h5">
<h5>Using the Logger SPI</h5>
</div>
<p>To use the JCL SPI from a Java class, include the following import statements:</p>
<pre>import org.apache.commons.logging.Log;
    import org.apache.axis.components.logger.LogFactory;
    </pre>
<p>For each class definition, declare and initialize a <span class="codefrag">log</span> attribute as follows:</p>
<pre>public class CLASS
    {
       private static Log log =
    LogFactory.getLog(CLASS.class);
       ...
    </pre>
<p>Messages are logged to a <em>logger</em>, such as <span class="codefrag">log</span> by invoking a method corresponding to <em>priority</em>: The <span class="codefrag">Log</span> interface defines the following methods for use in writing log/trace messages to the log:</p>
<pre>log.fatal(Object message);
    log.fatal(Object message, Throwable t);
    log.error(Object message);
    log.error(Object message, Throwable t);
    log.warn(Object message);
    log.warn(Object message, Throwable t);
    log.info(Object message);
    log.info(Object message, Throwable t);
    log.debug(Object message);
    log.debug(Object message, Throwable t);
    log.trace(Object message);
    log.trace(Object message, Throwable t);</pre>
<p>While semantics for these methods are ultimately defined by the implementation of the Log interface, it is expected that the severity of messages is ordered as shown in the above list.</p>
<p>In addition to the logging methods, the following are provided:</p>
<pre>log.isFatalEnabled();
    log.isErrorEnabled();
    log.isWarnEnabled();
    log.isInfoEnabled();
    log.isDebugEnabled();
    log.isTraceEnabled();</pre>
<p>These are typically used to guard code that only needs to execute in support of logging, and that introduces undesirable runtime overhead in the general case (logging disabled).</p>
<div class="h5">
<h5>Guidelines</h5>
</div>
<div class="h5">
<h5>Message Priorities</h5>
</div>
<p>It is important to ensure that log message are appropriate in content and severity. The following guidelines are suggested:</p>
<ul>
<li>fatal - Severe errors that cause the Axis server to terminate prematurely. Expect these to be immediately visible on a console, and MUST be internationalized.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>error - Other runtime errors or unexpected conditions. Expect these to be immediately visible on a console, and MUST be internationalized.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>warn - Use of deprecated APIs, poor use of API, almost errors, other runtime situations that are undesirable or unexpected, but not necessarily "wrong". Expect these to be immediately visible on a console, and MUST be internationalized.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>info - Interesting runtime events (startup/shutdown). Expect these to be immediately visible on a console, so be conservative and keep to a minimum. These MUST be internationalized.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>debug - detailed information on flow of through the system. Expect these to be written to logs only. These NEED NOT be internationalized, but it never hurts...</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>trace - more detailed information. Expect these to be written to logs only. These NEED NOT be internationalized, but it never hurts...</li>
</ul>
<div class="h5">
<h5>Configuring the Logger</h5>
</div>
<p>The Jakarta Commons Logging (JCL) SPI can be configured to use different logging toolkits. To configure which logger is used by the JCL, see the <a href="#integration-guide.html">Axis System Integration Guide</a>.</p>
<p>Configuration of the behavior of the JCL ultimately depends upon the logging toolkit being used. The JCL SPI (and hence Axis) uses <a href="http://jakarta.apache.org/log4j/docs/index.html">Log4J</a> by default if it is available (in the CLASSPATH).</p>
<div class="h5">
<h5>Log4J</h5>
</div>
<p>As <a href="http://jakarta.apache.org/log4j/docs/index.html">Log4J</a> is the prefered/default logger for Axis, a <em>few</em> details are presented herein to get the developer going.</p>
<p>Configure Log4J using system properties and/or a properties file:</p>
<ul>
<li>
<strong>log4j.configuration=<em>log4j.properties</em></strong> 
<p>Use this system property to specify the name of a Log4J configuration file. If not specified, the default configuration file is <em>log4j.properties</em>. A <em>log4j.properties</em> file is provided in <span class="codefrag">axis.jar</span>.</p>
<p>This properties file can sometimes be overridden by placing a file of the same name so as to appear before <span class="codefrag">axis.jar</span> in the CLASSPATH. However, the precise behaviour depends on the classloader that is in use at the time, so we don't recommend this technique.</p>
<p>A safe way of overriding the properties file is to replace it in axis.jar. However, this isn't very convenient, especially if you want to tweak the properties during a debug session to filter out unwanted log entries. A more convenient alternative is to use an absolute file path to specify the properties file. This will even ignore web app's and their classloaders. So, for example on Linux, you could specify the system property:</p>
<pre>log4j.configuration=file:/home/fred/log4j.props
</pre>
</li>
<li>
<strong>log4j.debug</strong> A good way of telling where log4j is getting its configuration from is to set this system property and look at the messages on standard output.<br> &nbsp;</li>
<li>
<strong>log4j.rootCategory=<em>priority</em> [, <em>appender</em>]*</strong> Set the default (root) logger priority.<br> &nbsp;</li>
<li>
<strong>log4j.logger.<em>logger.name</em>=<em>priority</em></strong> Set the priority for the named logger and all loggers hierarchically lower than, or below, the named logger. <em>logger.name</em> corresponds to the parameter of <span class="codefrag">LogFactory.getLog(logger.name)</span>, used to create the logger instance. Priorities are: <span class="codefrag">DEBUG</span>, <span class="codefrag">INFO</span>, <span class="codefrag">WARN</span>, <span class="codefrag">ERROR</span>, or <span class="codefrag">FATAL</span>. <p>Log4J understands hierarchical names, enabling control by package or high-level qualifiers: <span class="codefrag">log4j.logger.org.apache.axis.encoding=DEBUG</span> will enable debug messages for all classes in both <span class="codefrag">org.apache.axis.encoding</span> and <span class="codefrag">org.apache.axis.encoding.ser</span>. Likewise, setting <span class="codefrag">log4j.logger.org.apache.axis=DEBUG</span> will enable debug message for all Axis classes, but not for other Jakarta projects.</p>
<p>A combination of settings will enable you to see the log events that you are interested in and omit the others. For example, the combination:</p>
<pre>log4j.logger.org.apache.axis=DEBUG 
log4j.logger.org.apache.axis.encoding=INFO
log4j.logger.org.apache.axis.utils=INFO
log4j.logger.org.apache.axis.message=INFO
</pre>cuts down the number of a log entries produced by a single request to a manageable number.<br>
</li>
<li>
<strong>log4j.appender.<em>appender</em>.Threshold=<em>priority</em></strong> Log4J <em>appenders</em> correspond to different output devices: console, files, sockets, and others. If appender's <em>threshold</em> is less than or equal to the message priority then the message is written by that appender. This allows different levels of detail to be appear at different log destinations. <p>For example: one can capture DEBUG (and higher) level information in a logfile, while limiting console output to INFO (and higher).</p>
</li>
</ul>
<div class="h5">
<h5>Axis Servlet Query String Plug-ins</h5>
</div>
<p>Any servlet that is derived from the <span class="codefrag">org.apache.axis.transport.http.AxisServlet</span> class supports a number of standard query strings (<em>?list</em>, <em>?method</em>, and <em>?wsdl</em>) that provide information from or perform operations on a web service (for instance, <em>?method</em> is used to invoke a method on a web service and <em>?wsdl</em> is used to retrieve the WSDL document for a web service). Axis servlets are not limited to these three query strings and developers may create their own "plug-ins" by implementing the <span class="codefrag">org.apache.axis.transport.http.QSHandler</span> interface. There is one method in this interface that must be implemented, with the following signature:</p>
<pre>public void invoke (MessageContext msgContext) throws AxisFault;
</pre>
<p>The <span class="codefrag">org.apache.axis.MessageContext</span> instance provides the developer with a number of useful objects (such as the Axis engine instance, and HTTP servlet objects) that are accessible by its <span class="codefrag">getProperty</span> method. The following constants can be used to retrieve various objects provided by the Axis servlet invoking the query string plug-in:</p>
<ul>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_NAME</strong>
<br> A <span class="codefrag">String</span> containing the name of the query string plug-in. For instance, if the query string <em>?wsdl</em> is provided, the name of the plugin is <em>wsdl</em>.<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_SERVICE_NAME</strong>
<br> A <span class="codefrag">String</span> containing the name of the Axis servlet that inovked the query string plug-in.<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_IS_DEVELOPMENT</strong>
<br> A <span class="codefrag">Boolean</span> containing <span class="codefrag">true</span> if this version of Axis is considered to be in development mode, <span class="codefrag">false</span> otherwise.<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_ENABLE_LIST</strong>
<br> A <span class="codefrag">Boolean</span> containing <span class="codefrag">true</span> if listing of the Axis server configuration is allowed, <span class="codefrag">false</span> otherwise.<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_ENGINE</strong>
<br> A <span class="codefrag">org.apache.axis.server.AxisServer</span> object containing the engine for the Axis server.<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.MC_HTTP_SERVLETREQUEST</strong>
<br> The <span class="codefrag">javax.servlet.http.HttpServletRequest</span> object from the Axis servlet that invoked the query string plug-in<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.MC_HTTP_SERVLETRESPONSE</strong>
<br> The <span class="codefrag">javax.servlet.http.HttpServletResponse</span> object from the Axis servlet that invoked the query string plug-in<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_WRITER</strong>
<br> The <span class="codefrag">java.io.PrintWriter</span> object from the Axis servlet that invoked the query string plug-in<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_LOG</strong>
<br> The <span class="codefrag">org.apache.commons.logging.Log</span> object from the Axis servlet that invoked the query string plug-in, which is used to log messages.<br>
<br>
</li>
<li>
<strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_EXCEPTION_LOG</strong>
<br> The <span class="codefrag">org.apache.commons.logging.Log</span> object from the Axis servlet that invoked the query string plug-in, which is used to log exceptions.<br>
<br>
</li>
</ul>
<p>Query string plug-in development is much like normal servlet development since the same basic information and methods of output are available to the developer. Below is an example query string plug-in which simply displays the value of the system clock (<span class="codefrag">import</span> statements have been omitted for brevity):</p>
<pre>public class QSClockHandler implements QSHandler {
     public void invoke (MessageContext msgContext) throws AxisFault {
          PrintWriter out = (PrintWriter) msgContext.getProperty (HTTPConstants.PLUGIN_WRITER);
          HttpServletResponse response = (HttpServletResponse)
           msgContext.getProperty (HTTPConstants.MC_HTTP_SERVLETRESPONSE);
          
          response.setContentType ("text/html");
          
          out.println ("&lt;HTML&gt;&lt;BODY&gt;&lt;H1&gt;" + System.currentTimeMillis()
           + "&lt;/H1&gt;&lt;/BODY&gt;&lt;/HTML&gt;");
     }
}
</pre>
<p>Once a query string plug-in class has been created, the Axis server must be set up to recognize the query string which invokes it. See the section <a href="#reference.html#Deployment">Deployment (WSDD) Reference</a> in the <a href="#reference.html">Axis Reference Guide</a> for information on how the HTTP transport section of the Axis server configuration file must be set up.</p>
<div class="h5">
<h5>Configuration Properties</h5>
</div>
<p>Axis is in the process of moving away from using system properties as the primary point of internal configuration. Avoid calling <span class="codefrag">System.getProperty()</span>, and instead call <span class="codefrag">AxisProperties.getProperty</span>. <span class="codefrag">AxisProperties.getProperty</span> will call <span class="codefrag">System.getProperty</span>, and will (eventually) query other sources of configuration information.</p>
<p>Using this central point of access will allow the global configuration system to be redesigned to better support multiple Axis engines in a single JVM.</p>
<div class="h5">
<h5>Exception Handling</h5>
</div>
<p>Guidelines for Axis exception handling are based on best-practices for exception handling. While there are details specific to Axis in these guidelines, they apply in principle to any project; they are included here for two reasons. First, because they are not listed elsewhere in the Apache/Jakarta guidelines (or haven't been found). Second, because adherence to these guidelines is considered crucial to enterprise ready middleware.</p>
<p>These guidelines are fundamentally independent of programming language. They are based on experience, but proper credit must be given to <em>More Effective C++</em>, by Scott Meyers, for opening the eyes of the innocent(?) many years ago.</p>
<p>Finally, these are guidelines. There will always be exceptions to these guidelines, in which case all that can be asked (as per these guidelines) is that they be logged in the form of comments in the code.</p>
<ul>
<li>
<h3>Primary Rule: Only Catch An Exception If You Know What To Do With It</h3>
</li>
<li style="list-style: none">If code catches an exception, it should know what to do with it at that point in the program. Any exception to this rule must be documented with a GOOD reason. Code reviewers are invited to put on their vulture beaks and peck away... <p>There are a few corollaries to this rule.</p>
<ul>
<li>
<h4>Handle Specific Exceptions in Inner Code</h4>
</li>
<li style="list-style: none">Inner code is code <em>deep</em> within the program. Such code should catch specific exceptions, or categories of exceptions (parents in exception hierarchies), <u>if and only if</u> the exception can be resolved and normal flow restored to the code. Note that behaviour of this sort may be significantly different between non-interactive code versus an interactive tool.</li>
<li>
<h4>Catch All Exceptions in Outermost Flow of Control</h4>
</li>
<li style="list-style: none">Ultimately, all exceptions must be dealt with at one level or another. For command-line tools, this means the <span class="codefrag">main</span> method or program. For a middleware component, this is the entry point(s) into the component. For Axis this is <span class="codefrag">AxisServlet</span> or equivalent. <p>After catching specific exceptions which can be resolved internally, the outermost code must ensure that all internally generated exceptions are caught and handled. While there is generally not much that can be done, at a minimum the code should <u>log the exception</u>. In addition to logging, the Axis Server wraps all such exceptions in AxisFaults and returns them to the client code.</p>
<p>This may seem contrary to the primary rule, but in fact we are claiming that Axis does know what to do with this type of exception: exit gracefully.</p>
</li>
</ul>
</li>
<li>
<h3>Catching and Logging Exceptions</h3>
</li>
<li style="list-style: none">When an Exception is going to cross a component boundry (client/server, or system/business logic), the exception must be caught and logged by the throwing component. It may then be rethrown, or wrapped, as described below. <p>When in doubt, log the exception.</p>
<ul>
<li>
<h4>Catch and Throw</h4>
</li>
<li style="list-style: none">If an exception is caught and rethrown (unresolved), logging of the exception is at the discretion of the coder and reviewers. If any comments are logged, the exception should also be logged. <p>When in doubt, log the exception and any related local information that can help to identify the complete context of the exception.</p>
<p>Log the exception as an <em>error</em> (<span class="codefrag">log.error()</span>) if it is known to be an unresolved or unresolvable error, otherwise log it at the <em>informative</em> level (<span class="codefrag">log.info()</span>).</p>
</li>
<li>
<h4>Catch and Wrap</h4>
</li>
<li style="list-style: none">When exception <span class="codefrag">e</span> is caught and wrapped by a new exception <span class="codefrag">w</span>, log exception <span class="codefrag">e</span> before throwing <span class="codefrag">w</span>. <p>Log the exception as an <em>error</em> (<span class="codefrag">log.error()</span>) if it is known to be an unresolved or unresolvable error, otherwise log it at the <em>informative</em> level (<span class="codefrag">log.info()</span>).</p>
</li>
<li>
<h4>Catch and Resolve</h4>
</li>
<li style="list-style: none">When exception <span class="codefrag">e</span> is caught and resolved, logging of the exception is at the discretion of the coder and reviewers. If any comments are logged, the exception should also be logged (<span class="codefrag">log.info()</span>). Issues that must be balanced are performance and problem resolvability. <p>Note that in many cases, ignoring the exception may be appropriate.</p>
</li>
</ul>
</li>
<li>
<h3>Respect Component Boundries</h3>
</li>
<li style="list-style: none">There are multiple aspects of this guideline. On one hand, this means that business logic should be isolated from system logic. On the other hand, this means that client's should have limited exposure/visibility to implementation details of a server - particularly when the server is published to outside parties. This implies a well designed server interface. <ul>
<li>
<h4>Isolate System Logic from Business Logic</h4>
</li>
<li style="list-style: none">Exceptions generated by the Axis runtime should be handled, where possible, within the Axis runtime. In the worst case the details of an exception are to be logged by the Axis runtime, and a generally descriptive Exception raised to the Business Logic. <p>Exceptions raised in the business logic (this includes the server and Axis handlers) must be delivered to the client code.</p>
</li>
<li>
<h4>Protect System Code from User Code</h4>
</li>
<li style="list-style: none">Protect the Axis runtime from uncontrolled user business logic. For Axis, this means that dynamically configurable <span class="codefrag">handlers</span>, <span class="codefrag">providers</span> and other user controllable hook-points must be guarded by <span class="codefrag">catch(Exception ...)</span>. Exceptions generated by user code and caught by system code should be: <ul>
<li>Logged, and</li>
<li>Delivered to the client program</li>
</ul>
</li>
<li>
<h4>Isolate Visibility into Server from Client</h4>
</li>
<li style="list-style: none">Specific exceptions should be logged at the server side, and a more general exception thrown to the client. This prevents clues as to the nature of the server (such as handlers, providers, etc) from being revealed to client code. The Axis component boundries that should be respected are: <ul>
<li>Client Code &lt;--&gt; AxisClient</li>
<li>AxisClient &lt;--&gt; AxisServlet (AxisServer/AxisEngine)</li>
<li>AxisServer/AxisEngine &lt;--&gt; Web Service</li>
</ul>
</li>
</ul>
</li>
<li>
<h3>Throwing Exceptions in Constructors</h3>
</li>
<li style="list-style: none">Before throwing an exception in a constructor, ensure that any resources owned by the object are cleaned up. For objects holding resources, this requires catching <u>all</u> exceptions thrown by methods called within the constructor, cleaning up, and rethrowing the exceptions.</li>
</ul>
<div class="h5">
<h5>Compile and Run</h5>
</div>
<p>The <tt>xml-axis/java/build.xml</tt> file is the primary 'make' file used by ant to build the application and run the tests. The <tt>build.xml</tt> file defines ant build <em>targets</em>. Read the build.xml file for more information. Here are some of the useful targets:<br>
</p>
<ul>
<li>
<tt>compile -&gt; compiles the source and creates xml-axis/java/build/lib/axis.jar</tt>
</li>
<li>
<tt>javadocs -&gt; creates the javadocs in xml-axis/java/build/javadocs</tt>
</li>
<li>
<tt>functional-tests -&gt; compiles and runs the functional tests</tt>
</li>
<li>
<tt>all-tests -&gt; compiles and runs all of the tests</tt>
</li>
<li style="list-style: none">
<br>
</li>
</ul>
<p>To compile the source code:</p>
<pre class="code">cd xml-axis/java ant compile</pre>
<p>To run the tests:</p>
<pre class="code">cd xml-axis/java ant functional-tests</pre>
<p>
<strong>Note:</strong> these tests start a server on port 8080. If this clashes with the port used by your web application server (such as Tomcat), you'll need to change one of the ports or stop your web application server when running the tests.</p>
<p>
<strong>Please run ant functional-tests and ant all-tests before checking in new code.</strong>
</p>
<div class="h5">
<h5>Internationalization</h5>
</div>
<p>If you make changes to the source code that results in the generation of text (error messages or debug information), you must follow the following guidelines to ensure that your text is properly translated.</p>
<div class="h5">
<h5>Developer Guidelines</h5>
</div>
<ol>
<li>Your text string should be added as a property to the resource.properties file (xml-axis/java/src/org/apache/axis/i18n/resource.properties). Note that some of the utility applications (i.e. tcpmon) have their own resource property files (tcpmon.properties).</li>
<li style="list-style: none">
<br>
</li>
<li>The resource.properties file contains translation and usage instructions. Entries in a message resource file are of the form &lt;key&gt;=&lt;message&gt;. Here is an example message:</li>
<li style="list-style: none">
<p>sample00=My name is {0}, and my title is {1}.<br>
</p>
<ol>
<li>sample00 is the key that the code will use to access this message.</li>
<li>The text after the = is the message text.</li>
<li>The {<em>number</em>} syntax defines the location for inserts.</li>
</ol>
</li>
<li>The code should use the static method org.apache.axis.i18n.Messages.getMessage to obtain the text and add inserts. Here is an example usage:</li>
<li style="list-style: none">
<p>Messages.getMessage("sample00", "Rich Scheuerle", "Software Developer");<br>
</p>
</li>
<li>All keys in the properties file should use the syntax &lt;string&gt;&lt;2-digit-suffix&gt;.</li>
<li style="list-style: none">
<br> 
<ol>
<li>
<strong>Never change the message text in the properties file.</strong> The message may be used in multiple places in the code. Plus translation is only done on new keys.</li>
<li style="list-style: none">
<br>
</li>
<li>If a code change requires a change to a message, create a new entry with an incremented 2-digit suffix.</li>
<li style="list-style: none">
<br>
</li>
<li>All new entries should be placed at the bottom of the file to ease translation.</li>
<li style="list-style: none">
<br>
</li>
<li>We may occasionally want to trim the properties file of old data, but this should only be done on major releases.</li>
</ol>
</li>
</ol>
<div class="h5">
<h5>Example</h5>
</div>
<p>Consider the following statement:</p>
<p>
<span class="codefrag">if ( operationName == null )</span>
<br> 
<span class="codefrag">throw new AxisFault( "No operation name specified" );</span>
</p>
<p>We will add an entry into org/apache/axis/i18n/resource.properties:</p>
<p>
<span class="codefrag">noOperation=No operation name specified.</span>
</p>
<p>And change the code to read:</p>
<p>
<span class="codefrag">if ( operationName == null )</span>
<br> 
<span class="codefrag">throw new AxisFault(Messages.getMessage("noOperation"));</span>
</p>
<div class="h5">
<h5>Interface</h5>
</div>
<p>Axis uses the standard Java internationalization class <span class="codefrag">java.util.ResourceBundle</span> to access property files and message strings, and uses <span class="codefrag">java.text.MessageFormat</span> to format the strings using variables. Axis provides a single class <span class="codefrag">org.apache.axis.i18n.Messages</span> that manages both ResourceBundle and MessageFormat classes. Messages methods are:</p>
<p>
<span class="codefrag">public static java.util.ResourceBundle getResourceBundle();</span>
</p>
<p>
<span class="codefrag">public static String getMessage(String key) throws java.util.MissingResourceException;</span>
</p>
<p>
<span class="codefrag">public static String getMessage(String key, String var) throws java.util.MissingResourceException;</span>
</p>
<p>
<span class="codefrag">public static String getMessage(String key, String var1, String var2) throws java.util.MissingResourceException;</span>
</p>
<p>
<span class="codefrag">public static String getMessage(String key, String[] vars) throws java.util.MissingResourceException;</span>
</p>
<p>Axis programmers can work with the resource bundle directly via a call to <span class="codefrag">Messages.getResourceBundle()</span>, but the <span class="codefrag">getMessage()</span> methods should be used instead for two reasons:</p>
<ol>
<li>It's a shortcut. It is cleaner to call</li>
<li style="list-style: none">
<span class="codefrag">Messages.getMessage("myMsg00");</span>than <span class="codefrag">Messages.getResourceBundle().getString("myMsg00");</span>
<br>
</li>
<li>The <span class="codefrag">getMessage</span> methods enable messages with variables.</li>
</ol>
<div class="h5">
<h5>The getMessage methods</h5>
</div>
<p>If you have a message with no variables</p>
<span class="codefrag">myMsg00=This is a string.</span>
<p>then simply call</p>
<span class="codefrag">Messages.getMessage("myMsg00");</span>
<p>
<br> If you have a message with variables, use the syntax "{X}" where <span class="codefrag">X</span> is the number of the variable, starting at 0. For example:</p>
<span class="codefrag">myMsg00=My {0} is {1}.</span>
<p>then call:</p>
<span class="codefrag">Messages.getMessage("myMsg00","name", "Russell");</span>
<p>and the resulting string will be: "My name is Russell."</p>
<p>You could also call the String array version of getMessage:</p>
<span class="codefrag">Messages.getMessage("myMsg00", new String[] {"name", "Russell"});</span>
<p>
<br> The String array version of getMessage is all that is necessary, but the vast majority of messages will have 0, 1 or 2 variables, so the other getMessage methods are provided as a convenience to avoid the complexity of the String array version.</p>
<p>Note that the getMessage methods throw MissingResourceException if the resource cannot be found. And ParseException if there are more {X} entries than arguments. These exceptions are RuntimeException's, so the caller doesn't have to explicitly catch them.</p>
<p>The resource bundle properties file is org/apache/axis/i18n/resource.properties.</p>
<div class="h5">
<h5>Extending Message Files</h5>
</div>
<p>Generally, within Axis all messages are placed in org.apache.axis.i18n.resource.properties. There are facilities for extending the messages without modifying this file for integration or 3rd party extensions to Axis. See the <a href="#integration-guide.html#Extending%20Message%20Files">Integration Guide for details.</a>
</p>
<div class="h5">
<h5>Creating a WSDL Test</h5>
</div>
<p>Here are the steps that I used to create the <tt>sequence</tt> test, which generates code from a wsdl file and runs a sequence validation test:<br>
</p>
<ol>
<li>Created a <tt>xml-axis/java/test/wsdl/sequence</tt> directory.</li>
<li style="list-style: none">
<br>
</li>
<li>Created a <tt>SequenceTest.wsdl</tt> file defining the webservice.</li>
<li style="list-style: none">
<br>
</li>
<li>Ran the Wsdl2java emitter to create Java files:</li>
<li style="list-style: none">
<p>
<tt>java org.apache.axis.wsdl.Wsdl2java -t -s SequenceTest.wsdl</tt>
</p>
<ol>
<li>The -t option causes the emitter to generate a *TestCase.java file that hooks into the test harness. This file is operational without any additional changes. Copy the *TestCase.java file into the same directory as your wsdl file. (Ideally only the Java files that are changed need to be in your directory.) So this file is not needed, but please make sure to modify your &lt;wsdl2java ...&gt; clause (described below) to emit a testcase.</li>
<li>The -s option causes the emitter to generate a *SOAPBindingImpl.java file. The Java file contains empty methods for the service. You probably want to fill them in with your own logic. Copy the *SOAPBindingImpl.java file into the same directory as your wsdl file. (If no changes are needed in the Java file, you don't need to save it. But you will need to make sure that your &lt;wsdl2java ...&gt; clause generates a skeleton).</li>
<li>Remove all of the Java files that don't require modification. So you should have three files in your directory (wsdl file, *TestCase.java, and *SOAPBindingImpl.java). My sequence test has an another file due to some additional logic that I needed.</li>
</ol>
<br>
</li>
<li>The <tt>test/wsdl/sequence/build.xml</tt> file controls the building of this test. Locate the "compile" target. Add a clause that runs the Wsdl2java code. I would recommend stealing something from the test/wsdl/roundtrip/build.xml file (it does a LOT of wsdl2java and java2wsdl calls). Here is the one for SequenceTest:</li>
<li style="list-style: none">
<p>
<tt> &lt;!-- Sequence Test --&gt;</tt>
<br> 
<tt>&lt;wsdl2java url="${axis.home}/test/wsdl/sequence/SequenceTest.wsdl"</tt>
<br> 
<tt>output="${axis.home}/build/work"</tt>
<br> 
<tt>deployscope="session"</tt>
<br> 
<tt>skeleton="yes"</tt>
<br> 
<tt>messagecontext="no"</tt>
<br> 
<tt>noimports="no"</tt>
<br> 
<tt>verbose="no"</tt>
<br> 
<tt>testcase="no"&gt;</tt>
<br> 
<tt>&lt;mapping namespace="urn:SequenceTest2" package="test.wsdl.sequence"/&gt;</tt>
<br> 
<tt>&lt;/wsdl2java&gt;</tt>
</p>
</li>
<li>Enable the run target in the new build.xml file. You need to choose from the execute-Component and the (soon to be introduced) execute-Simple-Test target. These control HOW the test is invoked when run as a single component. The execute-Component sets up the tcp-server and http-server prior to running the test, as well as handles deploying and services that may be needed. The execute-Simple-test simply invokes the raw test class file.<br>
<br>
</li>
<li>Done. Run <tt>ant functional-tests</tt> to verify. Check in your test.</li>
<li style="list-style: none">
<br>
</li>
</ol>
<div class="h5">
<h5>Using tcpmon to Monitor Functional Tests.</h5>
</div>
<p>Here is an easy way to monitor the messages while running <span class="codefrag">functional-tests</span> (or <span class="codefrag">all-tests</span>).<br> Start up tcpmon listening on 8080 and forwarding to a different port:</p>
<pre class="code">java org.apache.axis.utils.tcpmon 8080 localhost 8011</pre>
<p>Run your tests, but use the forwarded port for the SimpleAxisServer, and indicate that functional-tests should continue if a failure occurs.</p>
<pre class="code">ant functional-tests -Dtest.functional.SimpleAxisPort=8011 -Dtest.functional.fail=no</pre>
<p>The SOAP messages for all of the tests should appear in the tcpmon window.</p>
<p>
<span class="codefrag">tcpmon</span> is described in more detail in the <a href="#user-guide.html#tcpmon">Axis User's Guide</a>.</p>
<div class="h5">
<h5>Using SOAP Monitor to Monitor Functional Tests.</h5>
</div>
<p>If you are debugging code that is running as a web application using a web application server (such as Tomcat) then you may also use the SOAP Monitor utility to view the SOAP request and response messages.<br> Start up the SOAP monitor utility by loading the SOAP monitor applet in your web browser window:</p>
<pre class="code">http://localhost:&lt;port&gt;/axis/SOAPMonitor</pre>
<p>As you run your tests, the SOAP messages should appear in the SOAP monitor window.</p>
<p>
<span class="codefrag">SOAP Monitor</span> is described in more detail in the <a href="#user-guide.html#soapmon">Axis User's Guide</a>.</p>
<div class="h5">
<h5>Running a Single Functional Test</h5>
</div>
<p>In one window start the server:</p>
<pre class="code">java org.apache.axis.transport.http.SimpleAxisServer -p 8080</pre>
<p>In another window, first deploy the service you're testing:</p>
<pre class="code">java org.apache.axis.client.AdminClient deploy.wsdd</pre>
<p>Then bring up the JUnit user interface with your test. For example, to run the the multithread test case:</p>
<pre class="code">java junit.swingui.TestRunner -noloading test.wsdl.multithread.MultithreadTestCase</pre>
<div class="h5">
<h5>Turning on Debug Output</h5>
</div>
<p>This section is oriented to the Axis default logger: Log4J. For additional information on Log4J, see the section <a href="##Configuring%20the%20Logger">Configuring the Logger</a>.</p>
<ul>
<li>
<h5>Overriding Log4J properties</h5>
</li>
<li style="list-style: none">The <span class="codefrag">log4j.properties</span> file is packaged in <span class="codefrag">axis.jar</span> with reasonable default settings. Subsequent items presume changes to these settings. There are multiple options open to the developer, most of which involve extracting <span class="codefrag">log4j.properties</span> from <span class="codefrag">axis.jar</span> and modifying as appropriate. <ul>
<li>If you are building and executing <span class="codefrag">Java</span> programs from a command line or script file, include the JVM option <span class="codefrag">-Dlog4j.configuration=yourConfigFile</span>.</li>
<li>Set <span class="codefrag">CLASSPATH</span> such that your version of <span class="codefrag">log4j.properties</span> appears prior to <span class="codefrag">axis.jar</span> in the <span class="codefrag">CLASSPATH</span>.</li>
<li>If you are building and executing your programs using <span class="codefrag">ant</span> (this includes building Axis and running it's tests), set the environment variable <span class="codefrag">ANT_OPTS</span> to <span class="codefrag">-Dlog4j.configuration=yourConfigFile</span>.</li>
<li>If you are building Axis, you can change <span class="codefrag">src/log4j.properties</span> directly. Be sure NOT to commit your change(s).</li>
</ul>
<br>
</li>
<li>
<h5>Turning on ALL DEBUG Output</h5>
</li>
<li style="list-style: none">
<ul>
<li>Set the <span class="codefrag">log4j.rootCategory</span> <em>priority</em> to <span class="codefrag">DEBUG</span>.</li>
<li>Set the <em>priority</em> threshold for an appender to <span class="codefrag">DEBUG</span> (The <span class="codefrag">log4j.properties</span> file in Axis defines two appenders: <span class="codefrag">CONSOLE</span> and <span class="codefrag">LOGFILE</span>).</li>
</ul>
<br>
</li>
<li>
<h5>Selective DEBUG Output</h5>
</li>
<li style="list-style: none">
<ul>
<li>Set the <span class="codefrag">log4j.rootCategory</span> <em>priority</em> to <span class="codefrag">INFO</span> or higher.</li>
<li>Set the <span class="codefrag">log4j.logger.logger.name</span> <em>priority</em> to <span class="codefrag">DEBUG</span> for the loggers that you are interested in.</li>
<li>Set the <em>priority</em> threshold for an appender to <span class="codefrag">DEBUG</span> (The <span class="codefrag">log4j.properties</span> file in Axis defines two appenders: <span class="codefrag">CONSOLE</span> and <span class="codefrag">LOGFILE</span>).</li>
<li>If you are still seeing more than you want to see, you will need to use other tools to extract the information you are interested in from the log output. Use appropriate key words in log messages and use tools such as <span class="codefrag">grep</span> to search for them in log messages.</li>
</ul>
</li>
</ul>
<div class="h5">
<h5>Writing Temporary Output</h5>
</div>
<p>Remember that Axis is targeted for use in a number of open-source and other web applications, and so it needs to be a good citizen. Writing output using <span class="codefrag">System.out.println</span> or <span class="codefrag">System.err.println</span> should be avoided.</p>
<p>Developers may be tempted to use <span class="codefrag">System.out.println</span> while debugging or analyzing a system. If you choose to do this, you will need to disable the <span class="codefrag">util/TestSrcContent</span> test, which enforces avoidance of <span class="codefrag">System.out.println</span> and <span class="codefrag">System.err.println</span>. It follows that you will need to remove your statements before checking the code back in.</p>
<p>As an alternative, we strongly encourage you to take a few moments and introduce debug statements: <span class="codefrag">log.debug("reasonably terse and meaningful message")</span>. If a debug message is useful for understanding a problem now, it may be useful again in the future to you or a peer.</p>
<div class="h5">
<h5>Adding Testcases</h5>
</div>
<p>See Also: <a href="##TestStructure">Test and Samples Structure</a>
</p>
<p>
<strong>Editor's Note:</strong> We need more effort to streamline and simplify the addition of tests. We also need to think about categorizing tests as the test bucket grows.<br>
</p>
<p>If you make changes to Axis, please add a test that uses your change. Why?</p>
<ul>
<li>The test validates that your new code works.</li>
<li>The test protects your change from bugs introduced by future code changes.</li>
<li>The test is an example to users of the features of Axis.</li>
<li>The test can be used as a starting point for new development.</li>
</ul>
<p>
<br> Some general principles:</p>
<ul>
<li>Tests should be self-explanatory.</li>
<li>Tests should not generate an abundance of output</li>
<li>Tests should hook into the existing junit framework.</li>
<li>Each test or group of related tests should have its own directory in the <tt>xml-axis/java/test</tt> directory</li>
</ul>
<p>
<br> One way to build a test is to "cut and paste" the existing tests, and then modify the test to suit your needs. This approach is becoming more complicated as the different kinds of tests grow.</p>
<p>A good "non-wsdl" test for reference is test/saaj.</p>
<div class="h5">
<h5>Test Structure</h5>
</div>
<p>
<a href="#AxisTestRedesign.html">The Test and Samples Redesign Document is here</a>
</p>
<p>As of Axis 1.0, RC1, we have moved to a "componentized" test structure. Instead of having one high-level large recursive function, there are smaller, simple "component" build.xml files in the leaf level of the test/** and samples/** trees.</p>
<p>These "component" files have a common layout. Their primary targets are:</p>
<ul>
<li>clean - reset the build destination(s)</li>
<li>compile - javac, wsdl2java, java2wsdl instructions</li>
<li>run - "executes" the test</li>
</ul>
<br>
<p>A "sample" test xml file can be found in test/templateTest</p>
<div class="h5">
<h5>Adding Source Code Checks</h5>
</div>
<p>The Axis build performs certain automated checks of the files in the source directory (java/src) to make sure certain conventions are followed such as using internationalised strings when issuing messages.</p>
<p>If a convention can be reduced to a regular expression match, it can be enforced at build time by updating java/test/utils/TestSrcContent.java.</p>
<p>All that is necessary is to add a pattern to the static FileNameContentPattern array. Each pattern has three parameters:</p>
<ol>
<li>a pattern that matches filenames that are to be checked,</li>
<li>a pattern to be searched for in the chosen files, and</li>
<li>a boolean indicating whether the pattern is to be allowed (typically false indicating not allowed).</li>
</ol>
<p>A reasonable summary of the regular expression notation is provided in the <a href="http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html">Jakarta ORO javadocs</a>.</p>
<div class="h5">
<h5>JUnit and Axis</h5>
</div>
<p>You try to run some JUnit tests on an Axis client that invokes a web service, and you always get this exception:</p>
<pre>
java.lang.ExceptionInInitializerError 
at org.apache.axis.client.Service.&lt;init&gt;(Service.java:108) 
... 

Caused by: org.apache.commons.logging.LogConfigurationException: ... 
org.apache.commons.logging.impl.Jdk14Logger does not implement Log 
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance
(LogFactoryImpl.java:555) 
...


</pre>
<p>Actually, the Jdk14Logger does implement Log. What you have is a JUnit classloading issue. JUnit's graphical TestRunner has a feature where it will dynamically reload modified classes every time the user presses the "Run" button. This way, the user doesn't need to relaunch the TestRunner after every edit. For this, JUnit uses its own classloader, junit.runner.TestCaseClassLoader. As of JUnit 3.8.1, confusion can arise between TestCaseClassLoader and the system class loader as to which loader did or should load which classes.</p>
<p>There are two ways to avoid this problem.</p>
<ul>
<li>Sure and simple fix. Turn off dynamic class reloading by running junit.swingui.TestRunner with the -noloading argument.</li>
<li>Finicky and fancy fix, only necessary if you want dynamic class reloading. Tell TestCaseClassLoader to ignore certain packages and their sub-packages, deferring them to the system classloader. You can do this using a file located in junit.jar, junit/runner/excluded.properties. Its content appears as follows: <pre>#
# The list of excluded package paths for the TestCaseClassLoader
#
excluded.0=sun.*
excluded.1=com.sun.*
excluded.2=org.omg.*
excluded.3=javax.*
excluded.4=sunw.*
excluded.5=java.*
excluded.6=org.w3c.dom.*
excluded.7=org.xml.sax.*
excluded.8=net.jini.*
</pre>
</li>
</ul>
<p>Copy this file, preserving the directory path, into another location, e.g. deployDir. So the copied properties file's path will be deployDir/junit/runner/excluded.properties. Add an extra entry to the end of this file:</p>
<pre>excluded.9=org.apache.*
</pre>
<p>Edit your classpath so that deployDir appears before junit.jar. This way, the modified excluded.properties will be used, rather than the default. (Don't add the path to excluded.properties itself to the classpath.)</p>
<p>This fix will prevent the commons-logging exception. However, other classloading problems might still arise. For example:</p>
<pre>Dec 10, 2002 7:16:16 PM org.apache.axis.encoding.ser.BeanPropertyTarget set 
SEVERE: Could not convert [Lfoo.bar.Child; to bean field 'childrenAsArray', 
type [Lfoo.bar.Child; 
Dec 10, 2002 7:16:16 PM org.apache.axis.client.Call invoke 
SEVERE: Exception: 
java.lang.IllegalArgumentException: argument type mismatch 
at org.apache.axis.encoding.ser.BeanPropertyTarget.set
(BeanPropertyTarget.java:182) 
at org.apache.axis.encoding.DeserializerImpl.valueComplete
(DeserializerImpl.java:284) 
...
</pre>
<p>In this case, you have no choice but to give up on dynamic class reloading and use the -noloading argument.</p>
<p>One other heads-up about JUnit testing of an Axis web service. Suppose you have run JUnit tests locally on the component that you want to expose as a web service. You press the "Run" button to initiate a series of tests. Between each test, all your data structures are re-initialized. Your tests produce a long green bar. Good.</p>
<p>Suppose you now want to run JUnit tests on an Axis client that is connecting to an application server running the Axis web application and with it your web service. Between each test, JUnit will automatically re-initialize your client.</p>
<p>Your server-side data structures are a different matter. If you're checking your server data at the end of each test (as you should be) and you run more than one test at a time, the second and later tests will fail because they are generating cumulative data on the Axis server based on preceding tests rather than fresh data based only on the current one.</p>
<p>This means that, for each test, you must manually re-initialize your web service. One way to accomplish this is to add to your web service interface a re-initialize operation. Then have the client call that operation at the start of each test.</p>
<div class="h5">
<h5>Debugging</h5>
</div>
<div class="h5">
<h5>Running the JAX-RPC Compatibility Tests</h5>
</div>
<p>As well as a specification, JAX-RPC has a Technology Compatibility Kit (TCK) which is available to members of the JAX-RPC Expert Group (and others?).</p>
<p>The kit comes as a zip file which you should unzip into a directory of your choosing. The installation instructions are in the JAX-RPC Release Notes document which is stored in the docs directory. If you open the index.html file in the docs directory using a web browser, you'll see a list of all the documents supplied with the kit.</p>
<p>Note that the kit includes the JavaTest test harness which is used for running the compatibility tests.</p>
<p>If any more information is needed about running these tests, please add it here!</p>
  
<div class="h2">
<h2>Axis System Integration Guide</h2>
</div>
<div class="h5">
<h5>Axis System Integration Guide</h5>
</div>
<p>
<em>1.2 Version</em>
<br> 
<em>Feedback: axis-dev@ws.apache.org</em>
</p>
<div class="h5">
<h5>Introduction</h5>
</div>
<p>The primary purpose of this guide is to present how Axis can be integrated into an existing web application server, such as Tomcat or WebSphere, for example.&nbsp; Axis has a number of Pluggable APIs that are necessary for such an integration.</p>
<p>The reader may find useful background information in the <a href="#architecture-guide.html">Architecture Guide</a>.</p>
<div class="h5">
<h5>Pluggable APIs</h5>
</div>
<p>The following are the points that are pluggable in order to integrate Axis into a web application server. The first subsection details a number of pluggable components in general. More details are provided for other components in the remaining subsections.</p>
<div class="h5">
<h5>Components</h5>
</div>
<p>This section describes in general how to plug specializations of various components into Axis.</p>
<div class="h5">
<h5>General Strategy</h5>
</div>
<p>To override the default behavior for a pluggable component:</p>
<ul>
<li>Develop implementation of components interface</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>Define the implementation class to Axis by either creating a service definition file (prefered) or by setting a system property. <ul>
<li style="list-style: none">
<br>
</li>
<li>
<strong>PREFERED:</strong> To create a service definition file:</li>
<li style="list-style: none">
<ul>
<li>The name of the service definition file is derived from the interface or abstract class which the service implements/extends:<br> &nbsp;&nbsp; <span class="codefrag">/META-INF/services/&lt;componentPackage&gt;.&lt;interfaceName&gt;</span>.</li>
<li>Put the fully qualified class name of the implementation class on a line by itself in the service definition file.</li>
</ul>
<br>
</li>
<li>Set system property: <ul>
<li>The name of the system property is the name of the interface.</li>
<li>The value of the system property is the name of the implementation.</li>
<li>The optional system property name (in table, below) may be also be used.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>Setting a system property is not prefered, particularly in a J2EE or other application hosting environment, because it imposes a directive across all applications. This may or may not be appropriate behavior. If it is to be done, it should never be done from within a Web Application at runtime.</li>
</ul>
</li>
</ul>
<br>
</li>
<li>Package the implementation class and, if used, the service definition file in a JAR file and/or place it where it can be picked up by a class loader (CLASSPATH).</li>
</ul>
<div class="h5">
<h5>Example 1</h5>
</div>
<p>To override the default behavior for the Java Compiler:</p>
<ul>
<li>An implementation of the <span class="codefrag">Compiler</span> interface is already provided for the <span class="codefrag">Jikes</span> compiler.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>Create the service definition file named:<br> &nbsp;&nbsp; <span class="codefrag">/META-INF/services/org.apache.axis.components.compiler.Compiler</span>
</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>Add the following line to the service definition file:<br> &nbsp;&nbsp; <span class="codefrag">org.apache.axis.components.compiler.Jikes</span>
</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>Since <span class="codefrag">org.apache.axis.components.compiler.Jikes</span> is packaged with Axis, all that needs to be done is to ensure that the service definition file is loadable by a class loader.</li>
</ul>
<div class="h5">
<h5>Example 2</h5>
</div>
<p>To override the default behavior for the SocketFactory in an environment that does not allow resources to be located/loaded appropriately, or where the behavior needs to be forced to a specific implementation:</p>
<ul>
<li>Provide an implementation of the <span class="codefrag">SocketFactory</span> interface, for example <span class="codefrag">your.package.YourSocketFactory</span>
</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>Set the system property named<br> &nbsp;&nbsp; <span class="codefrag">org.apache.axis.components.net.SocketFactory</span>
<br> to the value<br> &nbsp;&nbsp; <span class="codefrag">your.package.YourSocketFactory</span>
<br> 
<p>This can be done by using the JVM commandline<br> &nbsp;&nbsp; <span class="codefrag">-Dorg.apache.axis.components.net.SocketFactory=your.package.YourSocketFactory</span>
<br> &nbsp;</p>
</li>
<li>Ensure that the implementation class is loadable by a class loader.</li>
</ul>
<div class="h5">
<h5>Reference</h5>
</div>
<p>(Component/Package: org.apache.axis.components.*)</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<th>Component Package</th><th>Factory</th><th>Interface</th><th>Optional System Property</th><th>Default Implementation</th>
</tr>
<tr class="a">
<td><tt>compiler</tt></td><td><tt>CompilerFactory getCompiler()</tt></td><td><tt>Compiler</tt></td><td><tt>axis.Compiler</tt></td><td><tt>Javac</tt></td>
</tr>
<tr class="b">
<td><tt>image</tt></td><td><tt>ImageIOFactory getImageIO()</tt></td><td><tt>ImageIO</tt></td><td><tt>axis.ImageIO</tt></td><td><tt>MerlinIO, JimiIO, JDK13IO</tt></td>
</tr>
<tr class="a">
<td><tt>jms</tt></td><td><tt>JMSVendorAdapterFactory getJMSVendorAdapter()</tt></td><td><tt>JMSVendorAdapter</tt></td><td></td><td><tt>JNDIVendorAdapter</tt></td>
</tr>
<tr class="b">
<td><tt>net</tt></td><td><tt>SocketFactoryFactory getFactory()</tt></td><td><tt>SocketFactory</tt></td><td><tt>axis.socketFactory</tt></td><td><tt>DefaultSocketFactory</tt></td>
</tr>
<tr class="a">
<td><tt>net</tt></td><td><tt>SocketFactoryFactory getSecureFactory()</tt></td><td><tt>SecureSocketFactory</tt></td><td><tt>axis.socketSecureFactory</tt></td><td><tt>JSSESocketFactory</tt></td>
</tr>
</table>
<div class="h5">
<h5>Logging/Tracing</h5>
</div>
<p>Axis logging and tracing is based on the Logging component of the <a href="http://jakarta.apache.org/commons/index.html">Jakarta Commons</a> project, or the Jakarta Commons Logging (JCL) SPI. The JCL provides a Log interface with thin-wrapper implementations for other logging tools, including <a href="http://jakarta.apache.org/log4j/docs/index.html">Log4J</a>, <a href="http://jakarta.apache.org/avalon/logkit/index.html">Avalon LogKit</a>, and JDK 1.4. The interface maps closely to Log4J and LogKit.</p>
<div class="h5">
<h5>Justification/Rationale</h5>
</div>
<p>A pluggable logging/trace facility enables Axis to direct logging/trace messages to a host web application server's logging facility. A central logging facility with a single point of configuration/control is superior to distinct logging mechanisms for each of a multitude of middleware components that are to be integrated into a web application server.</p>
<div class="h5">
<h5>Integration</h5>
</div>
<p>The minimum requirement to integrate with another logger is to provide an implementation of the <span class="codefrag">org.apache.commons.logging.Log</span> interface. In addition, an implementation of the <span class="codefrag">org.apache.commons.logging.LogFactory</span> interface can be provided to meet specific requirements for connecting to, or instantiating, a logger.</p>
<ul>
<li>
<h5>org.apache.commons.logging.Log</h5>
</li>
<li style="list-style: none">The <span class="codefrag">Log</span> interface defines the following methods for use in writing log/trace messages to the log: <pre>  log.fatal(Object message);
  log.fatal(Object message, Throwable t);
  log.error(Object message);
  log.error(Object message, Throwable t);
  log.warn(Object message);
  log.warn(Object message, Throwable t);
  log.info(Object message);
  log.info(Object message, Throwable t);
  log.debug(Object message);
  log.debug(Object message, Throwable t);
  log.trace(Object message);
  log.trace(Object message, Throwable t);
   
  log.isFatalEnabled();
  log.isErrorEnabled();
  log.isWarnEnabled();
  log.isInfoEnabled();
  log.isDebugEnabled();
  log.isTraceEnabled();
 </pre>
<p>Semantics for these methods are such that it is expected that the severity of messages is ordered, from highest to lowest:</p>
<ul>
<li>fatal - Consider logging to console and system log.</li>
<li>error - Consider logging to console and system log.</li>
<li>warn - Consider logging to console and system log.</li>
<li>info - Consider logging to console and system log.</li>
<li>debug - Log to system log, if enabled.</li>
<li>trace - Log to system log, if enabled.</li>
</ul>
<br> &nbsp;</li>
<li>
<h5>org.apache.commons.logging.LogFactory</h5>
</li>
<li style="list-style: none">If desired, the default implementation of the <span class="codefrag">org.apache.commons.logging.LogFactory</span> interface can be overridden, allowing the JDK 1.3 Service Provider discovery process to locate and create a LogFactory specific to the needs of the application. Review the Javadoc for the <span class="codefrag">LogFactoryImpl.java</span> for details.</li>
</ul>
<div class="h5">
<h5>Mechanism</h5>
</div>
<ul>
<li>
<h5>Life cycle</h5>
</li>
<li style="list-style: none">The JCL LogFactory implementation must assume responsibility for either connecting/disconnecting to a logging toolkit, or instantiating/initializing/destroying a logging toolkit.<br> &nbsp;</li>
<li>
<h5>Exception handling</h5>
</li>
<li style="list-style: none">The JCL Log interface doesn't specify any exceptions to be handled, the implementation must catch any exceptions.<br> &nbsp;</li>
<li>
<h5>Multiple threads</h5>
</li>
<li style="list-style: none">The JCL Log and LogFactory implementations must ensure that any synchronization required by the logging toolkit is met.</li>
</ul>
<div class="h5">
<h5>Logger Configuration</h5>
</div>
<ul>
<li>
<h5>Log</h5>
</li>
<li style="list-style: none">The default <span class="codefrag">LogFactory</span> provided by JCL can be configured to instantiate a specific implementation of the <span class="codefrag">org.apache.commons.logging.Log</span> interface by setting the property <span class="codefrag">org.apache.commons.logging.Log</span>. This property can be specified as a system property, or in the <span class="codefrag">commons-logging.properties</span> file, which must exist in the CLASSPATH.<br> &nbsp;</li>
<li>
<h5>Default logger if not plugged</h5>
</li>
<li style="list-style: none">The Jakarta Commons Logging SPI uses the implementation of the <span class="codefrag">org.apache.commons.logging.Log</span> interface specified by the system property <span class="codefrag">org.apache.commons.logging.Log</span>. If the property is not specified or the class is not available then the JCL provides access to a default logging toolkit by searching the CLASSPATH for the following toolkits, in order of preference: <ul>
<li>
<a href="http://jakarta.apache.org/log4j/docs/index.html">Log4J</a>
</li>
<li>JDK 1.4</li>
<li>JCL SimpleLog</li>
</ul>
</li>
</ul>
<div class="h5">
<h5>Configuration</h5>
</div>
<p>
<br> The internal data model used by Axis is based on an Axis specific data model: Web Services Deployment Descriptor (WSDD). Axis initially obtains the WSDD information for a service from an instance of <span class="codefrag">org.apache.axis.EngineConfiguration</span>.</p>
<p>The EngineConfiguration is provided by an implementation of the interface <span class="codefrag">org.apache.axis.EngineConfigurationFactory</span>, which currently provides methods that return client and server configurations.</p>
<p>Our focus will be how to define the implementation class for <span class="codefrag">EngineConfigurationFactory</span>.</p>
<ul>
<li>Justification/Rationale</li>
<li style="list-style: none">
<br> While the default behaviour is sufficient for general use of Axis, integrating Axis into an existing application server may require an alternate deployment model. A customized implementation of the EngineConfigurationFactory would map from the hosts deployment model to Axis's internal deployment model.<br> &nbsp;</li>
<li>Mechanism</li>
<li style="list-style: none">
<br> The relevant sequence of instructions used to obtain configuration information and initialize Axis is as follows: <br> 
<span class="codefrag">EngineConfigurationFactory factory = EngineConfigurationFactoryFinder(someContext);</span>
<br> 
<span class="codefrag">EngineCongfiguration config = factory.getClientEngineConfig();</span>
<br> 
<span class="codefrag">AxisClient = new AxisClient(config);</span>
<br> The details may vary (server versus client, whether other factories are involved, etc). Regardless, the point is that integration code is responsible for calling <span class="codefrag">EngineConfigurationFactoryFinder(someContext)</span> and ensuring that the results are handed to Axis.&nbsp; <span class="codefrag">someContext</span> is key to how the factory finder locates the appropriate implementation of EngineConfigurationFactory to be used, if any. <p>EngineConfigurationFactoryFinder works as follows:<br> &nbsp;</p>
<ul>
<li>Obtain a list of classes that implement <span class="codefrag">org.apache.axis.EngineConfigurationFactory</span>, in the following order: <ul>
<li>The value of the system property <span class="codefrag">axis.EngineConfigFactory</span>.</li>
<li>The value of the system property <span class="codefrag">org.apache.axis.EngineConfigurationFactory</span>.</li>
<li>Locate all resources named <span class="codefrag">META-INF/services/org.apache.axis.EngineConfigurationFactory</span>. Each line of such a resource identifies the name of a class implementing the interface ('#' comments, through end-of-line).</li>
<li>
<span class="codefrag">org.apache.axis.configuration.EngineConfigurationFactoryServlet</span>
</li>
<li>
<span class="codefrag">org.apache.axis.configuration.EngineConfigurationFactoryDefault</span>
</li>
</ul>
</li>
<li style="list-style: none">
<br>
</li>
<li>Classes implementing EngineConfigurationFactory are required to provide the method<br> &nbsp; <span class="codefrag">public static EngineConfigurationFactory newFactory(Object)</span>
<br> This method is called, passing <span class="codefrag">someContext</span> as the parameter.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>The <span class="codefrag">newFactory</span> method is required to check the <span class="codefrag">someContext</span> parameter to determine if it is meaningfull to the class (at a minimum, verify that it is of an expected type, or class) and may, in addition, examine the overall runtime environment. If the environment can provide information required by an EngineConfigurationFactory, then the <span class="codefrag">newFactory()</span> may return in instance of that factory. Otherwise, <span class="codefrag">newFactory()</span> must return null.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>EngineConfigurationFactoryFinder returns the first non-null factory it obtains.</li>
</ul>
<br> &nbsp;</li>
<li>Default behavior</li>
<li style="list-style: none">
<br> The default behaviour is provided by the last two elements of the list of implementing classes, as described above: <ul>
<li>
<span class="codefrag">org.apache.axis.configuration.EngineConfigurationFactoryServlet</span>
<br> 
<span class="codefrag">newFactory(obj)</span> is called. If <span class="codefrag">obj instanceof javax.servlet.ServletContext</span> is true, then an instance of this class is returned. <p>The default Servlet factory is expected to function as a server (as a client it will incorrectly attempt to load the WSDD file <span class="codefrag">client-config.wsdd</span> from the current working directory!).</p>
<p>The default Servlet factory will open the Web Application resource <span class="codefrag">/WEB-INF/server-config.wsdd</span> (The name of this file may be changed using the system property <span class="codefrag">axis.ServerConfigFile</span>):</p>
<ul>
<li>If it exists as an accessible file (i.e. not in a JAR/WAR file), then it opens it as a file. This allows changes to be saved, if changes are allowed &amp; made using the Admin tools.</li>
<li>If it does not exist as a file, then an attempt is made to access it as a resource stream (getResourceAsStream), which works for JAR/WAR file contents.</li>
<li>If the resource is simply not available, an attempt is made to create it as a file.</li>
<li>If all above attempts fail, a final attempt is made to access <span class="codefrag">org.apache.axis.server.server-config.wsdd</span> as a data stream.</li>
</ul>
</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>
<span class="codefrag">org.apache.axis.configuration.EngineConfigurationFactoryDefault</span>
<br> 
<span class="codefrag">newFactory(obj)</span> is called. If <span class="codefrag">obj</span> is null then an instance of this class is returned. A non-null <span class="codefrag">obj</span> is presumed to require a non-default factory. <p>The default factory will load the WSDD files <span class="codefrag">client-config.wsdd</span> or <span class="codefrag">server-config.wsdd</span>, as appropriate, from the current working directory. The names of these files may be changed using the system properties <span class="codefrag">axis.ClientConfigFile</span> and <span class="codefrag">axis.ServerConfigFile</span>, respectively.</p>
</li>
</ul>
</li>
</ul>
<div class="h5">
<h5>Handlers</h5>
</div>
<p>See the <a href="#architecture-guide.html">Architecture Guide</a> for current information on Handlers.</p>
<div class="h5">
<h5>Internationalization</h5>
</div>
<p>Axis supports internationalization by providing both a property file of the strings used in Axis, and an extension mechanism that facilitates accessing internal Axis messages and extending the messages available to integration code based on existing Axis code.</p>
<div class="h5">
<h5>Translation</h5>
</div>
<ul>
<li>Justification/Rationale</li>
<li style="list-style: none">
<br> In order for readers of languages other than English to be comfortable with Axis, we provide a mechanism for the strings used in Axis to be translated. We do not provide any translations in Axis; we merely provide a means by which translators can easily plug in their translations.<br> &nbsp;</li>
<li>Mechanism</li>
<li style="list-style: none">
<br> Axis provides english messages in the Java resource named org.apache.axis.i18n.resource.properties (in the source tree, the file is named xml-axis/java/src/org/apache/axis/i18n/resource.properties). <p>Axis makes use of the Java internationalization mechanism - i.e., a java.util.ResourceBundle backed by a properties file - and the java.text.MessageFormat class to substitute parameters into the message text.</p>
<ul>
<li style="list-style: none">
<br>
</li>
<li>java.util.ResourceBundle retrieves message text from a property file using a key provided by the program. Entries in a message resource file are of the form &lt;key&gt;=&lt;message&gt;.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>java.text.MessageFormat substitutes variables for markers in the message text. Markers use the syntax "{X}" where <span class="codefrag">X</span> is the number of the variable, starting at 0.</li>
</ul>
<p>For example: <span class="codefrag">myMsg00=My {0} is {1}.</span>
</p>
<p>Translation requires creating an alternate version of the property file provided by Axis for a target language. The JavaDoc for <span class="codefrag">java.utils.ResourceBundle</span> provides details on how to identify different property files for different locales.</p>
<p>For details on using Axis's internationalization tools, see the <a href="#developers-guide.html">Developer's Guide</a>.<br> &nbsp;</p>
</li>
<li>Default behavior</li>
<li style="list-style: none">
<br> The default behavior, meaning what happens when a translated file doesn't exist for a given locale, is to fall back on the English-language properties file.&nbsp; If that file doesn't exist (unlikely unless something is seriously wrong), Axis will throw an exception with an English-language reason message.<br> &nbsp;</li>
</ul>
<div class="h5">
<h5>Extending Message Files</h5>
</div>
<p>Axis provides a Message file extension mechanism that allows Axis-based code to use Axis message keys, as well as new message keys unique to the extended code.</p>
<ul>
<li>Justification/Rationale</li>
<li style="list-style: none">
<br> Axis provides pluggable interfaces for various Axis entities, including EngineConfigurationFactory's, Provides, and Handlers. Axis also provides a variety of implementations of these entities. It is convenient to use Axis source code for such implementations as starting points for developing extentions and customizations that fulfill the unique needs of the end user.<br> &nbsp;</li>
<li>Procedure</li>
<li style="list-style: none">
<br> To extend the Axis message file:<br> &nbsp; <ul>
<li>Copy the Axis source file <span class="codefrag">java/src/org/apache/axis/i18n/Messages.java</span> to your project/package, say <span class="codefrag">my/project/package/path/Messages.java</span>.</li>
<li style="list-style: none">
<ul>
<li>Set the <span class="codefrag">package</span> declaration in the copied file to the correct package name.</li>
<li>Set the private attribute <span class="codefrag">projectName</span> to <span class="codefrag">"my.project"</span>: the portion of the package name that is common to your project. <span class="codefrag">projectName</span> must be equal to or be a prefix of the copied Messages package name.</li>
</ul>
<br> &nbsp;</li>
<li>Create the file <span class="codefrag">my/project/package/path/resource.properties</span>. Add new message key/value pairs to this file.</li>
<li style="list-style: none">
<br> &nbsp;</li>
<li>As you copy Axis source files over to your project, change the <span class="codefrag">import org.apache.axis.i18n.Messages</span> statement to <span class="codefrag">import my.project.package.path.Messages</span>.</li>
<li>Use the methods provided by the class Messages, as discussed in the <a href="#developers-guide.html">Developer's Guide</a>, to access the new messages.</li>
</ul>
<br>
</li>
<li>Behavior</li>
<li style="list-style: none">
<ul>
<li>Local Search</li>
<li style="list-style: none">
<br> 
<span class="codefrag">Messages</span> begins looking for a key's value in the <span class="codefrag">resources.properties</span> resource in it's (Messages) package.<br> &nbsp;</li>
<li>Hierarchical Search</li>
<li style="list-style: none">
<br> If <span class="codefrag">Messages</span> cannot locate either the key, or the resource file, it walks up the package hierarchy until it finds it. The top of the hierarchy, above which it will not search, is defined by the <span class="codefrag">projectName</span> attribute, set above.<br> &nbsp;</li>
<li>Default behavior</li>
<li style="list-style: none">
<br> If the key cannot be found in the package hierarchy then a default resource is used. The default behaviour is determined by the <span class="codefrag">parent</span> attribute of the <span class="codefrag">Messages</span> class copied to your extensions directory. <p>Unless changed, the default behavior, meaning what happens when a key isn't defined in the new properties file, is to fall back to the Axis properties file (org.apache.axis.i18n.resource.properties).<br> &nbsp;</p>
</li>
</ul>
</li>
</ul>
<div class="h5">
<h5>Performance Monitoring</h5>
</div>
<p>Axis does not yet include specific Performance Monitoring Plugs. <!--
  <ul>
  <li>
  Justification/Rationale - why is this plug point necessary?&nbsp; Spec
  compliance?</li>

  <li>
  Interfaces</li>

  <li>
  Mechanism</li>

  <ul>
  <li>
  Life cycle</li>

  <li>
  Exception handling - in general; plug-in shouldn't throw any exceptions
  - does runtime ignore? Log?)</li>

  <li>
  Multiple thread support?&nbsp; Ie., is synchronization required?</li>
  </ul>

  <li>
  Configuration/reconfiguration</li>

  <li>
  Default behavior if not plugged.</li>

  <li>
  Example</li>
  </ul>
  --></p>
<div class="h5">
<h5>Encoding</h5>
</div>
<p>Axis does not yet include an Encoding Plug. <!--
  How can a system integrator plug in other encoding mechanisms such as SOAP
  1.2 or optimized XML-based encoding?
  <ul>
  <li>
  Justification/Rationale - why is this plug point necessary?&nbsp; Spec
  compliance?</li>

  <li>
  Interfaces</li>

  <li>
  Mechanism</li>

  <ul>
  <li>
  Life cycle</li>

  <li>
  Exception handling - in general; plug-in shouldn't throw any exceptions
  - does runtime ignore? Log?)</li>

  <li>
  Multiple thread support?&nbsp; Ie., is synchronization required?</li>
  </ul>

  <li>
  Configuration/reconfiguration</li>

  <li>
  Default behavior if not plugged.</li>

  <li>
  Example</li>
  </ul>
  --></p>
<div class="h5">
<h5>WSDL Parser and Code Generator Framework</h5>
</div>
<p>WSDL2Java is Axis's tool to generate Java artifacts from WSDL.&nbsp; This tool is extensible.&nbsp; If users of Axis wish to extend Axis, then they may also need to extend or change the generated artifacts.&nbsp; For example, if Axis is inserted into some product which has an existing deployment model that's different than Axis's deployment model, then that product's version of WSDL2Java will be required to generate deployment descriptors other than Axis's deploy.wsdd.</p>
<p>What follows immediately is a description of the framework.&nbsp; If you would rather dive down into the dirt of <a href="##WSDL%20Examples">examples</a>, you could learn a good deal just from them.&nbsp; Then you could come back up here and learn the gory details.</p>
<p>There are three parts to WSDL2Java:</p>
<ol>
<li>The symbol table</li>
<li>The parser front end with a generator framework</li>
<li>The code generator back end (WSDL2Java itself)</li>
</ol>
<div class="h5">
<h5>Symbol Table</h5>
</div>
<p>The symbol table, found in org.apache.axis.wsdl.symbolTable, will contain all the symbols from a WSDL document, both the symbols from the WSDL constructs themselves (portType, binding, etc), and also the XML schema types that the WSDL refers to.</p>
<p>NOTE:&nbsp; Needs lots of description here.</p>
<p>The symbol table is not extensible, but you <strong>can</strong> add fields to it by using the Dynamic Variables construct:</p>
<ul>
<li>You must have some constant object for a dynamic variable key.&nbsp; For example:&nbsp; public static final String MY_KEY = "my key";</li>
<li>You set the value of the variable in your GeneratorFactory.generatorPass:&nbsp; entry.setDynamicVar(MY_KEY, myValue);</li>
<li>You get the value of the variable in your generators:&nbsp; Object myValue = entry.getDynamicVar(MY_KEY);</li>
</ul>
<div class="h5">
<h5>Parser Front End and Generator Framework</h5>
</div>
<p>The parser front end and generator framework is located in org.apache.axis.wsdl.gen.&nbsp; The parser front end consists of two files:</p>
<ul>
<li>Parser</li>
<li style="list-style: none">
<br> 
<tt>public class Parser {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public Parser();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public boolean isDebug();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setDebug(boolean);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public boolean isImports();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setImports(boolean);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public boolean isVerbose();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setVerbose(boolean);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public long getTimeout();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setTimeout(long);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public java.lang.String getUsername();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setUsername(java.lang.String);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public java.lang.String getPassword();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setPassword(java.lang.String);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public GeneratorFactory getFactory();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setFactory(GeneratorFactory);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public org.apache.axis.wsdl.symbolTable.SymbolTable getSymbolTable();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public javax.wsdl.Definition getCurrentDefinition();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public java.lang.String getWSDLURI();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void run(String wsdl) throws java.lang.Exception;</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void run(String context, org.w3c.dom.Document wsdlDoc) throws java.io.IOException, javax.wsdl.WSDLException;</tt>
<br> 
<tt>}</tt> 
<p>The basic behavior of this class is simple:&nbsp; you instantiate a Parser, then you run it.</p>
<tt>Parser parser = new Parser();</tt>
<br> 
<tt>parser.run("myfile.wsdl");</tt>
<p>
<br> There are various options on the parser that have accessor methods:</p>
<ul>
<li>debug - default is false - dump the symbol table after the WSDL file has been parsed</li>
<li>imports - default is true - should imported files be visited?</li>
<li>verbose - default is false - list each file as it is being parsed</li>
<li>timeout - default is 45 - the number of seconds to wait before halting the parse</li>
<li>username - no default - needed for protected URI's</li>
<li>password - no default - needed for protected URI's</li>
</ul>
<p>
<br> Other miscellaneous methods on the parser:</p>
<ul>
<li>get/setFactory - get or set the GeneratorFactory on this parser - see below for details.&nbsp; The default generator factory is NoopFactory, which generates nothing.</li>
<li>getSymbolTable - once a run method is called, the symbol table will be populated and can get queried.</li>
<li>getCurrentDefinition - once a run method is called, the parser will contain a Definition object which represents the given wsdl file.&nbsp; Definition is a WSDL4J object.</li>
<li>getWSDLURI - once the run method which takes a string is called, the parser will contain the string representing the location of the WSDL file.&nbsp; Note that the other run method - run(String context, Document wsdlDoc) - does not provide a location for the wsdl file.&nbsp; If this run method is used, getWSDLURI will be null.</li>
<li>There are two run methods.&nbsp; The first, as shown above, takes a URI string which represents the location of the WSDL file.&nbsp; If you've already parsed the WSDL file into an XML Document, then you can use the second run method, which takes a context and the WSDL Document.</li>
</ul>
<p>
<br> An extension of this class would ...<br>
<br> NOTE:&nbsp; continue this sentiment...<br> &nbsp;</p>
</li>
<li>WSDL2</li>
<li style="list-style: none">
<br> Parser is the programmatic interface into the WSDL parser.&nbsp; WSDL2 is the command line tool for the parser.&nbsp; It provides an extensible framework for calling the Parser from the command line.&nbsp; It is named WSDL2 because extensions of it will likely begin with WSDL2:&nbsp; <strong>WSDL2</strong>Java, <strong>WSDL2</strong>Lisp, <strong>WSDL2</strong>XXX. <p>
<tt>public class WSDL2 {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected WSDL2();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected Parser createParser();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected Parser getParser();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void addOptions(org.apache.axis.utils.CLOptionDescriptor[]);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void parseOption(org.apache.axis.utils.CLOption);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void validateOptions();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void printUsage();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void run(String[]);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public static void main(String[]);</tt>
<br> 
<tt>}</tt>
</p>
<p>Like all good command line tools, it has a main method.&nbsp; Unlike some command line tools, however, its methods are not static.&nbsp; Static methods are not extensible.&nbsp; WSDL2's main method constructs an instance of itself and calls methods on that instance rather than calling static methods.&nbsp; These methods follow a behavior pattern.&nbsp; The main method is very simple:<br> &nbsp;</p>
<tt>&nbsp;&nbsp;&nbsp; public static void main(String[] args) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; WSDL2 wsdl2 = new WSDL2();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; wsdl2.run(args);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<p>
<br> The constructor calls createParser to construct a Parser or an extension of Parser.</p>
<p>run calls:</p>
<ul>
<li>parseOption to parse each command line option and call the appropriate Parser accessor.&nbsp; For example, when this method parses --verbose, it calls parser.setVerbose(true)</li>
<li>validateOptions to make sure all the option values are consistent</li>
<li>printUsage if the usage of the tool is in error</li>
<li>parser.run(args);</li>
</ul>
<p>
<br> If an extension has additional options, then it is expected to call addOptions before calling run.&nbsp; So extensions will call, as necessary, getParser, addOptions, run.&nbsp; Extensions will override, as necessary, createParser, parseOption, validateOptions, printUsage.<br> &nbsp;</p>
<p>The generator framework consists of 2 files:</p>
<ul>
<li>Generator</li>
<li style="list-style: none">
<br> The Generator interface is very simple.&nbsp; It just defines a generate method. <p>
<tt>public interface Generator</tt>
<br> 
<tt>{</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void generate() throws java.io.IOException;</tt>
<br> 
<tt>}</tt>
<br> &nbsp;</p>
</li>
<li>GeneratorFactory</li>
<li style="list-style: none">
<p>
<br> 
<tt>public interface GeneratorFactory</tt>
<br> 
<tt>{</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void generatorPass(javax.wsdl.Definition, SymbolTable);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public Generator getGenerator(javax.wsdl.Message, SymbolTable);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public Generator getGenerator(javax.wsdl.PortType, SymbolTable);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public Generator getGenerator(javax.wsdl.Binding, SymbolTable);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public Generator getGenerator(javax.wsdl.Service, SymbolTable);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public Generator getGenerator(TypeEntry, SymbolTable);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public Generator getGenerator(javax.wsdl.Definition, SymbolTable);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setBaseTypeMapping(BaseTypeMapping);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public BaseTypeMapping getBaseTypeMapping();</tt>
<br> 
<tt>}</tt>
</p>
<p>The GeneratorFactory interface defines a set of methods that the parser uses to get generators.&nbsp; There should be a generator for each of the WSDL constructs (message, portType, etc - note that these depend on the WSDL4J classes:&nbsp; javax.xml.Message, javax.xml.PortType, etc); a generator for schema types; and a generator for the WSDL Definition itself.&nbsp; This last generator is used to generate anything that doesn't fit into the previous categories.</p>
<p>In addition to the getGeneratorMethods, the GeneratorFactory defines a generatorPass method which provides the factory implementation a chance to walk through the symbol table to do any preprocessing before the actual generation begins.</p>
<p>Accessors for the base type mapping are also defined.&nbsp; These are used to translate QNames to base types in the given target mapping.<br> &nbsp;</p>
</li>
</ul>In addition to Parser, WSDL2, Generator, and GeneratorFactory, the org.apache.axis.wsdl.gen package also contains a couple of no-op classes:&nbsp; NoopGenerator and NoopFactory.&nbsp; NoopGenerator is a convenience class for extensions that do not need to generate artifacts for every WSDL construct.&nbsp; For example, WSDL2Java does not generate anything for messages, therefore its factory's getGenerator(Message, SymbolTable) method returns an instance of NoopGenerator.&nbsp; NoopFactory returns a NoopGenerator for all getGenerator methods.&nbsp; The default factory for Parser is the NoopFactory.</li>
</ul>
<div class="h5">
<h5>Code Generator Back End</h5>
</div>
<p>The meat of the WSDL2Java back end generators is in org.apache.axis.wsdl.toJava.&nbsp; Emitter extends Parser.&nbsp; org.apache.axis.wsdl.WSDL2Java extends WSDL2.&nbsp; JavaGeneratorFactory implements GeneratorFactory.&nbsp; And the various JavaXXXWriter classes implement the Generator interface.</p>
<p>NOTE:&nbsp; Need lots more description here...</p>
<div class="h5">
<h5>WSDL Framework Extension Examples</h5>
</div>
<p>Everything above sounds rather complex.&nbsp; It is, but that doesn't mean your extension has to be.</p>
<div class="h5">
<h5>Example 1 - Simple extension of WSDL2Java - additional artifact</h5>
</div>
<p>The simplest extension of the framework is one which generates everything that WSDL2Java already generates, plus something new.&nbsp; Example 1 is such an extension.&nbsp; It's extra artifact is a file for each service that lists that service's ports.&nbsp; I don't know why you'd want to do this, but it makes for a good, simple example.&nbsp; See samples/integrationGuide/example1 for the complete implementation of this example.<br> &nbsp;</p>
<ul>
<li>First you must create your writer that writes the new artifact.&nbsp; This new class extends org.apache.axis.wsdl.toJava.JavaWriter.&nbsp; JavaWriter dictates behavior to its extensions; it calls writeFileHeader and writeFileBody.&nbsp; Since we don't care about a file header for this example, writeFileHeader is a no-op method.&nbsp; writeFileBody does the real work of this writer.</li>
<li style="list-style: none">
<p>
<br> 
<tt>public class MyListPortsWriter extends JavaWriter {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; private Service service;</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public MyListPortsWriter(</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Emitter emitter,</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServiceEntry sEntry,</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SymbolTable symbolTable) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; super(emitter,</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new QName(</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sEntry.getQName().getNamespaceURI(),</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sEntry.getQName().getLocalPart() + "Lst"),</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "", "lst", "Generating service port list file", "service list");</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; this.service = sEntry.getService();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void writeFileHeader() throws IOException {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void writeFileBody() throws IOException {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; Map portMap = service.getPorts();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; Iterator portIterator = portMap.values().iterator();</tt>
</p>
<p>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; while (portIterator.hasNext()) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Port p = (Port) portIterator.next();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pw.println(p.getName());</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; pw.close();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>}</tt>
<br> &nbsp;</p>
</li>
<li>Then you need a main program.&nbsp; This main program extends WSDL2Java so that it gets all the functionality of that tool.&nbsp; The main of this tool does 3 things:</li>
<li style="list-style: none">
<ul>
<li>instantiates itself</li>
<li>adds MyListPortsWriter to the list of generators for a WSDL service</li>
<li>calls the run method.</li>
</ul>That's it!&nbsp; The base tool does all the rest of the work. <p>
<tt>public class MyWSDL2Java extends WSDL2Java {</tt>
</p>
<p>
<tt>&nbsp;&nbsp;&nbsp; public static void main(String args[]) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; MyWSDL2Java myWSDL2Java = new MyWSDL2Java();</tt>
</p>
<p>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; JavaGeneratorFactory factory =</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (JavaGeneratorFactory) myWSDL2Java.getParser().getFactory();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; factory.addGenerator(Service.class, MyListPortsWriter.class);</tt>
</p>
<p>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; myWSDL2Java.run(args);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>}</tt>
</p>
</li>
</ul>
<div class="h5">
<h5>Example 2 - Not quite as simple an extension of WSDL2Java - change an artifact</h5>
</div>
<p>In this example, we'll replace deploy.wsdd with mydeploy.useless.&nbsp; For brevity, mydeploy.useless is rather useless.&nbsp; Making it useful is an exercise left to the reader.&nbsp; See samples/integrationGuide/example2 for the complete implementation of this example.</p>
<ul>
<li>First, here is the writer for the mydeploy.useless.&nbsp; This new class extends org.apache.axis.wsdl.toJava.JavaWriter.&nbsp; JavaWriter dictates behavior to its extensions; it calls writeFileHeader and writeFileBody.&nbsp; Since we don't care about a file header for this example, writeFileHeader is a no-op method.&nbsp; writeFileBody does the real work of this writer.&nbsp; It simply writes a bit of a song, depending on user input.</li>
<li style="list-style: none">
<p>
<br> Note that we've also overridden the generate method.&nbsp; The parser always calls generate, but since this is a server-side artifact, we don't want to generate it unless we are generating server-side artifacts (in other words, in terms of the command line options, we've specified the --serverSide option).</p>
<p>
<tt>public class MyDeployWriter extends JavaWriter {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public MyDeployWriter(Emitter emitter, Definition definition,</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SymbolTable symbolTable) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; super(emitter,</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new QName(definition.getTargetNamespace(), "deploy"),</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "", "useless", "Generating deploy.useless", "deploy");</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void generate() throws IOException {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; if (emitter.isServerSide()) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.generate();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void writeFileHeader() throws IOException {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void writeFileBody() throws IOException {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; MyEmitter myEmitter = (MyEmitter) emitter;</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; if (myEmitter.getSong() == MyEmitter.RUM) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pw.println("Yo!&nbsp; Ho!&nbsp; Ho!&nbsp; And a bottle of rum.");</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; else if (myEmitter.getSong() == MyEmitter.WORK) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pw.println("Hi ho!&nbsp; Hi ho!&nbsp; It's off to work we go.");</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; else {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pw.println("Feelings...&nbsp; Nothing more than feelings...");</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; pw.close();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>}</tt>
<br> &nbsp;</p>
</li>
<li>Since we're changing what WSDL2Java generates, rather than simply adding to it like the previous example did, calling addGenerator isn't good enough.&nbsp; In order to change what WSDL2Java generates, you have to create a generator factory and provide your own generators.&nbsp; Since we want to keep most of WSDL2Java's artifacts, we can simply extend WSDL2Java's factory - JavaGeneratorFactory - and override the addDefinitionGenerators method.</li>
<li style="list-style: none">
<p>
<br> 
<tt>public class MyGeneratorFactory extends JavaGeneratorFactory {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void addDefinitionGenerators() {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; addGenerator(Definition.class, JavaDefinitionWriter.class); // WSDL2Java's JavaDefinitionWriter</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; addGenerator(Definition.class, MyDeployWriter.class); // our DeployWriter</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; addGenerator(Definition.class, JavaUndeployWriter.class); // WSDL2Java's JavaUndeployWriter</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>}</tt>
<br> &nbsp;</p>
</li>
<li>Now we must write the API's to our tool.&nbsp; Since we've added an option - song - we need both the programmatic API - an extension of Parser (actually Emitter in this case since we're extending WSDL2Java and Emitter is WSDL2Java's parser extension) - and the command line API.</li>
<li style="list-style: none">
<p>
<br> Here is our programmatic API.&nbsp; It adds song accessors to Emitter.&nbsp; It also, in the constructor, lets the factory know about the emitter and the emitter know about the factory.</p>
<p>
<tt>public class MyEmitter extends Emitter {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public static final int RUM&nbsp; = 0;</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public static final int WORK = 1;</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; private int song = -1;</tt>
</p>
<p>
<tt>&nbsp;&nbsp;&nbsp; public MyEmitter() {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; MyGeneratorFactory factory = new MyGeneratorFactory();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; setFactory(factory);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; factory.setEmitter(this);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public int getSong() {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; return song;</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public void setSong(int song) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; this.song = song;</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>}</tt>
</p>
<p>And here is our command line API.&nbsp; It's a bit more complex that our previous example's main program, but it does 2 extra things:</p>
<ol>
<li>accept a new command line option:&nbsp; --song rum|work (this is the biggest chunk of the new work).</li>
<li>create a new subclass of Parser</li>
</ol>
<p>
<br> 
<tt>public class WSDL2Useless extends WSDL2Java {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected static final int SONG_OPT = 'g';</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected static final CLOptionDescriptor[] options = new CLOptionDescriptor[]{</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; new CLOptionDescriptor("song",</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLOptionDescriptor.ARGUMENT_REQUIRED,</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SONG_OPT,</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Choose a song for deploy.useless:&nbsp; work or rum")</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; };</tt>
</p>
<p>
<tt>&nbsp;&nbsp;&nbsp; public WSDL2Useless() {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; addOptions(options);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected Parser createParser() {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; return new MyEmitter();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; protected void parseOption(CLOption option) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; if (option.getId() == SONG_OPT) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String arg = option.getArgument();</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (arg.equals("rum")) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((MyEmitter) parser).setSong(MyEmitter.RUM);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (arg.equals("work")) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((MyEmitter) parser).setSong(MyEmitter.WORK);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; else {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.parseOption(option);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; public static void main(String args[]) {</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; WSDL2Useless useless = new WSDL2Useless();</tt>
</p>
<p>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; useless.run(args);</tt>
<br> 
<tt>&nbsp;&nbsp;&nbsp; }</tt>
<br> 
<tt>}</tt>
</p>
<p>Let's go through this one method at a time.</p>
<ul>
<li>constructor - this constructor adds the new option --song rum|work.&nbsp; (the abbreviated version of this option is "-g", rather an odd abbreviation, but "-s" is the abbreviation for --serverSide and "-S" is the abbreviation for --skeletonDeploy.&nbsp; Bummer.&nbsp; I just picked some other letter.)</li>
<li>createParser - we've got to provide a means by which the parent class can get our Parser extension.</li>
<li>parseOption - this method processes our new option.&nbsp; If the given option isn't ours, just let super.parseOption do its work.</li>
<li>main - this main is actually simpler than the first example's main.&nbsp; The first main had to add our generator to the list of generators.&nbsp; In this example, the factory already did that, so all that this main must do is instantiate itself and run itself.</li>
</ul>
</li>
</ul>
<div class="h5">
<h5>Client SSL</h5>
</div>
<p>The default pluggable secure socket factory module (see <a href="##Pluggable%20APIs">Pluggable APIs</a>) uses JSSE security. Review the JSSE documentation for details on installing, registering, and configuring JSSE for your runtime environment.</p>
  
<div class="h2">
<h2>Axis Architecture Guide</h2>
</div>
<div class="h5">
<h5>Axis Architecture Guide</h5>
</div>
<p>
<br> 
<em>1.2 Version</em>
<br> 
<em>Feedback: axis-dev@ws.apache.org</em>
</p>
<div class="h5">
<h5>Introduction</h5>
</div>
<p>This guide records some of the rationale of the architecture and design of Axis.</p>
<div class="h5">
<h5>Architectural Overview</h5>
</div>
<p>Axis consists of several subsystems working together, as we shall see later. In this section we'll give you an overview of how the core of Axis works.</p>
<div class="h5">
<h5>Handlers and the Message Path in Axis</h5>
</div>
<p>Put simply, Axis is all about processing Messages. When the central Axis processing logic runs, a series of <strong>Handlers</strong> are each invoked in order. The particular order is determined by two factors - deployment configuration and whether the engine is a client or a server. The object which is passed to each Handler invocation is a <strong>MessageContext</strong>. A MessageContext is a structure which contains several important parts: 1) a "request" message, 2) a "response" message, and 3) a bag of properties. More on this in a bit.</p>
<p>There are two basic ways in which Axis is invoked:</p>
<ol>
<li>As a <strong>server</strong>, a <strong>Transport Listener</strong> will create a MessageContext and invoke the Axis processing framework.</li>
<li>As a <strong>client</strong>, application code (usually aided by the client programming model of Axis) will generate a MessageContext and invoke the Axis processing framework.</li>
</ol>
<p>In either case, the Axis framework's job is simply to pass the resulting MessageContext through the configured set of Handlers, each of which has an opportunity to do whatever it is designed to do with the MessageContext.</p>
<div class="h5">
<h5>Message Path on the Server</h5>
</div>
<p>The server side message path is shown in the following diagram. The small cylinders represent Handlers and the larger, enclosing cylinders represent <strong>Chains</strong> (ordered collections of Handlers which will be described shortly).<br> 
<img alt="" src="images/ServerMessagePath.jpg"><br> A message arrives (in some protocol-specific manner) at a Transport Listener. In this case, let's assume the Listener is a HTTP servlet. It's the Listener's job to package the protocol-specific data into a <strong>Message</strong> object (org.apache.axis.Message), and put the Message into a <strong>MessageContext</strong>. The MessageContext is also loaded with various <strong>properties</strong> by the Listener -&nbsp; in this example the property "http.SOAPAction" would be set to the value of the SOAPAction HTTP header. The Transport Listener also sets the <strong>transportName</strong> String on the MessageContext , in this case to "http". Once the MessageContext is ready to go, the Listener hands it to the AxisEngine.</p>
<p>The AxisEngine's first job is to look up the transport by name. The transport is an object which contains a <strong>request</strong> Chain, a <strong>response</strong> Chain, or perhaps both. A <strong>Chain</strong> is a Handler consisting of a sequence of Handlers which are invoked in turn -- more on Chains later. If a transport request Chain exists, it will be invoked, passing the MessageContext into the invoke() method. This will result in calling all the Handlers specified in the request Chain configuration.</p>
<p>After the transport request Handler, the engine locates a global request Chain, if configured, and then invokes any Handlers specified therein.</p>
<p>At some point during the processing up until now, some Handler has hopefully set the <strong>serviceHandler</strong> field of the MessageContext (this is usually done in the HTTP transport by the "URLMapper" Handler, which maps a URL like "http://localhost/axis/services/AdminService" to the "AdminService" service). This field determines the Handler we'll invoke to execute service-specific functionality, such as making an RPC call on a back-end object. Services in Axis are typically instances of the "SOAPService" class (org.apache.axis.handlers.soap.SOAPService), which may contain <strong>request</strong> and <strong>response</strong> Chains (similar to what we saw at the transport and global levels), and must contain a <strong>provider</strong>, which is simply a Handler responsible for implementing the actual back end logic of the service.</p>
<p>For RPC-style requests, the provider is the org.apache.axis.providers.java.RPCProvider class. This is just another Handler that, when invoked, attempts to call a backend Java object whose class is determined by the "className" parameter specified at deployment time. It uses the SOAP RPC convention for determining the method to call, and makes sure the types of the incoming XML-encoded arguments match the types of the required parameters of the resulting method.</p>
<div class="h5">
<h5>The Message Path on the Client</h5>
</div>
<p>The Message Path on the client side is similar to that on the server side, except the order of scoping is reversed, as shown below.<br> 
<img alt="" src="images/ClientMessagePath.jpg"><br> The <strong>service</strong> Handler, if any, is called first - on the client side, there is no "provider" since the service is being provided by a remote node, but there is still the possibility of request and response Chains. The service request and response Chains perform any service-specific processing of the request message on its way out of the system, and also of the response message on its way back to the caller.</p>
<p>After the service request Chain, the global request Chain, if any, is invoked, followed by the transport. The <strong>Transport Sender</strong>, a special Handler whose job it is to actually perform whatever protocol-specific operations are necessary to get the message to and from the target SOAP server, is invoked to send the message. The response (if any) is placed into the responseMessage field of the MessageContext, and the MessageContext then propagates through the response Chains - first the transport, then the global, and finally the service.</p>
<div class="h5">
<h5>Subsystems</h5>
</div>
<p>Axis comprises several subsystems working together with the aim of separating responsibilities cleanly and making Axis modular. Subsystems which are properly layered enable parts of a system to be used without having to use the whole of it (or hack the code).</p>
<p>The following diagram shows the layering of subsystems. The lower layers are independent of the higher layers. The 'stacked' boxes represent mutually independent, although not necessary mutually exclusive, alternatives. For example, the HTTP, SMTP, and JMS transports are independent of each other but may be used together.</p>
<p>
<img alt="" src="images/subsystems.jpg"></p>
<p>In fact, the Axis source code is not as cleanly separated into subsystems as the above diagram might imply. Some subsystems are spread over several packages and some packages overlap more than one subsystem. Proposals to improve the code structure and make it conform more accurately to the notional Axis subsystems will be considered when we get a chance.</p>
<div class="h5">
<h5>Message Flow Subsystem</h5>
</div>
<div class="h5">
<h5>Handlers and Chains</h5>
</div>
<p>Handlers are invoked in sequence to process messages. At some point in the sequence a Handler may send a request and receive a response or else process a request and produce a response. Such a Handler is known as the <em>pivot point</em> of the sequence. As described above, Handlers are either transport-specific, service-specific, or global. The Handlers of each of these three different kinds are combined together into Chains. So the overall sequence of Handlers comprises three Chains: transport, global, and service. The following diagram shows two sequences of handlers: the client-side sequence on the left and the server-side sequence on the right.<br> 
<img alt="" src="images/pivots.jpg"></p>
<p>A web service does not necessarily send a response message to each request message, although many do. However, response Handlers are still useful in the message path even when there isn't a response message, e.g. to stop timers, clean up resources, etc.</p>
<p>A Chain is a composite Handler, i.e. it aggregates a collection of Handlers as well as implementing the Handler interface as shown in the following UML diagram:<br> 
<img alt="" src="images/chainclasses.jpg"></p>
<p>A Chain also has similarities to the Chain of Responsibility design pattern in which a request flows along a sequence of Handlers until it is processed. Although an Axis Chain may process a request in stages over a succession of Handlers, it has the same advantages as Chain of Responsibility: flexibility and the ease with which new function can be added.</p>
<p>Back to message processing -- a message is processed by passing through the appropriate Chains. A message context is used to pass the message and associated environment through the sequence of Handlers. The model is that Axis Chains are constructed offline by having Handlers added to them one at a time. Then they are turned online and message contexts start to flow through the Chains. Multiple message contexts may flow through a single Chain concurrently. Handlers are never added to a Chain once it goes online. If a Handler needs to be added or removed, the Chain must be 'cloned', the modifications made to the clone, and then the clone made online and the old Chain retired when it is no longer in use. Message contexts that were using the old Chain continue to use it until they are finished. This means that Chains do not need to cope with the addition and removal of Handlers while the Chains are processing message contexts -- an important simplification.</p>
<p>The deployment registry has factories for Handlers and Chains. Handlers and Chains can be defined to have 'per-access', 'per-request', or 'singleton' scope although the registry currently only distinguishes between these by constructing non-singleton scope objects when requested and constructing singleton scope objects once and holding on to them for use on subsequent creation requests.</p>
<div class="h5">
<h5>Targeted Chains</h5>
</div>
<p>A <strong>Targeted Chain</strong> is a special kind of chain which may have any or all of: a request Handler, a pivot Handler, and a response Handler. The following class diagram shows how Targeted Chains relate to Chains. Note that a Targeted Chain is an aggregation of Handlers by virtue of extending the Chain interface which is an aggregation of Handlers.</p>
<p>
<img alt="" src="images/targetedchainclasses.jpg"></p>
<p>A service is a special kind of Targeted Chain in which the pivot Handler is known as a "provider".</p>
<div class="h5">
<h5>Fault Processing</h5>
</div>
<p>Now let's consider what happens when a fault occurs. The Handlers prior to the Handler that raised the fault are driven, in reverse order, for onFault (previously misnamed 'undo'). The scope of this backwards scan is interesting: all Handlers previously invoked for the current Message Context are driven.</p>
<p>
<em>Need to explain how "FaultableHandlers" and "WSDD Fault Flows" fit in.</em>
</p>
<div class="h5">
<h5>Message Contexts</h5>
</div>
<p>The current structure of a MessageContext is shown below. Each message context may be associated with a request Message and/or a response Message. Each Message has a SOAPPart and an Attachments object, both of which implement the Part interface.<br> 
<img alt="" src="images/messagecontext.jpg"><br> The typing of Message Contexts needs to be carefully considered in relation to the Axis architecture. Since a Message Context appears on the Handler interface, it should not be tied to or biassed in favour of&nbsp; SOAP. The current implementation is marginally biassed towards SOAP in that the setServiceHandler method narrows the specified Handler to a SOAPService.</p>
<div class="h5">
<h5>Engine</h5>
</div>
<p>Axis has an abstract AxisEngine class with two concrete subclasses: AxisClient drives the client side handler chains and AxisServer drives the server side handler chains. The relationships between these classes is fairly simple:<br> 
<img alt="" src="images/engineclasses.jpg"></p>
<div class="h5">
<h5>Engine Configuration</h5>
</div>
<p>The EngineConfiguration interface is the means of configuring the Handler factories and global options of an engine instance. An instance of a concrete implementation of EngineConfiguration must be passed to the engine when it is created and the engine must be notified if the EngineConfiguration contents are modified. The engine keeps a reference to the EngineConfiguration and then uses it to obtain Handler factories and global options.</p>
<p>The EngineConfiguration interface belongs to the Message Flow subsystem which means that the Message Flow subsystem does not depend on the Administration subsystem.</p>
<div class="h5">
<h5>Administration Subsystem</h5>
</div>
<p>The Administration subsystem provides a way of configuring Axis engines. The configuration information an engine needs is a collection of factories for runtime artefacts such as Chains and SOAPServices and a set of global configuration options for the engine.</p>
<p>The Message Flow subsystem's EngineConfiguration interface is implemented by the Administration subsystem. FileProvider enables an engine to be configured statically from a file containing a deployment descriptor which is understood by the WSDDDeployment class. SimpleProvider, on the other hand, enables an engine to be configured dynamically.<br> 
<img alt="" src="images/engineconfig.jpg"></p>
<div class="h5">
<h5>WSDD-Based Administration</h5>
</div>
<p>WSDD is an XML grammer for deployment descriptors which are used to statically configure Axis engines. Each Handler needs configuration in terms of the concrete class name of a factory for the Handler, a set of options for the handler, and a lifecycle scope value which determines the scope of sharing of instances of the Handler.</p>
<p>The structure of the WSDD grammar is mirrored by a class hierarchy of factories for runtime artefacts. The following diagram shows the classes and the types of runtime artefacts they produce (a dotted arrow means "instantiates").<br> 
<img alt="" src="images/wsddclasses.jpg"></p>
<div class="h5">
<h5>Message Model Subsystem</h5>
</div>
<div class="h5">
<h5>SOAP Message Model</h5>
</div>
<p>The XML syntax of a SOAP message is fairly simple. A SOAP message consists of an <em>envelope</em> containing:</p>
<ul>
<li>an optional <em>header</em> containing zero or more <em>header entries</em> (sometimes ambiguously referred to as <em>headers</em>),</li>
<li>a <em>body</em> containing zero or more <em>body entries</em>, and</li>
<li>zero or more additional, non-standard elements.</li>
</ul>
<p>The only body entry defined by SOAP is a <em>SOAP fault</em> which is used for reporting errors.</p>
<p>Some of the XML elements of a SOAP message define namespaces, each in terms of a URI and a local name, and encoding styles, a standard one of which is defined by SOAP.</p>
<p>Header entries may be tagged with the following optional SOAP attributes:</p>
<ul>
<li>
<em>actor</em> which specifies the intended recipient of the header entry in terms of a URI, and</li>
<li>
<em>mustUnderstand</em> which specifies whether or not the intended recipient of the header entry is required to process the header entry.</li>
</ul>
<p>So the SOAP message model looks like this:<br> 
<img alt="" src="images/soapmessagemodel.jpg"></p>
<div class="h5">
<h5>Message Elements</h5>
</div>
<p>The classes which represent SOAP messages form a class hierarchy based on the MessageElement class which takes care of namespaces and encodings. The SOAPHeaderElement class looks after the actor and mustUnderstand attributes.<br> 
<img alt="" src="images/messagemodelclasses.jpg"> During deserialization, a parse tree is constructed consisting of instances of the above classes in parent-child relationships as shown below.<br> 
<img alt="" src="images/messagetree.jpg"></p>
<div class="h5">
<h5>Deserialization</h5>
</div>
<p>The class mainly responsible for XML parsing, i.e. deserialization, is DeserializationContext ('DC'). DC manages the construction of the parse tree and maintains a stack of SAX handlers, a reference to the MessageElement that is currently being deserialized, a stack of namespace mappings, a mapping from IDs to elements, a set of type mappings for deserialization (see <a href="##Encoding Subsystem">Encoding Subsystem</a>) and a SAX event recorder.</p>
<p>Elements that we scan over, or ones for which we don't have a particular deserializer, are recorded - in other words, the SAX events are placed into a queue which may be 'played back' at a later time to any SAX ContentHandler.</p>
<p>Once a SOAPEnvelope has been built, either through a parse or manual construction by the user, it may be output using a SerializationContext (also see <a href="##Encoding%20Subsystem">Encoding Subsystem</a>). MessageElements all have an output() method which lets them write out their contents.</p>
<p>The SAX handlers form a class hierarchy:<br> 
<img alt="" src="images/SAXHandlerClasses.jpg"></p>
<p>and stack up as shown in the following diagram:<br> 
<img alt="" src="images/SAXhandlers.jpg"></p>
<p>Initially, the SAX handler stack just contains an instance of EnvelopeHandler which represents the fact that parsing of the SOAP envelope has not yet started. The EnvelopeHandler is constructed with a reference to an EnvelopeBuilder, which is the SAX handler responsible for parsing the SOAP envelope.</p>
<p>During parsing, DC receives the events from the SAX parser and notifies either the SAX handler on the top of its handler stack, the SAX event recorder, or both.</p>
<p>On the start of an element, DC calls the SAX handler on the top of its handler stack for onStartChild. This method returns a SAX handler to be used to parse the child, which DC pushes on its SAX handler stack and calls for startElement. startElement, amongst other things, typically creates a new MessageElement of the appropriate class and calls DC for pushNewElement. The latter action creates the parent-child relationships of the parse tree.</p>
<p>On the end of an element, DC pops the top SAX handler from its handler stack and calls it for endElement. It then drives SAX handler which is now on the top of the handler stack for onEndChild. Finally, it sets the MessageElement that is currently being deserialized to the parent of the current one.</p>
<p>Elements which are not defined by SOAP are treated using a SOAPHandler as a SAX event handler and a MessageElement as a node in the parse tree.</p>
<div class="h5">
<h5>Encoding Subsystem</h5>
</div>
<p>Encoding is most easily understood from the bottom up. The basic requirement is to transform between values of programming language datatypes and their XML representations. In Axis, this means encoding (or 'serializing') Java objects and primitives into XML and decoding (or 'deserializing') XML into Java objects and primitives. The basic classes that implement these steps are <em>serializers</em> and <em>deserializers</em>.<br> 
<img alt="" src="images/serclasses.jpg"></p>
<p>Particular serializers and deserializers are written to support a specific XML processing mechanism such as DOM or SAX. So <em>serializer factories</em> and <em>deserializer factories</em> are introduced to construct serializers and deserializers for a XML processing mechanism which is specified as a parameter.<br> 
<img alt="" src="images/serfactoryclasses.jpg"></p>
<p>As is apparent from the above class diagrams, each pair of Java type and XML data type which needs encoding and decoding requires specific serializers and deserializers (actually one of each per XML processing mechanism). So we need to maintain a mapping from a pair of Java type and XML data type, identified by a QName, to a serializer factory and a deserializer factory. Such a mapping is known as a <em>type mapping</em>. The type mapping class hierarchy is shown below. Notice how the default type mapping instantiates the various serializer and deserialiser factories.<br> 
<img alt="" src="images/typemappingclasses.jpg"></p>
<p>There is one final level of indirection. How do we know which type mapping to use for a particular message? This is determined by the encoding which is specified in the message. A <em>type mapping registry</em> maintains a map from encoding name (URI) to type mapping. Note that the XML data type QNames are defined by the encoding.<br> 
<img alt="" src="images/typemappingclasses.jpg"></p>
<p>So, in summary, to encode a Java object or primitive data value to a XML datatype or to decode the latter to the former, we need to know:</p>
<ul>
<li>the Java type we are dealing with,</li>
<li>the QName of the XML data type we want to encode it as,</li>
<li>the XML processing mechanism we are using, and</li>
<li>the encoding name.</li>
</ul>
<div class="h5">
<h5>WSDL Tools Subsystem</h5>
</div>
<p>The WSDL Tools subsystem contains WSDL2Java and Java2WSDL. The Axis runtime does not depend on these tools -- they are just there to make life easier for the user. </p>
<div class="h5">
<h5>WSDL2Java</h5>
</div>
<p>This tool takes a description of a web service written in WSDL and emits Java artefacts used to access the web service.</p>
<p>There are three layers inside the tool:</p>
<ul>
<li>framework: SymbolTable, Emitter, WriterFactory</li>
<li>WSDL2Java plugin to the framework: WSDL2Java (the main), JavaWriterFactory, and all the WSDL-relative writers: JavaPortTypeWriter, JavaBindingWriter, etc.</li>
<li>The actual WSDL2Java emitters, one for each file generated: JavaInterfaceWriter, JavaStubWriter, etc.</li>
</ul>
<p>
<a name="java/architecture-guide.html#Java2WSDL"></a>
</p>
<div class="h5">
<h5>Java2WSDL</h5>
</div>
<p>tbd.</p>
<div class="h5">
<h5>Interaction Diagrams</h5>
</div>
<div class="h5">
<h5>Client Side Processing</h5>
</div>
<p>The client side Axis processing constructs a Call object with associated Service, MessageContext, and request Message as shown below before invoking the AxisClient engine.</p>
<p>
<img alt="" src="images/clientobjects.jpg"><br> An instance of&nbsp; Service and its related AxisClient instance are created before the Call object. The Call object is then created by invoking the Service.createCall <em>factory method</em>. Call.setOperation creates a Transport instance, if a suitable one is not already associated with the Call instance. Then Call.invoke creates a MessageContext and associated request Message, drives AxisClient.invoke, and processes the resultant MessageContext. This significant method calls in this sequence are shown in the following interaction diagram.<br> 
<img alt="" src="images/clientinteraction.jpg"></p>
<div class="h5">
<h5>Pluggable-Component Discovery</h5>
</div>
<p>While most pluggable components infrastructures (jaxp/xerces, commons-logging, etc) provide discovery features, it is foreseen that there are situations where these may evolve over time. For example, as leading-edge technologies are reworked and adopted as standards, discovery mechanisms are likely to change.</p>
<p>Therefore, component discovery must be relegated to a <strong>single</strong> point of control within AXIS, typically an AXIS-specific factory method. These factory methods should conform to current standards, when available. As technologies evolve and/or are standardized, the factory methods should be kept up-to-date with appropriate discovery mechanisms.</p>
<div class="h5">
<h5>Open Issues</h5>
</div>
<ol>
<li>The relationship between the Axis subsystems needs to be documented and somewhat cleaned up as there is leakage of responsibilities between some of the subsystems. For example, there is some SOAP and HTTP bias in the basic MessageContext type and associated classes.</li>
<li>What classes are included in the "encoding" subsystem? Are the encoding and message model subsystems independent of the other subsystems which depend on "message flow"?</li>
<li>(Possibly related to the previous issue) How should we distribute the classes in the above diagram between the Axis subsystems taking into account&nbsp; SOAP-specific and HTTP-specific features?</li>
<li>The Axis Engine currently knows about three layers of handlers: transport, global, and service. However, architecturally, this is rather odd. What "law" of web services ensures that there will always and only ever be <em>three</em> layers? It would be more natural to use Targeted Chains with their more primitive notion of request, pivot, and response Handlers. We would then implemented the Axis Engine as a Targeted Chain whose pivot Handler is itself a Targeted Chain with global request and response Handlers and a service pivot Handler (which is itself a Targeted Chain as we have just described). Such an Axis Engine architecture is shown in the diagram below.</li>
<li style="list-style: none">
<br> 
<img alt="" src="images/stcengine.jpg"></li>
<li>WSDDService.faultFlows is initialised to an empty Vector and there is no way of adding a fault flow to it. Is this dead code or is something else missing?</li>
<li>If a fault occurs after the pivot Handler, should the backwards scan notify Handlers which were invoked prior to the pivot Handler? The current implementation does notify such Handlers. However, this is not consistent with the processing of faults raised in a downstream system and stored in the message context by the pivot Handler. These faults are passed through any response Handlers, but do not cause onFault to be driven in the local engine.</li>
<li style="list-style: none">
<br> &nbsp; <p>&nbsp;<br> &nbsp;<br> &nbsp;</p>
<p>We need to consider what's going on here. If you take a sequence of Handlers and then introduce a distribution boundary into the sequence, what effect should that have on the semantics of the sequence in terms of its effects on message contexts? The following diagram shows a client-side Handler sequence invoking a server-side Handler sequence. We need to consider how the semantics of this combined sequence compares with the sequence formed by omitting the transport-related Handlers.<br> 
<img alt="" src="images/pivots2.jpg"></p>
</li>
</ol>
  
<div class="h2">
<h2>Axis Reference Guide</h2>
</div>
<div class="h5">
<h5>Axis Reference Guide</h5>
</div>
<p>
<em>1.2 Version</em>
<br> 
<em>Feedback: axis-dev@ws.apache.org</em>
</p>
<div class="h5">
<h5>Tools Reference</h5>
</div>
<div class="h5">
<h5>WSDL2Java Reference</h5>
</div>
<p>Usage:&nbsp; java org.apache.axis.wsdl.WSDL2Java [options] WSDL-URI<br> Options:<br> 
<tt>&nbsp;&nbsp;&nbsp;&nbsp; -h, --help<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print this message and exit<br> &nbsp;&nbsp;&nbsp;&nbsp; -v, --verbose<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print informational messages<br> &nbsp;&nbsp;&nbsp;&nbsp; -n, --noImports<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; only generate code for the immediate WSDL document<br> &nbsp;&nbsp;&nbsp;&nbsp; -O, --timeout &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeout in seconds (default is 45, specify -1 to disable)<br> &nbsp;&nbsp;&nbsp;&nbsp; -D, --Debug<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print debug information<br> &nbsp;&nbsp;&nbsp; -W, --noWrapped<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; turn off support for "wrapped" document/literal<br> &nbsp;&nbsp;&nbsp;&nbsp; -s, --server-side<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emit server-side bindings for web service<br> &nbsp;&nbsp;&nbsp;&nbsp; -S, --skeletonDeploy &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deploy skeleton (true) or implementation (false) in deploy.wsdd.<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default is false.&nbsp; Assumes --server-side.<br> &nbsp;&nbsp;&nbsp;&nbsp; -N, --NStoPkg &lt;argument&gt;=&lt;value&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mapping of namespace to package<br> &nbsp;&nbsp;&nbsp;&nbsp; -f, --fileNStoPkg &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file of NStoPkg mappings (default NStoPkg.properties)<br> &nbsp;&nbsp;&nbsp;&nbsp; -p, --package &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; override all namespace to package mappings, use this package<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name instead<br> &nbsp;&nbsp;&nbsp;&nbsp; -o, --output &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output directory for emitted files<br> &nbsp;&nbsp;&nbsp;&nbsp; -d, --deployScope &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add scope to deploy.xml: "Application", "Request", "Session"<br> &nbsp;&nbsp;&nbsp;&nbsp; -t, --testCase<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emit junit testcase class for web service<br> &nbsp;&nbsp;&nbsp;&nbsp; -a, --all<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; generate code for all elements, even unreferenced ones<br> &nbsp;&nbsp;&nbsp;&nbsp; -T, --typeMappingVersion<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; indicate 1.1 or 1.2. The default is 1.1 (SOAP 1.1 JAX-RPC compliant.<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.2 indicates SOAP 1.1 encoded.)<br> &nbsp;&nbsp;&nbsp;&nbsp; -F, --factory &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name of a custom class that implements GeneratorFactory interface<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (for extending Java generation functions)<br> &nbsp;&nbsp;&nbsp;&nbsp; -i, --nsInclude &lt;namespace&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; namescape to specifically include in the generated code (defaults to<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all namespaces unless specifically excluded with the -x option)<br> &nbsp;&nbsp;&nbsp;&nbsp; -x, --nsExclude &lt;namespace&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; namespace to specifically exclude from the generated code (defaults to<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; none excluded until first namespace included with -i option)<br> &nbsp;&nbsp;&nbsp;&nbsp; -p, --property &lt;name&gt;=&lt;value&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name and value of a property for use by the custom GeneratorFactory<br> &nbsp;&nbsp;&nbsp;&nbsp; -H, --helperGen<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emits separate Helper classes for meta data<br> &nbsp;&nbsp;&nbsp;&nbsp; -U, --user &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username to access the WSDL-URI<br> &nbsp;&nbsp;&nbsp;&nbsp; -P, --password &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password to access the WSDL-URI<br> &nbsp;&nbsp;&nbsp;&nbsp; -c, --implementationClassName &lt;argument&gt;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use this as the implementation class<br>
</tt>
</p>
<tt></tt>
<div class="h5">
<h5>-h, --help</h5>
</div>
<p>
<tt>Print the usage statement and exit</tt>
</p>
<div class="h5">
<h5>-v, --verbose</h5>
</div>
<p>
<tt>See what the tool is generating as it is generating it.</tt>
</p>
<div class="h5">
<h5>-n, --noImports</h5>
</div>
<p>
<tt>Only generate code for the WSDL document that appears on the command line.&nbsp; The default behaviour is to generate files for all WSDL documents, the immediate one and all imported ones.</tt>
</p>
<div class="h5">
<h5>-O, --timeout</h5>
</div>
<p>
<tt>Timeout in seconds. The default is 45. Use -1 to disable the timeout.</tt>
</p>
<div class="h5">
<h5>-D, --Debug</h5>
</div>
<p>
<tt>Print debug information, which currently is WSDL2Java's symbol table. Note that this is only printed after the symbol table is complete, ie., after the WSDL is parsed successfully.</tt>
</p>
<div class="h5">
<h5>-W, --noWrapped</h5>
</div>
<p>
<tt>This turns off the special treatment of what is called "wrapped" document/literal style operations. &nbsp;By default, WSDL2Java will recognize the following conditions:</tt>
</p>
<ul>
<li>
<tt>If an input message has is a single part.</tt>
</li>
<li>
<tt>The part is an element.</tt>
</li>
<li>
<tt>The element has the same name as the operation</tt>
</li>
<li>
<tt>The element's complex type has no attributes<br>
</tt>
</li>
</ul>
<p>
<tt>When it sees this, WSDL2Java will 'unwrap' the top level element, and treat each of the components of the element as arguments to the operation. This type of WSDL is the default for Microsoft .NET web services, which wrap up RPC style arguments in this top level schema element.</tt>
</p>
<div class="h5">
<h5>-s, --server-side</h5>
</div>
<p>
<tt>Emit the server-side bindings for the web service:</tt>
</p>
<ul>
<li>
<tt>a skeleton class named &lt;bindingName&gt;Skeleton.&nbsp; This may or may not be emitted (see -S, --skeletonDeploy).</tt>
</li>
<li>
<tt>an implementation template class named &lt;bindingName&gt;Impl.&nbsp; Note that, if this class already exists, then it is not emitted.</tt>
</li>
<li>
<tt>deploy.wsdd</tt>
</li>
<li>
<tt>undeploy.wsdd</tt>
</li>
</ul>
<div class="h5">
<h5>-S, --skeletonDeploy &lt;argument&gt;</h5>
</div>
<p>
<tt>Deploy either the skeleton (true) or the implementation (false) in deploy.wsdd.&nbsp; In other words, for "true" the service clause in the deploy.wsdd file will look something like:</tt>
</p>
<pre class="example">
<tt>&lt;service name="AddressBook" provider="java:RPC"&gt;
 &lt;parameter name="className" value="samples.addr.AddressBookSOAPBindingSkeleton"/&gt;
 ...
&lt;/service&gt;
</tt>
</pre>
<p>
<tt>and for "false" it would look like:</tt>
</p>
<pre class="example">
<tt>&lt;service name="AddressBook" provider="java:RPC"&gt;
 &lt;parameter name="className" value="samples.addr.AddressBookSOAPBindingImpl"/&gt;
   ...
&lt;/service&gt;
</tt>
</pre>
<p>
<tt>The default for this option is false. When you use this option, the --server-side option is assumed, so you don't have to explicitly specify --server-side as well.</tt>
</p>
<div class="h5">
<h5>-N, --NStoPkg &lt;argument&gt;=&lt;value&gt;</h5>
</div>
<p>
<tt>By default, package names are generated from the namespace strings in the WSDL document in a magical manner (typically, if the namespace is of the form "http://x.y.com" or "urn:x.y.com" the corresponding package will be "com.y.x"). If this magic is not what you want, you can provide your own mapping using the --NStoPkg argument, which can be repeated as often as necessary, once for each unique namespace mapping. For example, if there is a namespace in the WSDL document called "urn:AddressFetcher2", and you want files generated from the objects within this namespace to reside in the package samples.addr, you would provide the following option to WSDL2Java:</tt>
</p>
<pre>
<tt>--NStoPkg urn:AddressFetcher2=samples.addr
</tt>
</pre>
<p>
<tt>(Note that if you use the short option tag, "-N", then there must not be a space between "-N" and the namespace.)<br>
</tt>
</p>
<div class="h5">
<h5>-f, --fileNStoPkg &lt;argument&gt;</h5>
</div>
<p>
<tt>If there are a number of namespaces in the WSDL document, listing a mapping for them all could become tedious. To help keep the command line terse, WSDL2Java will also look for mappings in a properties file. By default, this file is named "NStoPkg.properties" and it must reside in the default package (ie., no package). But you can explicitly provide your own file using the --fileNStoPkg option.</tt>
</p>
<p>
<tt>The entries in this file are of the same form as the arguments to the --NStoPkg command line option. For example, instead of providing the command line option as above, we could provide the same information in NStoPkg.properties:</tt>
</p>
<pre>
<tt>urn\:AddressFetcher2=samples.addr
</tt>
</pre>
<p>
<tt>(Note that the colon must be escaped in the properties file.)</tt>
</p>
<p>
<tt>If an entry for a given mapping exists both on the command line and in the properties file, the command line entry takes precedence.</tt>
</p>
<div class="h5">
<h5>-p, --package &lt;argument&gt;</h5>
</div>
<p>
<tt>This is a shorthand option to map all namespaces in a WSDL document to the same Java package name. This can be useful, but dangerous. You must make sure that you understand the effects of doing this. For instance there may be multiple types with the same name in different namespaces. It is an error to use the --NStoPkg switch and --package at the same time.</tt>
</p>
<div class="h5">
<h5>-o, --output &lt;argument&gt;</h5>
</div>
<p>
<tt>The root directory for all emitted files.</tt>
</p>
<div class="h5">
<h5>-d, --deployScope &lt;argument&gt;</h5>
</div>
<p>
<tt>Add scope to deploy.wsdd: "Application", "Request", or "Session". If this option does not appear, no scope tag appears in deploy.wsdd, which the Axis runtime defaults to "Request".</tt>
</p>
<div class="h5">
<h5>-t, --testCase</h5>
</div>
<p>
<tt>Generate a client-side JUnit test case. This test case can stand on its own, but it doesn't really do anything except pass default values (null for objects, 0 or false for primitive types). Like the generated implementation file, the generated test case file could be considered a template that you may fill in.</tt>
</p>
<div class="h5">
<h5>-a, --all</h5>
</div>
<p>
<tt>Generate code for all elements, even unreferenced ones. By default, WSDL2Java only generates code for those elements in the WSDL file that are referenced.</tt>
</p>
<p>
<tt>A note about what it means to be referenced. We cannot simply say: start with the services, generate all bindings referenced by the service, generate all portTypes referenced by the referenced bindings, etc. What if we're generating code from a WSDL file that only contains portTypes, messages, and types? If WSDL2Java used service as an anchor, and there's no service in the file, then nothing will be generated. So the anchor is the lowest element that exists in the WSDL file in the order:</tt>
</p>
<ol>
<li>
<tt>types</tt>
</li>
<li>
<tt>portTypes</tt>
</li>
<li>
<tt>bindings</tt>
</li>
<li>
<tt>services</tt>
</li>
</ol>
<p>
<tt>For example, if a WSDL file only contained types, then all the listed types would be generated. But if a WSDL file contained types and a portType, then that portType will be generated and only those types that are referenced by that portType.</tt>
</p>
<p>
<tt>Note that the anchor is searched for in the WSDL file appearing on the command line, <strong>not</strong> in imported WSDL files. This allows one WSDL file to import constructs defined in another WSDL file without the nuisance of having all the imported WSDL file's constructs generated.</tt>
</p>
<div class="h5">
<h5>-T, --typeMappingVersion &lt;argument&gt;</h5>
</div>
<p>
<tt>Indicate 1.1 or 1.2. The default is 1.2 (SOAP 1.2 JAX-RPC compliant).</tt>
</p>
<div class="h5">
<h5>-F, --factory &lt;argument&gt;</h5>
</div>
<p>
<tt>Used to extend the functionality of the WSDL2Java emitter. The argument is the name of a class which extends JavaWriterFactory.</tt>
</p>
<div class="h5">
<h5>-H, --helperGen</h5>
</div>
<p>
<tt>Emits separate Helper classes for meta data.</tt>
</p>
<div class="h5">
<h5>-U, --user &lt;argument&gt;</h5>
</div>
<p>
<tt>This username is used in resolving the WSDL-URI provided as the input to WSDL2Java. If the URI contains a username, this will override the command line switch. An example of a URL with a username and password is: <span class="codefrag">http://user:password@hostname:port/path/to/service?WSDL</span></tt>
</p>
<div class="h5">
<h5>-P, --password &lt;argument&gt;</h5>
</div>
<p>
<tt>This password is used in resolving the WSDL-URI provided as the input to WSDL2Java. If the URI contains a password, this will override the command line switch.<br>
</tt>
</p>
<div class="h5">
<h5>-c, --implementationClassName &lt;argument&gt;</h5>
</div>
<p>
<tt>Set the name of the implementation class.Especially useful when exporting an existing class as a web service using java2wsdl followed by wsdl2java.&nbsp;If you are using the skeleton deploy option you must make sure, after generation, that your implementation class implements the port type name interface generated by wsdl2java.&nbsp;You should also make sure that all your exported methods throws java.lang.RemoteException.</tt>
</p>
<div class="h5">
<h5>Java2WSDL Reference</h5>
</div>
<p>Here is the help message generated from the current tool:</p>
<pre>Java2WSDL emitter
Usage: java org.apache.axis.wsdl.Java2WSDL [options] class-of-portType
Options:
 <tt> -h, --help
    print this message and exit
  -I, --input &lt;argument&gt;
    input WSDL filename
  -o, --output &lt;argument&gt;
    output WSDL filename
  -l, --location &lt;argument&gt;
    service location url
  -P, --portTypeName &lt;argument&gt;
    portType name (obtained from class-of-portType if not specified)
  -b, --bindingName &lt;argument&gt;
    binding name (--servicePortName value + "SOAPBinding" if not specified)
  -S, --serviceElementName &lt;argument&gt;
    service element name (defaults to --servicePortName value + "Service")
  -s, --servicePortName &lt;argument&gt;
    service port name (obtained from --location if not specified)
  -n, --namespace &lt;argument&gt;
    target namespace
  -p, --PkgtoNS &lt;argument&gt;=&lt;value&gt;
    package=namespace, name value pairs
  -m, --methods &lt;argument&gt;
    space or comma separated list of methods to export
  -a, --all
    look for allowed methods in inherited class
  -w, --outputWsdlMode &lt;argument&gt;
    output WSDL mode: All, Interface, Implementation
  -L, --locationImport &lt;argument&gt;
    location of interface wsdl
  -N, --namespaceImpl &lt;argument&gt;
    target namespace for implementation wsdl
  -O, --outputImpl &lt;argument&gt;
    output Implementation WSDL filename, setting this causes
     --outputWsdlMode to be ignored
  -i, --implClass &lt;argument&gt;
    optional class that contains implementation of methods in class-of-portType.  
        The debug information in the class is used
    to obtain the method parameter names, which are used to set
    the WSDL part names.
  -x, --exclude &lt;argument&gt;
    space or comma separated list of methods not to export
  -c, --stopClasses &lt;argument&gt;
    space or comma separated list of class names which will stop
    inheritance search if --all switch is given
  -T, --typeMappingVersion &lt;argument&gt;
    indicate 1.1 or 1.2.  The default is 1.1 (SOAP 1.1 JAX-RPC 
         compliant  1.2 indicates SOAP 1.1 encoded.)
  -A, --soapAction &lt;argument&gt;
    value of the operations soapAction field. Values are DEFAULT,
    OPERATION or NONE. OPERATION forces soapAction to the name
    of the operation.  DEFAULT causes the soapAction to be set
    according to the operations meta data (usually "").  NONE forces
        the soapAction to "".  The default is DEFAULT.
  -y, --style &lt;argument&gt;
    The style of binding in the WSDL, either DOCUMENT, RPC, or WRAPPED.
  -u, --use &lt;argument&gt;
    The use of items in the binding, either LITERAL or ENCODED
  -e, --extraClasses &lt;argument&gt;
    A space or comma separated list of class names to be added to
    the type section.
  -C, --importSchema 
    A file or URL to an XML Schema that should be physically 
    imported into the generated WSDL 
  -X, --classpath 
    additional classpath elements 
Details:
   portType element name= &lt;--portTypeName value&gt; OR &lt;class-of-portType name&gt;
   binding  element name= &lt;--bindingName value&gt; OR &lt;--servicePortName value&gt;Soap
Binding
   service  element name= &lt;--serviceElementName value&gt; OR &lt;--portTypeName value&gt;
Service
   port  element name= &lt;--servicePortName value&gt;
   address location  = &lt;--location value&gt;
</tt>
</pre>
<tt></tt>
<p>
<tt><strong>-h , --help</strong>
<br> Prints the help message.</tt>
</p>
<p>
<tt><strong>-I, --input &lt;WSDL file&gt;</strong>
<br> Optional parameter that indicates the name of the input wsdl file. The output wsdl file will contain everything from the input wsdl file plus the new constructs. If a new construct is already present in the input wsdl file, it is not added. This option is useful for constructing a wsdl file with multiple ports, bindings, or portTypes.</tt>
</p>
<p>
<tt><strong>-o, --output &lt;WSDL file&gt;</strong>
<br> Indicates the name of the output WSDL file. If not specified, a suitable default WSDL file is written into the current directory.</tt>
</p>
<p>
<tt><strong>-l, --location &lt;location&gt;</strong>
<br> Indicates the url of the location of the service. The name after the last slash or backslash is the name of the service port (unless overridden by the -s option). The service port address location attribute is assigned the specified value.</tt>
</p>
<p>
<tt><strong>-P, --portTypeName &lt;name&gt;</strong>
<br> Indicates the name to use for the portType element. If not specified, the class-of-portType name is used.</tt>
</p>
<p>
<tt><strong>-b, --bindingName &lt;name&gt;</strong>
<br> Indicates the name to use for the binding element. If not specified, the value of the --servicePortName + "SoapBinding" is used.</tt>
</p>
<p>
<tt><strong>-S, --serviceElementName &lt;name&gt;</strong>
<br> Indicates the name of the service element. If not specified, the service element is the &lt;portTypeName&gt;Service.</tt>
</p>
<p>
<tt><strong>-s, --servicePortName &lt;name&gt;</strong>
<br> Indicates the name of the service port. If not specified, the service port name is derived from the --location value.</tt>
</p>
<p>
<tt><strong>-n, --namespace &lt;target namespace&gt;</strong>
<br> Indicates the name of the target namespace of the WSDL.</tt>
</p>
<p>
<tt><strong>-p, --PkgToNS &lt;package&gt; &lt;namespace&gt;</strong>
<br> Indicates the mapping of a package to a namespace. If a package is encountered that does not have a namespace, the Java2WSDL emitter will generate a suitable namespace name. This option may be specified multiple times.</tt>
</p>
<p>
<tt><strong>-m, --methods &lt;arguments&gt;</strong>
<br> If this option is specified, only the indicated methods in your interface class will be exported into the WSDL file. The methods list must be comma separated. If not specified, all methods declared in the interface class will be exported into the WSDL file.</tt>
</p>
<p>
<tt><strong>-a, --all</strong>
<br> If this option is specified, the Java2WSDL parser will look into extended classes to determine the list of methods to export into the WSDL file.</tt>
</p>
<p>
<tt><strong>-w, --outputWSDLMode &lt;mode&gt;</strong>
<br> Indicates the kind of WSDL to generate. Accepted values are:</tt>
</p>
<ul>
<li>
<tt>All --- (default) Generates wsdl containing both interface and implementation WSDL constructs.</tt>
</li>
<li>
<tt>Interface --- Generates a WSDL containing the interface constructs (no service element).</tt>
</li>
<li>
<tt>Implementation -- Generates a WSDL containing the implementation. The interface WSDL is imported via the -L option.</tt>
</li>
</ul>
<p>
<tt><strong>-L, --locationImport &lt;url&gt;</strong>
<br> Used to indicate the location of the interface WSDL when generating an implementation WSDL.</tt>
</p>
<p>
<tt><strong>-N, --namespaceImpl &lt;namespace&gt;</strong>
<br> Namespace of the implementation WSDL.</tt>
</p>
<p>
<tt><strong>-O, --outputImpl &lt;WSDL file&gt;</strong>
<br> Use this option to indicate the name of the output implementation WSDL file. If specified, Java2WSDL will produce interface and implementation WSDL files. If this option is used, the -w option is ignored.</tt>
</p>
<p>
<tt><strong>-i, --implClass &lt;impl-class&gt;</strong>
<br> Sometimes extra information is available in the implementation class file. Use this option to specify the implementation class.</tt>
</p>
<p>
<tt><strong>-x, --exclude &lt;list&gt;</strong>
<br> List of methods to not exclude from the wsdl file.</tt>
</p>
<p>
<tt><strong>-c, --stopClasses &lt;list&gt;</strong>
<br> List of classes which stop the Java2WSDL inheritance search.</tt>
</p>
<p>
<tt><strong>-T, --typeMappingVersion &lt;version&gt;</strong>
<br> Choose the default type mapping registry to use. Either 1.1 or 1.2.</tt>
</p>
<p>
<tt><strong>-A, --soapAction &lt;argument&gt;</strong>
<br> The value of the operations soapAction field. Values are DEFAULT, OPERATION or NONE. OPERATION forces soapAction to the name of the operation. DEFAULT causes the soapAction to be set according to the operation's meta data (usually ""). NONE forces the soapAction to "". The default is DEFAULT.</tt>
</p>
<p>
<tt><strong>-y, --style &lt;argument&gt;</strong>
<br> The style of the WSDL document: RPC, DOCUMENT or WRAPPED. The default is RPC. If RPC is specified, an rpc wsdl is generated. If DOCUMENT is specified, a document wsdl is generated. If WRAPPED is specified, a document/literal wsdl is generated using the wrapped approach. Wrapped style forces the use attribute to be literal.</tt>
</p>
<p>
<tt><strong>-u, --use &lt;argument&gt;</strong>
<br> The use of the WSDL document: LITERAL or ENCODED. If LITERAL is specified, the XML Schema defines the representation of the XML for the request. If ENCODED is specified, SOAP encoding is specified in the generated WSDL.</tt>
</p>
<p>
<tt><strong>-e, --extraClasses &lt;argument&gt;</strong>
<br> Specify a space or comma seperated list of class names which should be included in the <strong>types</strong> section of the WSDL document. This is useful in the case where your service interface references a base class and you would like your WSDL to contain XML Schema type defintions for these other classes. The --extraClasses option can be specified duplicate times. Each specification results in the additional classes being added to the list.</tt>
</p>
<p>
<tt><strong>-C, --importSchema</strong>
<br> A file or URL to an XML Schema that should be physically imported into the generated WSDL</tt>
</p>
<p>
<tt>
<br> 
<strong>-X, --classpath</strong>
<br> Additional classpath elements</tt>
</p>
<p>
<tt>&nbsp;</tt>
</p>
<div class="h5">
<h5>Deployment (WSDD) Reference</h5>
</div>
<p>Note : all the elements referred to in this section are in the WSDD namespace, namely "http://xml.apache.org/axis/wsdd/".</p>
<dl>
<dt>
<strong>&lt;deployment&gt;</strong>
</dt>
<dd>The root element of the deployment document which tells the Axis engine that this is a deployment. A deployment document may represent EITHER a complete engine configuration OR a set of components to deploy into an active engine.</dd>
<dt>
<br> 
<strong>&lt;GlobalConfiguration&gt;</strong>
</dt>
<dd>This element is used to control the engine-wide configuration of Axis. It may contain several subelements: <ul>
<li>
<strong>&lt;parameter&gt;</strong> : This is used to set options on the Axis engine - see the <a href="##global_configuration">Global Axis Configuration</a> section below for more details. Any number of <strong>&lt;parameter&gt;</strong> elements may appear.</li>
<li>
<strong>&lt;role&gt;</strong> : This is used to set a SOAP actor/role URI which the engine will recognize. This allows SOAP headers targeted at that role to be successfully processed by the engine. Any number of <strong>&lt;role&gt;</strong> elements may appear.</li>
<li>
<strong>&lt;requestFlow&gt;</strong> : This is used to configure global request Handlers, which will be invoked before the actual service on every request. You may put any number of <strong>&lt;handler&gt;</strong> or <strong>&lt;chain&gt;</strong> elements (see below) inside the <strong>&lt;requestFlow&gt;</strong>, but there may only be one <strong>&lt;requestFlow&gt;</strong>.</li>
</ul>
</dd>
<dd>
<ul>
<li>
<strong>&lt;responseFlow&gt;</strong> : This is used to configure global response Handlers, which will be invoked after the actual service on every request. You may put any number of <strong>&lt;handler&gt;</strong> or <strong>&lt;chain&gt;</strong> elements (see below) inside the <strong>&lt;responseFlow&gt;</strong>, but there may only be one <strong>&lt;responseFlow&gt;</strong>.</li>
</ul>
</dd>
<dt></dt>
<dt>
<strong>&lt;undeployment&gt;</strong>
</dt>
<dd>The root element of the deployment document which tells Axis that this is an undeployment.</dd>
<dt></dt>
<dt>
<strong>&lt;handler [name="</strong><em>name</em><strong>"] type="</strong><em>type</em><strong>"/&gt;</strong>
</dt>
<dd>Belongs at the top level inside a <strong>&lt;deployment&gt;</strong> or <strong>&lt;undeployment&gt;</strong>, or inside a <strong>&lt;chain&gt;</strong>, <strong>&lt;requestFlow&gt;</strong>, or <strong>&lt;responseFlow&gt;</strong>. Defines a Handler, and indicates the type of the handler. "Type" is either the name of another previously defined Handler, or a QName of the form "<strong>java:class.name</strong>". The optional "name" attribute allows you to refer to this Handler definition in other parts of the deployment. May contain an arbitrary number of <strong>&lt;parameter name="</strong><em>name</em><strong>" value="</strong><em>value</em><strong>"&gt;</strong> elements, each of which will supply an option to the deployed Handler.</dd>
<dt></dt>
<dt>
<strong>&lt;service name="</strong><em>name</em><strong>" provider="</strong><em>provider</em><strong>" &gt;</strong>
</dt>
<dd>Deploys/undeploys an Axis Service. This is the most complex WSDD tag, so we're going to spend a little time on it.<br>
<br> 
<strong>Options</strong> may be specified as follows : <span class="codefrag">&lt;parameter name="name" value="value"/&gt;</span>, and common ones include:<br>
<br> 
<ul>
<li>
<strong>className</strong> : the backend implementation class<br>
</li>
<li>
<strong>allowedMethods</strong> : Each provider can determine which methods are allowed to be exposed as web services.<br> To summaries for Axis supplied providers:<br> 
<p>
<u>Java RPC Provider</u> (provider="java:RPC") by default all public methods specified by the class in the className option, including any inherited methods are available as web services.<br> For more details regarding the Java Provider please see <strong>WHERE???</strong>.</p>
<p>
<u>Java MsgProvder</u> (provider="java:MSG") <!-- Glen to provide details --></p>
<p>In order to further restrict the above methods, the <strong>allowedMethods</strong> option may be used to specify in a space delimited list the names of only those methods which are allowed as web services. It is also possible to specify for this option the value <strong>"*"</strong> which is functionally equivalent to not specify the option at all. Also, it is worth mentioning that the <strong>operation</strong> element is used to further define the methods being offered, but it does not affect which methods are made available.</p>
<p>
<em>Note, while this is true for Axis supplied providers, it is implementation dependent on each individual provider. Please review your providers documentation on how or if it supports this option.</em>
</p>
<p>
<strong>Note, Exposing any web service has security implications.</strong>As a best practices guide it is <u>highly</u> recommend when offering a web service in un secure environment to restrict allowed methods to only those required for the service being offered. And, for those that are made available, to <strong>fully</strong> understand their function and how they may access and expose your systems's resources.</p>
</li>
<li>
<strong>allowedRoles</strong> : comma-separated list of roles allowed to access this service (Note that these are security roles, as opposed to SOAP roles. Security roles control access, SOAP roles control which SOAP headers are processed.)<br>
</li>
<li>
<strong>extraClasses</strong> : Specify a space or comma seperated list of class names which should be included in the <strong>types</strong> section of the WSDL document. This is useful in the case where your service interface references a base class and you would like your WSDL to contain XML Schema type defintions for these other classes.</li>
</ul>
<br> If you wish to define handlers which should be invoked either before or after the service's provider, you may do so with the <strong>&lt;requestFlow&gt;</strong> and the <strong>&lt;responseFlow&gt;</strong> subelements. Either of those elements may be specified inside the <strong>&lt;service&gt;</strong> element, and their semantics are identical to the <strong>&lt;chain&gt;</strong> element described below - in other words, they may contain <strong>&lt;handler&gt;</strong> and <strong>&lt;chain</strong>&gt; elements which will be invoked in the order they are specified.<br> 
<p>To control the <a href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/#soaproles">roles</a> that should be recognized by your service Handlers, you can specify any number of <strong>&lt;role&gt;</strong> elements inside the service declaration.</p>
<br> Example:<br> 
<pre>&lt;service name="test"&gt;
  &lt;parameter name="className" value="test.Implementation"/&gt;
  &lt;parameter name="allowedMethods" value="*"/&gt;
  &lt;namespace&gt;http://testservice/&lt;/namespace&gt;
  &lt;role&gt;http://testservice/MyRole&lt;/role&gt;
  &lt;requestFlow&gt; &lt;!-- Run these before processing the request --&gt;
 &lt;handler type="java:MyHandlerClass"/&gt;
 &lt;handler type="somethingIDefinedPreviously"/&gt;
  &lt;/requestFlow&gt;
&lt;/service&gt;
</pre>
<strong>Metadata</strong> may be specified about particular operations in your service by using the &lt;operation&gt; tag inside a service. This enables you to map the java parameter names of a method to particular XML names, to specify the parameter modes for your parameters, and to map particular XML names to particular operations.<br>
<br> &lt;operation name="method"&gt;<br> &lt;/operation&gt;<br>
</dd>
<dt></dt>
<dt>
<strong>&lt;chain name="</strong><em>name</em><strong>"</strong><strong>&gt; &lt;subelement/&gt;... &lt;/chain&gt;</strong>
</dt>
<dd>Defines a chain. Each <em>handler</em> (i.e. deployed handler name) in the list will be invoked() in turn when the chain is invoked. This enables you to build up "modules" of commonly used functionality. The subelements inside chains may be &lt;<strong>handler</strong>&gt;s or &lt;<strong>chain</strong>&gt;s. &lt;handler&gt;s inside a &lt;chain&gt; may either be defined in terms of their Java class:<br> 
<pre>&lt;chain name="myChain"&gt;
  &lt;handler type="java:org.apache.axis.handlers.LogHandler"/&gt;
&lt;/chain&gt;
</pre>or may refer to previously defined &lt;handlers&gt;, with the "type" of the handler referring to the name of the other handler definition:<br> 
<pre>&lt;handler name="logger" type="java:org.apache.axis.handlers.LogHandler"/&gt;<br>&lt;chain name="myChain"/&gt;<br>   &lt;handler type="logger"/&gt;<br>&lt;/chain&gt;
</pre>
</dd>
<dt></dt>
<dt>
<strong>&lt;transport name="</strong><em>name</em><strong>"&gt;</strong>
</dt>
<dd>Defines a transport on the server side. Server transports are invoked when an incoming request arrives. A server transport may define <strong>&lt;requestFlow&gt;</strong> and/or <strong>&lt;responseFlow&gt;</strong> elements to specify handlers/chains which should be invoked during the request (i.e. incoming message) or response (i.e. outgoing message) portion of processing (this function works just like the <strong>&lt;service&gt;</strong> element above). Typically handlers in the transport request/response flows implement transport-specific functionality, such as parsing protocol headers, etc.</dd>
<dd>
<br>
<br>
</dd>
<dd>For any kind of transport (though usually this relates to HTTP transports), users may allow Axis servlets to perform arbitrary actions (by means of a "plug-in") when specific query strings are passed to the servlet (see the section <a href="#developers-guide.html#Axis%20Servlet%20Query%20String%20Plug-ins">Axis Servlet Query String Plug-ins</a> in the <a href="#developers-guide.html">Axis Developer's Guide</a> for more information on what this means and how to create a plug-in). When the name of a query string handler class is known, users can enable it by adding an appropriate <strong>&lt;parameter&gt;</strong> element in the Axis server configuration's <strong>&lt;transport&gt;</strong> element. An example configuration might look like the following:<br>
<br> 
<span class="codefrag">&lt;transport name="http"&gt; &lt;parameter name="useDefaultQueryStrings" value="false" /&gt; &lt;parameter name="qs.name" value="class.name" /&gt; &lt;/transport&gt;</span>
<br> In this example, the query string that the Axis servlet should respond to is <em>?name</em> and the class that it should invoke when this query string is encountered is named <span class="codefrag">class.name</span>. The <span class="codefrag">name</span> attribute of the <strong>&lt;parameter&gt;</strong> element must start with the string "qs." to indicate that this <strong>&lt;parameter&gt;</strong> element defines a query string handler. The <span class="codefrag">value</span> attribute must point to the name of a class implementing the <span class="codefrag">org.apache.axis.transport.http.QSHandler</span> interface. By default, Axis provides for three Axis servlet query string handlers (<em>?list</em>, <em>?method</em>, and <em>?wsdl</em>). See the Axis server configuration file for their definitions. If the user wishes not to use these default query string handlers (as in the example), a <strong>&lt;parameter&gt;</strong> element with a <span class="codefrag">name</span> attribute equal to "useDefaultQueryStrings" should have its <span class="codefrag">value</span> attribute set to <span class="codefrag">false</span>. By default it is set to <span class="codefrag">true</span> and the element is not necessary if the user wishes to have this default behavior.</dd>
<dt></dt>
<dt>
<strong>&lt;transport name="</strong><em>name</em><strong>" pivot="</strong><em>handler type</em><strong>"</strong><strong>&gt;</strong>
</dt>
<dd>Defines a transport on the client side, which is invoked when sending a SOAP message. The "pivot" attribute specifies a Handler to be used as the actual sender for this transport (for example, the HTTPSender). Request and response flows may be specified as in server-side transports to do processing on the request (i.e. outgoing message) or response (i.e. incoming message).</dd>
<dt></dt>
<dt>
<strong>&lt;typeMapping qname="</strong><em>ns:localName</em><strong>" classname="</strong><em>classname</em><strong>" serializer="</strong><em>classname</em><strong>" deserializer="</strong><em>classname</em><strong>"/&gt;</strong>
</dt>
<dd>Each typeMapping maps an XML qualified name to/from a Java class, using a specified Serializer and Deserializer.</dd>
<dt></dt>
<dt>
<strong>&lt;beanMapping qname="</strong><em>ns:localName</em><strong>" classname="</strong><em>classname</em><strong>"</strong><strong>&gt;</strong>
</dt>
<dd>A simplified type mapping, which uses pre-defined serializers/deserializers to encode/decode JavaBeans. The class named by "classname" must follow the JavaBean standard pattern of get/set accessors.</dd>
<dt>&nbsp;</dt>
<dt>
<strong>&lt;documentation&gt;</strong>
</dt>
<dd>Can be used inside a <strong>&lt;service&gt;</strong>, an <strong>&lt;operation&gt;</strong> or an operation <strong>&lt;parameter&gt;</strong>. The content of the element is arbitrary text which will be put in the generated wsdl inside a wsdl:document element.<br>
<br> Example:<br> 
<span class="codefrag">&lt;operation name="echoString" &gt; &nbsp;&nbsp;&lt;documentation&gt;This operation echoes a string&lt;/documentation&gt; &nbsp;&nbsp;&lt;parameter name="param"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;documentation&gt;a string&lt;/documentation&gt; &nbsp;&nbsp;&lt;/parameter&gt; &lt;/operation&gt;</span>
</dd>
</dl>
<p>
<a name="java/reference.html#global_configuration"></a>
</p>
<div class="h5">
<h5>Global Axis Configuration</h5>
</div>
<p>The server is configured (by default) by values in the server-config.wsdd file, though a dedicated Axis user can write their own configuration handler, and so store configuration data in an LDAP server, database, remote web service, etc. Consult the source on details as to how to do that. You can also add options to the web.xml file and have them picked up automatically. We don't encourage that as it is nice to keep configuration stuff in one place.</p>
<p>In the server-config file, there is a global configuration section, which supports parameter name/value pairs as nested elements. Here are the options that we currently document, though there may be more (consult the source, as usual).</p>
<pre>   &lt;globalConfiguration&gt;
     &lt;parameter name="adminPassword" value="admin"/&gt;
     &lt;parameter name="attachments.Directory" value="c:\temp\attachments"/&gt;
     &lt;parameter name="sendMultiRefs" value="true"/&gt;
     &lt;parameter name="sendXsiTypes" value="true"/&gt;
     &lt;parameter name="attachments.implementation"
  value="org.apache.axis.attachments.AttachmentsImpl"/&gt;
     &lt;parameter name="sendXMLDeclaration" value="true"/&gt;
     &lt;parameter name="enable2DArrayEncoding" value="true"/&gt;
   &lt;/globalConfiguration&gt;
</pre>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tbody>
<tr class="b">
<td><strong>adminPassword</strong></td><td>Adminstrator password, as used by AdminService.</td>
</tr>
<tr class="a">
<td><strong>attachments.Directory</strong></td><td>The directory where attachments end up. This should be in the syntax appropriate for the target platform.</td>
</tr>
<tr class="b">
<td><strong>attachments.implementation</strong></td><td>Name of class that implements attachments support. Default is <tt>org.apache.axis.attachments.AttachmentsImpl</tt></td>
</tr>
<tr class="a">
<td><strong>axis.enableListQuery</strong></td><td>Flag to enable the "list the WSDD" feature. Set to false by default, because listing the current system config can expose information (such as the adminservice password) that one does not want widely avaialable.</td>
</tr>
<tr class="b">
<td><strong>axis.disableServiceList</strong></td><td>Flag to disable the list of services feature. Set to false by default, which enables the list of services by the AxisServlet when a GET request is performed on the servlet root.</td>
</tr>
<tr class="a">
<td><strong>axis.servicesPath</strong></td><td>Path to the Axis servlet. This should be the same as the services servlet-mapping defined in web.xml. Used for displaying the list of services. Default is "/services/".</td>
</tr>
<tr class="b">
<td><strong>axis.Compiler</strong></td><td>Compiler adapter classname for JWS compilation. Default is <tt>org.apache.axis.components.compiler.Javac</tt>; change this to <tt>org.apache.axis.components.compiler.Jikes</tt> to invoke jikes instead.</td>
</tr>
<tr class="a">
<td><strong>axis.development.system</strong></td><td>Flag to switch the system from <em>production</em> (false) to <em>development</em> (true). A development system gives out stack traces and other information that production boxes should not.</td>
</tr>
<tr class="b">
<td><strong>axis.xmlEncoding</strong></td><td>Encoding used for XML messages -either UTF-8 (default) or UTF-16</td>
</tr>
<tr class="a">
<td><strong>axis.engineConfigClass</strong></td><td>Name of a class that provides Axis configuration. Implement a new class implementing <tt>EngineConfiguration</tt> and name it here to use alternate configuration mechanisms.</td>
</tr>
<tr class="b">
<td><strong>axis.jws.servletClassDir</strong></td><td>Path to where compiled JWS pages are placed.</td>
</tr>
<tr class="a">
<td><strong>axis.sendMinimizedElements</strong></td><td>Flag to turn on support for a when .NET1.0 can't correctly handle some bits of XML <a href="http://issues.apache.org/jira/secure/ViewIssue.jspa?key=AXIS-667">that it should.</a> The flag defaults to true; if some .NET clients are failing to handle a Web Service returning an empty array inside another object, set this flag to <em>false</em>.</td>
</tr>
<tr class="b">
<td><strong>enable2DArrayEncoding</strong></td><td>Set this to "true" to turn 2D array encoding on; this encoding is incompatible with .NET 1.0: default="false".</td>
</tr>
<tr class="a">
<td><strong>sendMultiRefs</strong></td><td>true/false flag to control whether multirefs are sent or not.</td>
</tr>
<tr class="b">
<td><strong>sendXMLDeclaration</strong></td><td>true/false flag to control whether the &lt;?xml?&gt; declaration is sent in messages</td>
</tr>
<tr class="a">
<td><strong>sendXsiTypes</strong></td><td>true/false flag to enable/disable sending the type of every value sent over the wire. Defaults to true.</td>
</tr>
<tr class="b">
<td><strong>SingleSOAPVersion</strong></td><td>When set to either "1.1" or "1.2", this configures the engine to only accept the specified SOAP version. Attempts to connect to the engine using another version will result in a fault.</td>
</tr>
<tr class="a">
<td><strong>use-servlet-security</strong></td><td>Set this flag to hand authentication off to the servlet container.</td>
</tr>
<!-- end table -->
</tbody>
</table>
<p>
<a name="java/reference.html#individual_service"></a>
</p>
<div class="h5">
<h5>Individual Service Configuration</h5>
</div>
<p>
<em>TODO</em>
</p>
<p>Here are some of the per-service configuration options are available; these can be set in the wsdd file used to deploy a service, from where they will be picked up.</p>
<p>More may exist.</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><strong>style</strong></td><td>whether to use RPC:enc or doc/lit encoding</td>
</tr>
<tr class="a">
<td><strong>SingleSOAPVersion</strong></td><td>When set to either "1.1" or "1.2", this configures a service to only accept the specified SOAP version. Attempts to connect to the service using another version will result in a fault.</td>
</tr>
<tr class="b">
<td><strong>wsdlFile</strong></td><td>The path to a WSDL File; can be an absolute path or a resource that axis.jar can load. Useful to export your custom WSDL file. When specify a path to a resource, place a forward slash to start at the beginning of the classpath (e.g "/org/someone/res/mywsdl.wsdl"). How does Axis know whether to return a file or resource? It looks for a file first, if that is missing a resource is returned.</td>
</tr>
<!-- TODO: what does this mean?
  <tr><td><b>streaming</b></td>
 <td>
 </td>
 </tr>
  -->
</table>
<p>
<a name="java/reference.html#axis_logging"></a>
</p>
<div class="h5">
<h5>Axis Logging Configuration</h5>
</div>
<p>Axis uses the Jakarta Projects's <a href="http://jakarta.apache.org/commons/logging.html">commons-logging API</a>, as implemented in <tt>commons-logging.jar</tt> to implement logging throughout the code. Normally this library routes the logging to the Log4j library, provided that an implementation of log4j is on the classpath of the server or client. The commons-logging API can also bind to Avalon, <tt>System.out</tt> or the Java1.4 logger. The JavaDocs for the library explain the process for selecting a logger, which can be done via a system property or a properties file in the classpath.</p>
<p>Log4J can be configured using the file log4j.properties in the classpath; later versions also support an XML configuration. Axis includes a preconfigured log4j.properties file in <tt>axis.jar</tt>. While this is adequate for basic use, any complex project will want to modify their own version of the file. Here is what to do</p>
<ol>
<li>Open up axis.jar in a zipfile viewer and remove log4j.properties from the jar</li>
<li>Or, when building your own copy of axis.jar, set the Ant property <tt>exclude.log4j.configuration</tt> to keep the properties file out the JAR.</li>
<li>Create your own log4J.properties file, and include it in <tt>WEB-INF/classes</tt> (server-side), in your main application JAR file client side.</li>
<li>Edit this log4J properties file to your hearts content. Server side, setting up rolling logs with fancy html output is convenient, though once you start clustering the back end servers that ceases to be as usuable. Log4J power tools, such as 'chainsaw', are the secret here.</li>
</ol>
<div class="h5">
<h5>Log Categories</h5>
</div>
<p>Axis classes that log information create their own per-class log, each of which may output information at different levels. For example, the main entry point servlet has a log called <tt>org.apache.axis.transport.http.AxisServlet</tt>, the AxisEngine is <tt>org.apache.axis.AxisEngine</tt>, and so on. There are also special logs for special categories.</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tr class="b">
<td><tt>org.apache.axis.TIME</tt></td><td>A log that records the time to execute incoming messages, splitting up into preamble, invoke, post and send times. These are only logged at debug level.</td>
</tr>
<tr class="a">
<td><tt>org.apache.axis.EXCEPTIONS</tt></td><td>Exceptions that are sent back over the wire. AxisFaults, which are normally created in 'healthy' operation, are logged at debug level. Other Exceptions are logged at the Info level, as they are more indicative of server side trouble.</td>
</tr>
<tr class="b">
<td><tt>org.apache.axis.enterprise</tt></td><td>''Enterprise'' level stuff, which generally means stuff that an enterprise product might want to track, but in a simple environment (like the Axis build) would be nothing more than a nuisance.</td>
</tr>
</table>
<p>
<a name="java/reference.html#axis_components"></a>
</p>
<div class="h5">
<h5>Pre-Configured Axis Components Reference</h5>
</div>
<div class="h5">
<h5>On the server:</h5>
</div>
<dl>
<dt>
<strong>SimpleSessionHandler</strong>
</dt>
<dd>uses SOAP headers to do simple session management</dd>
<dt></dt>
<dt>
<strong>LogHandler</strong>
</dt>
<dd>The LogHandler will simply log a message to a logger when it gets invoked.</dd>
<dt>
<strong>SoapMonitorHandler</strong>
</dt>
<dd>Provides the hook into the message pipeline sending the SOAP request and response messages to the SoapMonitor utility.</dd>
<dt>
<strong>DebugHandler</strong>
</dt>
<dd>Example handler that demonstrates dynamically setting the debug level based on a the value of a soap header element.</dd>
<dt></dt>
<dt>
<strong>ErrorHandler</strong>
</dt>
<dd>Example handler that throws an AxisFault to stop request/response flow processing.</dd>
<dt></dt>
<dt>
<strong>EchoHandler</strong>
</dt>
<dd>The EchoHandler copies the request message into the response message.</dd>
<dt></dt>
<dt>
<strong>HTTPAuth</strong>
</dt>
<dd>The HTTPAuthHandler takes HTTP-specific authentication information (right now, just Basic authentication) and turns it into generic MessageContext properties for username and password</dd>
<dt>
<strong>SimpleAuthenticationHandler</strong>
</dt>
<dd>The SimpleAuthentication handler passes a MessageContext to a SecurityProvider (see org.apache.axis.security) to authenticate the user using whatever information the SecurityProvider wants (right now, just the username and password).</dd>
<dt>
<strong>SimpleAuthorizationHandler</strong>
</dt>
<dd>This handler, typically deployed alongside the SimpleAuthenticationHandler (a chain called "authChecks" is predefined for just this combination), checks to make sure that the currently authenticated user satisfies one of the allowed roles for the target service. Throws a Fault if access is denied.</dd>
<dt>
<strong>MD5AttachHandler</strong>
</dt>
<dd>Undocumented, uncalled, untested handler that generates an MD5 hash of attachment information and adds the value as an attribute in the soap body.</dd>
<dt></dt>
<dt>
<strong>URLMapper</strong>
</dt>
<dd>The URLMapper, an HTTP-specific handler, usually goes on HTTP transport chains (it is deployed by default). It serves to do service dispatch based on URL - for instance, this is the Handler which allows URLs like http://localhost:8080/axis/services/MyService?wsdl to work.</dd>
<dt></dt>
<dt>
<strong>RPCProvider</strong>
</dt>
<dd>The RPCProvider is the pivot point for all RPC services. It accepts the following options:<br> 
<strong>className</strong> = the class of the backend object to invoke<br> 
<strong>methodName</strong> = a space-separated list of methods which are exported as web services. The special value "*" matches all public methods in the class.</dd>
<dt>
<strong>MsgProvider</strong>
</dt>
<dd>The MsgProvider is the pivot point for all messaging services. It accepts the following options:<br>
</dd>
<dd>
<strong>className</strong> = the class of the backend object to invoke<br> 
<strong>methodName</strong> = a space-separated list of methods which are exported as web services. The special value "*" matches all public methods in the class.</dd>
<dt>
<strong>JWSHandler</strong>
</dt>
<dd>Performs drop-in deployment magic.</dd>
<dt>
<strong>JAXRPCHandler</strong>
</dt>
<dd>Wrapper around JAX-RPC compliant handlers that exposes an Axis handler interface to the engine.</dd>
<dt></dt>
<dt>
<strong>LocalResponder</strong>
</dt>
<dd>The LocalResponder is a Handler whose job in life is to serialize the response message coming back from a local invocation into a String. It is by default on the server's local transport response chain, and it ensures that serializing the message into String form happens in the context of the server's type mappings.</dd>
</dl>
<div class="h5">
<h5>On the client:</h5>
</div>
<dl>
<dt>
<strong>SimpleSessionHandler</strong>
</dt>
<dd>uses SOAP headers to do simple session management</dd>
<dt></dt>
<dt>
<strong>JAXRPCHandler</strong>
</dt>
<dd>Wrapper around JAX-RPC compliant handlers that exposes an Axis handler interface to the engine.</dd>
<dt></dt>
<dt>
<strong>HTTPSender</strong>
</dt>
<dd>A Handler which sends the request message to a remote server via HTTP, and collects the response message.</dd>
<dt>
<strong>LocalSender</strong>
</dt>
<dd>A Handler which sends the request message to a "local" AxisServer, which will process it and return a response message. This is extremely useful for testing, and is by default mapped to the "local:" transport. So, for instance, you can test the AdminClient by doing something like this:<br> 
<pre>% java org.apache.axis.client.AdminClient -llocal:// list
</pre>
</dd>
</dl>
  
<div class="h2">
<h2>Axis: further reading</h2>
</div>
<div class="h5">
<h5>Recommended Reading</h5>
</div>
<p>Here are things you can read to understand and use Axis better. Remember, you also have access to all the source if you really want to find out how things work (or why they don't).</p>
<div class="h5">
<h5>Axis installation, use and internals</h5>
</div>
<ol>
<li>
<a href="http://www.tusc.com.au/tutorial/html/">Tutorial for building J2EE Applications using JBOSS and ECLIPSE</a>
<br> A good tutorial on open source Enterprise Java Dev, whose chapter nine covers Axis.</li>
<li>
<a href="http://www.pankaj-k.net/axis4tag/">Web Services with JAX-RPC and Apache Axis.</a>
<br> by Pankaj Kumar. Starting with a 10000 ft. view of Web Services, prior technologies, current and emerging standards, it quickly gets into the nitty-gritties of using JAX-RPC and Apache Axis for writing and executing programs. Has a nice coverage of different invocation styles - generated stubs, dynamic proxy and dynamic invocation interface. A good place to start if you are new to Web Services and Axis.<br>
<br> The author also maintains a <a href="http://www.pankaj-k.net/webservices/index.html">Web Services Resource Page</a>.</li>
<li>
<a href="http://www.sosnoski.com/presents/java-xml/axis/">Apache Axis SOAP for Java</a>
<br> Dennis Sosnoski covers Axis. This is another good introductory guide.</li>
<li>
<a href="http://www.sosnoski.com/presents/java-xml/axis/axis-monitor.html">Enabling SOAPMonitor in Axis 1.0</a>.<br> Dennis Sosnoski on how to turn the SOAP monitor on and off, and use it to log your application.</li>
<li>
<a href="http://macromedia.com/support/jrun/extend/using_web_services/">Axis in JRun</a>
<br> Macromedia authored coverage of using Axis from inside JRun.</li>
<li>
<a href="http://www-106.ibm.com/developerworks/webservices/library/ws-eight/">Ask the magic eight ball</a>
<br> Example of using an Axis service with various caller platforms/languages.</li>
<li>
<a href="http://www.fawcette.com/javapro/2003_02/online/WSDL_kjones_02_27_03/">Configure Axis Web Services</a>
<br> Kevin Jones talks a bit about configuring axis, showing how to return handwritten WSDL from the ?wsdl query.</li>
<li>
<a href="http://www.fawcette.com/javapro/2003_03/online/wsdl_kjones_03_10_03/">Different WSDL Styles in Axis</a>
<br> Kevin Jones looks at the document and wrapped styles of WSDL2Java bindings.</li>
</ol>
<div class="h5">
<h5>Specifications</h5>
</div>
<ol>
<li>
<a href="http://www.w3.org/TR/SOAP/">SOAP Version 1.1</a>
<br> Remember that SOAP1.1 is not an official W3C standard.</li>
<li>
<a href="http://www.w3.org/TR/soap12-part0/">SOAP Version 1.2 Part 0: Primer</a>
<br> This and the follow-on sections cover what the W3C think SOAP is and how it should be used.</li>
<li>
<a href="http://www.w3.org/TR/wsdl">Web Services Description Language (WSDL) 1.1</a>
<br>
</li>
<li>
<a href="http://ietf.org/rfc/rfc2616.txt">RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1</a>
<br> This is HTTP. You really do need to understand the basics of how this works, to work out why your web service doesn't :)</li>
<li>
<a href="http://java.sun.com/xml/saaj/index.html">SOAP with Attachments API for Java (SAAJ)</a>
<br> SAAJ enables developers to produce and consume messages conforming to the SOAP 1.1 specification and SOAP with Attachments note.</li>
<li>
<a href="http://java.sun.com/xml/jaxrpc/index.html">Java API for XML-Based RPC (JAX-RPC)</a>
<br> The public API for Web Services in Java. JAX-RPC enables Java technology developers to develop SOAP based interoperable and portable web services. JAX-RPC provides the core API for developing and deploying web services on the Java platform.</li>
<li>
<a href="http://www.w3.org/TR/xmlschema-0/">XML Schema Part 0: Primer</a>
<br> The W3C XML Schema, (WXS) is one of the two sets of datatype SOAP supports, the other being the SOAP Section 5 datatypes that predate WXS. Complicated as it is, it is useful to have a vague understanding of this specification.</li>
<li>
<a href="http://java.sun.com/xml/jaxm/index.html">Java API for XML Messaging (JAXM)</a>
<br> JAXM enables applications to send and receive document oriented XML messages using a pure Java API. JAXM implements Simple Object Access Protocol (SOAP) 1.1 with Attachments messaging so that developers can focus on building, sending, receiving, and decomposing messages for their applications instead of programming low level XML communications routines.</li>
</ol>
<div class="h5">
<h5>Explanations, articles and presentations</h5>
</div>
<ol>
<li>
<a href="http://www.intertwingly.net/stories/2002/03/16/aGentleIntroductionToSoap.html">A Gentle Introduction to SOAP</a>
<br> Sam Ruby tries not to scare people.</li>
<li>
<a href="http://www.intertwingly.net/stories/2002/02/15/aBusyDevelopersGuideToWsdl11.html">A Busy Developer's Guide to WSDL 1.1</a>
<br> Quick intro to WSDL by the eponymous Sam Ruby.</li>
<li>
<a href="http://www.ociweb.com/javasig/knowledgebase/2002Sep/">Axis - an open source web service toolkit for Java</a>
<br> by Mark Volkmann, Partner, Object Computing, Inc. A very good introduction to SOAP and Axis. Highly Recommended.</li>
<li>
<a href="http://www.iseran.com/Steve/papers/when_web_services_go_bad.html">When Web Services Go Bad</a>
<br> Steve Loughran tries to scare people. A painful demonstration how deployment and system management are trouble spots in a production service, followed by an espousal of a deployment-centric development process. Remember, it doesn't have to be that bad.</li>
<li>
<a href="http://servlet.java.sun.com/javaone/sf2002/conf/sessions/index.en.jsp">JavaOne 2002, Web Services Today and Tomorrow</a>
<br> (Java Developer connection login required)</li>
<li>
<a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXRPC.html">The Java Web Services Tutorial: Java API for XML-based RPC</a>
<br> This is part of Sun's guide to their Java Web Services Developer Pack. The examples are all based on their JWSDP, but as Axis also implements JAX-RPC, they may all port to Axis.</li>
<li>
<a href="http://java.sun.com/blueprints/webservices/using/webservbp.html">Using Web Services Effectively.</a>
<br> Blissfully ignoring issues such as versioning, robustness and security and all the other details a production Web Service needs, instead pushing EJB as the only way to process requests, this is Sun's guide to using web services in Java. It also assumes Java is at both ends, so manages to skirt round the interop problem.</li>
<li>
<a href="http://www.hpl.hp.com/techreports/2002/HPL-2002-274.html">Making Web Services that Work</a>
<br> A practical but suspiciously code free paper on how to get web services into production. As well as coverage of topics such as interop, versioning, security, this (57 page) paper looks at the deployment problem, advocating a fully automated deployment process in which configuration problems are treated as defects for which automated test cases and regresssion testing are appropriate. Happyaxis.jsp is the canonical example of this. The author, Steve Loughran also looks a bit at what the component model of a federated web service world would really be like.</li>
</ol>
<div class="h5">
<h5>Interoperability</h5>
</div>
<ol>
<li>
<a href="http://www.intertwingly.net/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html">To infinity and beyond - the quest for SOAP interoperability</a>
<br> Sam Ruby explains why Interop matters so much.</li>
<li>
<a href="http://www.iseran.com/Steve/papers/interop/">The Wondrous Curse of Interoperability</a>
<br> Steve Loughran on interop challenges (especially between .NET and Axis), and how to test for them.</li>
</ol>
<div class="h5">
<h5>Advanced topics</h5>
</div>
<ol>
<li>
<a href="http://www.extreme.indiana.edu/xgws/papers/sc00_paper/index.html">Requirements for and Evaluation of RMI Protocols for Scientific Computing</a>
</li>
<li>
<a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">Architectural Styles and the Design of Network-based Software Architectures</a>
<br> The theoretical basis of the REST architecture</li>
<li>
<a href="http://www.extreme.indiana.edu/xgws/papers/soap-hpdc2002/soap-hpdc2002.pdf">Investigating the Limits of SOAP Performance for Scientific Computing</a>
</li>
<li>
<a href="http://www.w3.org/TR/webarch/">Architectural Principles of the World Wide Web</a>
<br> The W3C architects say how things should be done.</li>
</ol>
<div class="h5">
<h5>Books</h5>
</div>
<ol>
<li>
<em>Beginning Java Web Services</em>
<br> Meeraj Kunnumpurath et al, Wrox Press, September 2002.<br> An introductory book, with the early chapters focusing on Axis.<br> The <a href="http://www.wrox.com/books/sample-chapters/SampleChapter_1861007531.pdf">sample chapter</a> shows how to install Axis with Tomcat 4.0: we do not believe that their approach is the best. It is easier to drop jaxrpc.jar and saaj.jar into the CATALINA_HOME/common/lib dir than it is to add all axis jars to the classpath by hand. The book is based on Axis Beta-3.</li>
<li>
<a href="http://manning.com/antbook"><em>Java development with Ant</em></a>
<br> by Erik Hatcher and Steve Loughran, Manning Press, July 2002.<br> A book on Ant development which covers Web Service development with Axis, along with other topics relevant to Java developers using Ant. The Web Service chapter, <a href="http://www.manning.com/hatcher/chap15.pdf">chapter 15</a>, is free to download, and was the birthplace of happyaxis.jar.<br> The book is based on Axis Beta-2; the web site contains updated documentation where appropriate.</li>
<li>
<a href="http://www.wrox.com/books/toc/1861007159_toc.htm"><em>AXIS: Next Generation Java SOAP</em>
<br>
</a> by Romin Irani and S Jeelani Bashna, Wrox Press, May 2002.<br> The first nothing-but-Axis book.<br> It is based on Beta-1. This is a reasonable book, despite is apparent thinness and relative age. If it has a major weakness it believes everything works as intended, which regular Axis users will know is not quite true yet. Maybe they didn't want to fault missing features and other gotchas, assuming they would be fixed by the time the product shipped, but the effective result is that you can get into minor trouble working from this book, trying to use bits that aren't there, or just don't work (yet).</li>
<li>
<a href="http://sams.com/catalog/product.asp?product_id={ABC81EE6-0D9F-4BD7-99DB-84F9C983ACF7}"><em>Building Web Services with Java: Making Sense of XML, SOAP, WSDL and UDDI</em></a>
<br> Steve Graham et al, December 2001.<br> Covering very early versions of Axis along with other aspects of Web Service technologies. One of the authors, Glen Daniels, is an Axis committer and active contributor, so the quality of the Axis coverage is high. Good explanations of SOAP, UDDI, and the like.</li>
</ol>
<p>Authors, publishers: we welcome additions to this section of any books which have some explicit coverage of Axis. Free paper/pdf copies and other forms of bribery accepted.</p>
<div class="h5">
<h5>External Sites covering Web Services</h5>
</div>
<ol>
<li>
<a href="http://www-106.ibm.com/developerworks/webservices/">IBM developerWorks Web Services corner</a>
<br> There are lots of interesting articles on Web Services here, many of which are Axis related. There is also a <a href="http://www-106.ibm.com/developerworks/webservices/library/ws-spec.html">listing of</a> "all current open standards and specifications that define the Web services family of protocols", though Soap with Attachments is mysteriously absent.</li>
</ol>
  
<div class="h2">
<h2>Axis requirements &amp; status</h2>
</div>
<div class="h5">
<h5>Requirements</h5>
</div>
<p>There is a <a href="##nonreq">non-requirements</a> section below.<br> 
<a href="##releases">Release cycles</a> are explained below.</p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
<tbody>
<tr class="b">
<th>No.</th><th>Description [Priority]</th><th>
<br> 
<br>
</th><td><strong>status</strong> - worker(s)<br>
</td><th>a1</th><th>a2</th><th>
<p>beta/</p>
<p>3.0</p>
</th><th>later</th>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">XML Protocol compliance</th>
</tr>
<tr class="b">
<td>10</td><td>We will diligently track the XP protocol as it evolves, and support it when it's ready.</td><td>
<br> 
<br>
</td><td>n/a<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Error and fault handling</th>
</tr>
<tr class="b">
<td>20</td><td>Specify an extensible Java Exception mapping into SOAP faults</td><td>
<br> 
<br>
</td><td>?<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>21</td><td>Specify an extensible SOAP fault mapping into Java exceptions</td><td>
<br> 
<br>
</td><td>?<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<th>
<br>
</th><th colspan="7">Service and Operation Identification</th>
</tr>
<tr class="a">
<td>30</td><td>Dispatch by transport URL</td><td>
<br>
</td><td>done<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>31</td><td>Dispatch by SOAPAction</td><td>
<br>
</td><td>done<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>32</td><td>Dispatch by QName of the first body entry</td><td>
<br>
</td><td>done<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>33</td><td>Dispatch by a custom handler <em>(to use any information available)</em></td><td>
<br>
</td><td>done (can do it already)<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Message exchange patterns supported at the client API level</th>
</tr>
<tr class="b">
<td>
<br>
</td><td colspan="7"><em>Motivation: we believe the following message exchange patterns are in common use and important to implement (e.g. WSDL uses them)</em></td>
</tr>
<tr class="a">
<td>40</td><td>Synchronous request/response</td><td>
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>41</td><td>One-way messaging</td><td>
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>42</td><td>[??] Asynchronous request/response (non-blocking) <em>(the question marks mean we don't know whether to provide this)</em></td><td>
<br> 
<br>
</td><td><strong>NYI -</strong> ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td>
</tr>
<tr class="b">
<th>
<br>
</th><th colspan="7">SOAP 1.1 compliance</th>
</tr>
<tr class="a">
<td>50</td><td>All aspects of SOAP 1.1 supported by Apache SOAP 2.x</td><td>
<br> 
<br>
</td><td>what is missing?<br> (actor, full sec-5)</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>51</td><td>Support intermediaries</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - RobJ<br> 
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="a">
<td>52</td><td>Transparency should be provided when we place intermediaries (hosts) between requestor and provider (creating a proxy server)</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - RobJ<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="b">
<td>53</td><td>Support the SOAP concept of mustUnderstand headers</td><td>
<br>
</td><td>done<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>54</td><td>Support the SOAP actor header attributes</td><td>
<br>
</td><td><strong>NYI - Glen</strong>
<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<th>
<br>
</th><th colspan="7">Performance</th>
</tr>
<tr class="a">
<td>60</td><td>The architecture must not require the whole message to be in memory at the same time</td><td>
<br> 
<br>
</td><td>not for 1.0 - no incremental 1.0 parse; architecture still allows this, later<br> 
<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>61</td><td>Scalable</td><td>
<br>
</td><td>? - Sam<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>62</td><td>Faster than Apache SOAP 2.x</td><td>
<br>
</td><td>done!<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>63</td><td>Must not be significantly slower than comparable alternative implementations</td><td>
<br> 
<br>
</td><td>done?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Administration and monitoring</th>
</tr>
<tr class="b">
<td>70</td><td>Logging API</td><td>
<br>
</td><td><strong>NYI (all)</strong></td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>71</td><td>Metrics API</td><td>
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>72</td><td>Management (JMX) API</td><td>
<br>
</td><td><strong>n/a?</strong></td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="a">
<td>73</td><td>Run-time (un)deployment API</td><td>
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<th>
<br>
</th><th colspan="7">Deployment</th>
</tr>
<tr class="a">
<td>80</td><td>Installation and deployment of both the engine, components, and services should be simple</td><td>
<br> 
<br>
</td><td>done! (what more?)<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>81</td><td>Support a WebServiceArchive format which associates the executable and the description files</td><td>
<br> 
<br>
</td><td>NYI (does JWS count?) - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>82</td><td>Support .asmx-like drop-in service deployment</td><td>
<br>
</td><td>done - this is JWS<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="b">
<td>83</td><td>A single SUPER TINY .jar file must be enough for a client to communicate via SOAP</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - what is best way to build it?<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>84</td><td>Defaults packaged with both client and server must be sane, secure and ready to go</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> but getting there!<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>85</td><td>Intermediaries (hosts) should be easy to configure</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - RobJ<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="a">
<td>86<br>
</td><td>WSDD implementation<br>
</td><td>
<br>
</td><td><strong>NYI</strong> - Carl W / Glen</td><td>
<br>
</td><td>
<br>
</td><td>?<br>
</td><td>
<br>
</td>
</tr>
<tr class="b">
<th>
<br>
</th><th colspan="7">Providers</th>
</tr>
<tr class="a">
<td>90</td><td>Pluggable provider API</td><td>
<br>
</td><td><strong>done? (handler API)</strong></td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>91</td><td>Java provider</td><td>
<br>
</td><td>done?<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>92</td><td>BSF provider</td><td>
<br>
</td><td><strong>NYI -</strong>?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>93</td><td>EJB provider</td><td>
<br>
</td><td><strong>NYI -</strong> ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="a">
<td>94</td><td>COM provider</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="b">
<td>95new<br>
</td><td>App server provider / connectivity layer <strong>[High]</strong>
<br>
</td><td>
<br>
</td><td><strong>NYI</strong> - Glen?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X<br>
</td><td>
<br>
</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Pluggable XML protocol support</th>
</tr>
<tr class="b">
<td>100</td><td>SOAP 1.1</td><td>
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>101</td><td>SOAP 1.2</td><td>
<br> 
<br>
</td><td><strong>Partial -</strong> doesn't yet do envelope versioning or namespaces</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="b">
<td>102</td><td>Must not name general classes as SOAPWhateverDoer</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>103</td><td>Simultaneous support for multiple message protocols</td><td>
<br> 
<br>
</td><td>NYI<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="b">
<th>
<br>
</th><th colspan="7">Message processing</th>
</tr>
<tr class="a">
<td>110</td><td>Support a flexible and extensible system allowing message handlers (extensions, applications) to build up orthogonal pieces of a message</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>111</td><td>Handler invocation order is always deterministic for a given server configuration and message</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>112</td><td>Some information should be shared between all the handlers in the "chain" on one host - MessageContext</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>112a</td><td>Have the ability to specify application-specific parameters (like username or other thing) in the context</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>112b</td><td>Some encapsulation of the idea of a session that's transport-independent (cookies in the HTTPRequest/HTTPResponse for http)</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>112b.1</td><td>An example/sample for a SOAP session header/handler/supplier</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - RobJ<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="a">
<td>112b.2</td><td>Client code needs to support this as well - need to pass session back across if necessary...</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - RobJ<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>113</td><td>Handlers need to be allowed to reach raw message data</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Transport</th>
</tr>
<tr class="b">
<td>120</td><td>Pluggable transport API</td><td>
<br>
</td><td>done - needs doc!</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>121</td><td>HTTP listener and sender</td><td>
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>122</td><td>HTTPS listener and sender</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>123</td><td>SMTP sender</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>124</td><td>POP3 poller</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>125</td><td>JMS listener and sender</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="b">
<td>126</td><td>Support for "SOAP messages with attachments"<strong>[High]</strong> &nbsp; &nbsp;</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - Glen / RobJ<br>
</td><td>
<br> 
<br>
</td><td>X<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>127</td><td>The transport can insert arbitrary transport-specific stuff into the Context</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>128</td><td>The transport-specific stuff should be encapsulated, most of the engine should work on a canonical form of the message</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Security</th>
</tr>
<tr class="b">
<td>130</td><td>Support transport-level security <strong>[High]</strong></td><td>
<br>
</td><td><strong>NY</strong><strong>I</strong> - per-transport issue?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>130b<br>
</td><td>Support SOAP-level security <strong>[High]</strong>
<br>
</td><td>
<br> 
<br>
</td><td>what, specifically? - Yuhichi?<br>
</td><td>
<br> 
<br>
</td><td>
<br> 
<br>
</td><td>
<br> 
<br>
</td><td>
<br> 
<br>
</td>
</tr>
<tr class="b">
<td>131</td><td>HTTP Basic auth</td><td>
<br>
</td><td>done?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>132</td><td>Support for existing security SOAP-level standards</td><td>
<br>
</td><td>what, specifically?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="b">
<td>133</td><td>An example/sample for a SOAP Basic Authentication header/handler</td><td>
<br>
</td><td>done?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Service Description and Discovery (for instance, WSDL, DISCO)</th>
</tr>
<tr class="b">
<td>140</td><td>Support the ability to query a service's description at runtime (e.g. GET ...?wsdl)</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - Jim's contribution? or is this something simpler?<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>140a</td><td>If deployment params have altered the service description, the updated version must be returned</td><td>
<br> 
<br>
</td><td><strong>NYI</strong>?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>141</td><td>Support a basic html page describing the service (via an HTTP GET)</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - James? Doug?<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>142</td><td>Support a pretty html page describing the service (via an HTTP GET)</td><td>
<br> 
<br>
</td><td><strong>NYI -</strong> James? Doug?</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="b">
<td>143</td><td>Services can be deployed and used without service descriptions</td><td>
<br> 
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>144</td><td>Should abstract the SD layer, at least by keeping the interfaces clean <strong>[High]</strong></td><td>
<br> 
<br>
</td><td>?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>144a</td><td>The abstract SD layer must support run-time determination of xsi:types of parts of the message</td><td>
<br> 
<br>
</td><td><strong>NYI?</strong> - Sam?<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>144b</td><td>Include a WSDL implementation of the SD layer <strong>[High]</strong> &nbsp; &nbsp;</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - Lance &amp; HP contribution?<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>144c</td><td>Extend WSDL with information on where to get components for stuff</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - James?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="a">
<td>144d</td><td>Tools and/or run-time support for proxy generation from WSDL and/or WSDD</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - Lance &amp; HP?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="b">
<td>145</td><td>HTTP GET on the Axis node returns an appropriate DISCO document</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Platforms</th>
</tr>
<tr class="b">
<td>150</td><td>Java implementation</td><td>
<br>
</td><td>underway :-)<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>151</td><td>C++ implementation</td><td>
<br>
</td><td>n/a for 1.0<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="b">
<td>151a</td><td>C++ impl core should be cross platform with platform-specific extensions (like COM)</td><td>
<br> 
<br>
</td><td>n/a for 1.0<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="a">
<td>152</td><td>All implementations should have as much in common as possible</td><td>
<br> 
<br>
</td><td>n/a for 1.0<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>153</td><td>Use standard APIs wherever possible</td><td>
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Data Encoding</th>
</tr>
<tr class="b">
<td>160</td><td>Extensible support for encodings</td><td>
<br>
</td><td>NYI<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>161</td><td>Implement basic SOAP encoding (the level of current Apache SOAP 2.x)</td><td>
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>162</td><td>Support for sparse and partially-transmitted arrays</td><td>
<br>
</td><td>NYI<br>
</td><td>
<br>
</td><td>X<br>
</td><td>X</td><td>&nbsp;</td>
</tr>
<tr class="a">
<td>163</td><td>Support for multidimensional arrays</td><td>
<br>
</td><td>NYI<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="b">
<td>164</td><td>Support literal XML encoding</td><td>
<br>
</td><td>NYI<br>
</td><td>
<br>
</td><td>X<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>165</td><td>It should be relatively easy to write a "Serializer"</td><td>
<br>
</td><td>done (depending on feedback from users)<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>166</td><td>Include some general (de)serializers (that handle multiple types), so that there needn't exist a (de)serializer for every type that could possibly travel over the wire (needs further discussion - isomorphism (roundtrip) issues)</td><td>
<br> 
<br>
</td><td>Is this the beanserializer / basicDeserializer, or something else?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="a">
<td>167</td><td>(De)serialization may occur at any time on demand</td><td>
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>168</td><td>(De)serialization should be available to the application</td><td>
<br>
</td><td>done<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Release</th>
</tr>
<tr class="b">
<td>
<br>
</td><td colspan="7"><em>Although these are a 1.0 requirements, significant progress must be made on these items during interim releases.</em></td>
</tr>
<tr class="a">
<td>170</td><td>Product-level code</td><td>
<br>
</td><td>getting there....<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>171</td><td>Product-level docs <strong>[High]</strong></td><td>
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>172</td><td>Product-level examples</td><td>
<br>
</td><td><strong>NYI</strong> but getting there - everyone<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>173</td><td>Product-level performance</td><td>
<br>
</td><td><strong>NYI</strong> - Sam?</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>174</td><td>Product-level testing</td><td>
<br>
</td><td>getting there, with functional &amp; unit tests<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<th>
<br>
</th><th colspan="7">Migration from Apache SOAP 2.x</th>
</tr>
<tr class="a">
<td>180</td><td>Documentation</td><td>
<br>
</td><td><strong>NYI -</strong> ?<br>
</td><td>
<br>
</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>181</td><td>The legacy Call object</td><td>
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>182</td><td>Serialization, custom serializers - maybe wrappers</td><td>
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>?</td><td>?</td>
</tr>
<tr class="b">
<td>183</td><td>Support for legacy messaging services</td><td>
<br>
</td><td><strong>NYI</strong> - which?<br> 
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>184</td><td>Support for legacy providers <strong>[Medium]</strong> &nbsp; &nbsp;</td><td>
<br>
</td><td><strong>NYI</strong> - ?<br>
</td><td>
<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td>
</tr>
<tr class="b">
<td>185new<br>
</td><td>Support for legacy deployment<br>
</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - James?<br>
</td><td>
<br> 
<br>
</td><td>
<br> 
<br>
</td><td>X<br> 
<br>
</td><td>
<br> 
<br>
</td>
</tr>
<tr class="a">
<th>
<br>
</th><th colspan="7">Coding</th>
</tr>
<tr class="b">
<td>190</td><td>Follow the <a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Java Coding Style</a> with <strong>no</strong> tab characters.</td><td>
<br>
</td><td>done<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>191</td><td>Use javadoc style to document all non-private methods in commits.</td><td>
<br> 
<br>
</td><td>could be more...<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="b">
<td>192</td><td>Document packages.</td><td>
<br> 
<br>
</td><td>could be MUCH more...<br>
</td><td>
<br>
</td><td>
<br>
</td><td>X</td><td>
<br>
</td>
</tr>
<tr class="a">
<td>193</td><td>Committing a new package, at least place in a placeholder for the package doc that says "this is to be done".</td><td>
<br> 
<br>
</td><td><strong>NYI</strong> - everyone!!!<br>
</td><td>X</td><td>X</td><td>X</td><td>
<br>
</td>
</tr>
</tbody>
</table>
<p>
<a name="java/requirements.html#nonreq"></a>
</p>
<br>
<div class="h5">
<h5>Non-requirements (won't be supported)</h5>
</div>
<p>
<br> 
<em>We find the SOAP spec. to be unclear on these issues so we decided not to support them.</em>
</p>
<ol>
<li>RPC calls in SOAP headers</li>
<li>Multiple RPC calls in a single SOAP message</li>
</ol>
<p>
<a name="java/requirements.html#releases"></a>
</p>
<div class="h5">
<h5>Releases and test cycles</h5>
</div>
<p>We're planning on releasing alpha1 (a1),&nbsp;alpha2 (a2), beta, and 3.0.<br> alpha&nbsp;is a preview.<br> subsequent alphas&nbsp;are to show the growing set of features and docs and test cases and all that.<br> Beta is functionally complete.</p>
 
 
<div class="h4">
<h4>Axis (C++)</h4>
</div>
  
<div class="h2">
<h2>Axis C++ 1.5 Final is Available!</h2>
</div>
<div class="h5">
<h5>Axis C++ 1.5 Final</h5>
</div>
<p>
<a href="#download.html">Download Axis C++</a>
</p>
<br>
<div class="h5">
<h5>Key features of Axis C++ 1.5 Final</h5>
</div>
<br>
<br>
<p>
<strong>New client side transport</strong>
<br> This is called Axis3 transport.This is a cleaner and extensible Transport compared to Axis2Transport.<br>
<br>
<br> WSDL tool fixes to handle nil types.<br>
<br>Supports Broader XSD types.<br>
<br>Supports Broader XSD Any types<br>
<br>Comprehensive test framework which includes client &amp; server side.<br>
<br>
</p>
<div class="h5">
<h5>The Bug Fixes</h5>
</div>
<p>AXISCPP-605<br>AXISCPP-602<br>AXISCPP-600<br>AXISCPP-596<br>AXISCPP-594<br>AXISCPP-593<br>AXISCPP-592<br>AXISCPP-591<br>AXISCPP-590<br>AXISCPP-589<br>AXISCPP-587<br>AXISCPP-586<br>AXISCPP-585<br>AXISCPP-584<br>AXISCPP-583<br>AXISCPP-582<br>AXISCPP-581<br>AXISCPP-579<br>AXISCPP-576<br>AXISCPP-575<br>AXISCPP-569<br>AXISCPP-568<br>AXISCPP-567<br>AXISCPP-566<br>AXISCPP-564<br>AXISCPP-562<br>AXISCPP-561<br>AXISCPP-560<br>AXISCPP-556<br>AXISCPP-555<br>AXISCPP-553<br>AXISCPP-550<br>AXISCPP-549<br>AXISCPP-545<br>AXISCPP-534<br>AXISCPP-532<br>AXISCPP-531<br>AXISCPP-530<br>AXISCPP-528<br>AXISCPP-525<br>AXISCPP-524<br>AXISCPP-523<br>AXISCPP-521<br>AXISCPP-520<br>AXISCPP-518<br>AXISCPP-517<br>AXISCPP-516<br>AXISCPP-514<br>AXISCPP-513<br>AXISCPP-511<br>AXISCPP-510<br>AXISCPP-509<br>AXISCPP-508<br>AXISCPP-507<br>AXISCPP-504<br>AXISCPP-503<br>AXISCPP-502<br>AXISCPP-501<br>AXISCPP-500<br>AXISCPP-499<br>AXISCPP-498<br>AXISCPP-497<br>AXISCPP-496<br>AXISCPP-495<br>AXISCPP-494<br>AXISCPP-493<br>AXISCPP-492<br>AXISCPP-491<br>AXISCPP-490<br>AXISCPP-489<br>AXISCPP-488<br>AXISCPP-487<br>AXISCPP-486<br>AXISCPP-485<br>AXISCPP-484<br>AXISCPP-483<br>AXISCPP-482<br>AXISCPP-481<br>AXISCPP-480<br>AXISCPP-479<br>AXISCPP-478<br>AXISCPP-477<br>AXISCPP-475<br>AXISCPP-474<br>AXISCPP-472<br>AXISCPP-470<br>AXISCPP-469<br>AXISCPP-468<br>AXISCPP-466<br>AXISCPP-465<br>AXISCPP-464<br>AXISCPP-463<br>AXISCPP-462<br>AXISCPP-459<br>AXISCPP-457<br>AXISCPP-456<br>AXISCPP-454<br>AXISCPP-453<br>AXISCPP-451<br>AXISCPP-450<br>AXISCPP-447<br>AXISCPP-446<br>AXISCPP-444<br>AXISCPP-443<br>AXISCPP-442<br>AXISCPP-441<br>AXISCPP-437<br>AXISCPP-436<br>AXISCPP-433<br>AXISCPP-431<br>AXISCPP-430<br>AXISCPP-428<br>AXISCPP-425<br>AXISCPP-420<br>AXISCPP-419<br>AXISCPP-418<br>AXISCPP-417<br>AXISCPP-415<br>AXISCPP-414<br>AXISCPP-413<br>AXISCPP-410<br>AXISCPP-409<br>AXISCPP-408<br>AXISCPP-407<br>AXISCPP-403<br>AXISCPP-400<br>AXISCPP-398<br>AXISCPP-392<br>AXISCPP-390<br>AXISCPP-389<br>AXISCPP-385<br>AXISCPP-383<br>AXISCPP-376<br>AXISCPP-375<br>AXISCPP-371<br>AXISCPP-364<br>AXISCPP-355<br>AXISCPP-348<br>AXISCPP-346<br>AXISCPP-344<br>AXISCPP-341<br>AXISCPP-340<br>AXISCPP-335<br>AXISCPP-331<br>AXISCPP-310<br>AXISCPP-306<br>AXISCPP-305<br>AXISCPP-303<br>AXISCPP-300<br>AXISCPP-293<br>AXISCPP-288<br>AXISCPP-270<br>AXISCPP-268<br>AXISCPP-242<br>AXISCPP-216<br>AXISCPP-207<br>AXISCPP-164<br>
</p>
<div class="h5">
<h5>Known Issues</h5>
</div>
<p>GNU make based build system is not working.<br>
<br>Out of the two parsers Expat and Xerces, only Xerces is supported.<br>
<br> C support is not complete.<br>
<br> There are no vc projects for samples<br>
<br> Pending bugs in Jira.<br>
<br>
</p>
<br>
<p>We hope you will enjoy using Axis C++.<br>
<br> Numerous efforts are currently underway to improve Axis C++ as a whole. Please have a look at the <a href="http://wiki.apache.org/ws/FrontPage/AxisC_2b_2b">TODO page</a> to learn about 1.5 plans for Axis C++.<br>
<br>We value your feed back very much.</p>
<br>
<p>Please report any bugs in <a href="http://issues.apache.org/jira/secure/Dashboard.jspa">Jira</a> and feel free to let us know your thoughts and/or problems in <a href="#mailto:axis-c-user@ws.apache.org">axis-c-user@ws.apache.org</a>
<br>
<br>We welcome you to contribute to Axis C++ and please join the discussions in <a href="#mailto:axis-c-dev@ws.apache.org">axis-c-dev@ws.apache.org</a>
</p>
  
<div class="h2">
<h2>Axis C++ Documentation</h2>
</div>
<div class="h5">
<h5>Documentation</h5>
</div>
<br>
<a href="#index.html">Apache Axis C++ 1.5 Final</a>
<div class="h5">
<h5>Installation Guides</h5>
</div>
<ul>
<li>
<a href="#lininstall-guide.html">Linux Installation Instructions</a>
</li>
<li>
<a href="#wininstall-guide.html">Windows Installation Instructions</a>
</li>
</ul>
<div class="h5">
<h5>User Guides</h5>
</div>
<ul>
<li>
<a href="#linuser-guide.html">Linux User Guide</a>
</li>
<li>
<a href="#winuser-guide.html">Windows User Guide</a>
</li>
</ul>
<div class="h5">
<h5>Developer Guides</h5>
</div>
<ul>
<li>
<a href="#windev-guide.html">Windows Developer's Guide</a>
</li>
<li>
<a href="#antbuild-guide.html">ANT Build Guide</a>
</li>
</ul>
<div class="h5">
<h5>Reference Material</h5>
</div>
<ul>
<li>
<a href="#arch/handler.html">Handler Tutorial</a>
</li>
<li>
<a href="#arch/ArchitectureGuide.html">Architecture Guide</a>
</li>
<li>
<a href="#arch/WSDL2Ws.html">WSDL2Ws Tool</a>
</li>
<li>
<a href="#arch/mem-management.html">Memory Management Guide</a>
</li>
</ul>
  
<div class="h2">
<h2>Axis C++ download page</h2>
</div>
<div class="h5">
<h5>Download Axis C++</h5>
</div>
<p>
<a href="http://www.apache.org/dist/ws/axis-c/">Direct Link</a>
</p>
<p>(Direct link to a Axis C++ distribution folder)</p>
<p>
<a href="http://www.apache.org/dyn/closer.cgi">Mirror Sites</a>
</p>
<p>(Click on the address of a mirror. Once you are presented with the contents of the dist folder, click on the "ws" folder.<br>Then click on "axis-c" to find the distribution)</p>
  
  
<div class="h2">
<h2>The Axis C++ team</h2>
</div>
<div class="h5">
<h5>The Axis C++ team</h5>
</div>
<div class="h5">
<h5>Active Contributors</h5>
</div>
<p>Susantha Kumara &lt;susantha@virtusa.com, susantha@opensource.lk&gt;,</p>
<p>Damitha Kumarage &lt;damitha@beyondm.net, damitha@opensource.lk&gt;,</p>
<p>Roshan Weerasuriya &lt;roshan@jkcsworld.com, roshan@opensource.lk&gt;,</p>
<p>Sanjaya Singharage &lt;sanjayas@jkcsworld.com,sanjayas@opensource.lk&gt;,</p>
<p>John Hawkins &lt;HAWKINSJ@uk.ibm.com&gt;,</p>
<p>Samisa Abeysinghe &lt;samisa_abeysinghe@yahoo.com&gt;,</p>
<p>Fred Preston &lt;PRESTONF@uk.ibm.com&gt;,</p>
<p>Mark Whitlock &lt;mark_whitlock@uk.ibm.com&gt;,</p>
<p>Andrew Perry &lt;PERRYAN@uk.ibm.com&gt;,</p>
<p>Adrian Dick &lt;adrian.dick@uk.ibm.com&gt;,</p>
<p>Sanjiva Weerawarana &lt;sanjiva@opensource.lk&gt;,</p>
<p>Farhaan Mohideen &lt;farhaan@opensource.lk&gt;,</p>
<p>Nithyakala Thangarajah &lt;nithya@opensource.lk&gt;,</p>
<p>Rangika Mendis &lt;rangika@opensource.lk&gt;,</p>
<p>Sharanka Perera &lt;sharanka@opensource.lk&gt;,</p>
<p>M.F.Rinzad Ahamed &lt;rinzad@opensource.lk&gt;,</p>
<br>
<div class="h5">
<h5>Additional Contributors</h5>
</div>
<p>Chaminda Divitotawela &lt;cdivitotawela@virtusa.com, chadiv@opensource.lk&gt;,</p>
<p>Nuwan Gurusinghe &lt;nuwan@beyondm.net, nuwan@opensource.lk&gt;,</p>
<p>Chamindra de Silva &lt;chamindra@virtusa.com&gt;,</p>
<p>Kanchana Welagedara &lt;kanchana@opensource.lk&gt;,</p>
<p>Srinath Perera &lt;hemapani@cse.mrt.ac.lk, hemapani@opensource.lk&gt;,</p>
<p>Thushantha Ravipriya De Alwis &lt;thushantha@beyondm.net, ravi@opensource.lk&gt;,</p>
<p>Dimuthu Leelarathne &lt;muthulee@cse.mrt.ac.lk, muthulee@opensource.lk&gt;,</p>
<p>Jeyakumaran.C &lt;jkumaran@opensource.lk&gt;,</p>
<p>Vairamuthu Thayapavan &lt;vtpavan@opensource.lk&gt;,</p>
<p>Satheesh Thurairajah</p>
<p>Piranavam ThiruChelvan &lt;chelvan@opensource.lk&gt;,</p>
<p>Dharmarajeswaran Dharmeehan &lt;dhar@opensource.lk&gt;,</p>
<p>Selvarajah Selvendra &lt;selva@opensource.lk&gt;,</p>
<p>Lilantha Darshana &lt;Lilantha@virtusa.com&gt;,</p>
<p>Nadika Ranasinghe &lt;nranasinghe@virtusa.com, nadika@opensource.lk&gt;,</p>
  

<div class="h4">
<h4>Downloads</h4>
</div>
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Releases</h5>
</div>
      

<p>

<table class="ForrestTable" cellspacing="1" cellpadding="4">
  
<tr class="b"> 
    
<td colspan="1" rowspan="1"><b>Name</b></td>
    <td colspan="1" rowspan="1"><b>Date</b></td>
    <td colspan="1" rowspan="1"><b>Description</b></td>
  
</tr>
  
<tr class="a">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_2RC2/">1.2RC2</a></td>
    <td colspan="1" rowspan="1">November 17, 2004</td>
    <td colspan="1" rowspan="1">Release Candidate #2 for version 1.2.</td>
  
</tr>
  
<tr class="b">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_2RC1/">1.2RC1</a></td>
    <td colspan="1" rowspan="1">September 30, 2004</td>
    <td colspan="1" rowspan="1">Release Candidate #1 for version 1.2.</td>
  
</tr>
  
<tr class="a">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_2beta3/">1.2beta3</a></td>
    <td colspan="1" rowspan="1">August 17, 2004</td>
    <td colspan="1" rowspan="1">Third beta release for version 1.2.</td>
  
</tr>
  
<tr class="b">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_2beta2/">1.2beta2</a></td>
    <td colspan="1" rowspan="1">July 14, 2004</td>
    <td colspan="1" rowspan="1">Second beta release for version 1.2.</td>
  
</tr>
  
<tr class="a">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_2beta/">1.2beta1</a></td>
    <td colspan="1" rowspan="1">April 1, 2004</td>
    <td colspan="1" rowspan="1">First beta release for version 1.2.</td>
  
</tr>
  
<tr class="b">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_2alpha/">1.2alpha</a></td>
    <td colspan="1" rowspan="1">December 1, 2003</td>
    <td colspan="1" rowspan="1">Alpha Version 1.2.</td>
  
</tr>
  
<tr class="a">
    
<td colspan="1" rowspan="1"><a href="http://ws.apache.org/axis/download.cgi">1.1</a> (from mirror)</td>
    <td colspan="1" rowspan="1">June 16, 2003</td>
    <td colspan="1" rowspan="1">Final Version 1.1.</td>
  
</tr>
  
<tr class="b">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_1rc2">1.1rc2</a></td>
    <td colspan="1" rowspan="1">March 5, 2003</td>
    <td colspan="1" rowspan="1">Release Candidate #2 for version 1.1.</td>
  
</tr>
  
<tr class="a">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_1RC1">1.1rc1</a></td>
    <td colspan="1" rowspan="1">February 9, 2003</td>
    <td colspan="1" rowspan="1">Release Candidate #1 for version 1.1.</td>
  
</tr>
  
<tr class="b">
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_1beta">1.1beta</a></td>
    <td colspan="1" rowspan="1">December 3, 2002</td>
    <td colspan="1" rowspan="1">Beta for 1.1 release</td>
  
</tr>
  
<tr class="a"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_0/">1.0</a></td>
    <td colspan="1" rowspan="1">October 7, 2002</td>
    <td colspan="1" rowspan="1">Release 1.0.</td>
  
</tr>
  
<tr class="b"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_0rc2/">1.0rc2</a></td>
    <td colspan="1" rowspan="1">September 30, 2002</td>
    <td colspan="1" rowspan="1">Release Candidate #2 for version 1.0.</td>
  
</tr>
  
<tr class="a"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/1_0rc1/">1.0rc1</a></td>
    <td colspan="1" rowspan="1">September 6, 2002</td>
    <td colspan="1" rowspan="1">Release Candidate #1 for version 1.0.</td>
  
</tr>
  
<tr class="b"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/beta3/">Beta 3</a></td>
    <td colspan="1" rowspan="1">July 9, 2002</td>
    <td colspan="1" rowspan="1">Third beta release (<a href="#beta2-beta3.html">changes since beta 2</a>).</td>
  
</tr>
  
<tr class="a"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/beta2/">Beta 2</a></td>
    <td colspan="1" rowspan="1">April 29, 2002</td>
    <td colspan="1" rowspan="1">Second beta release (<a href="#beta1-beta2.html">changes since beta 1</a>)</td>
  
</tr>
  
<tr class="b"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/beta1/">Beta 1</a></td>
    <td colspan="1" rowspan="1">March 15, 2002</td>
    <td colspan="1" rowspan="1">First beta release.</td>
  
</tr>
  
<tr class="a"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/alpha3">Alpha 3</a></td>
    <td colspan="1" rowspan="1">December 14, 2001</td>
    <td colspan="1" rowspan="1">Third Alpha - add JAX RPC, WSDD, more WSDL functionallity, etc.</td>
  
</tr>
  
<tr class="b"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/alpha2">Alpha 2</a></td>
    <td colspan="1" rowspan="1">September 21, 2001</td>
    <td colspan="1" rowspan="1">Second Alpha - add WSDL functionality, many bug fixes</td>
  
</tr>
  
<tr class="a"> 
    
<td colspan="1" rowspan="1"><a href="http://archive.apache.org/dist/ws/axis/alpha1">Alpha 1</a></td>
    <td colspan="1" rowspan="1">August 15, 2001</td>
    <td colspan="1" rowspan="1">First Alpha release</td>
  
</tr>

</table>

</p>

<p>For nightly builds, see the <a href="#interim.html">Interim Drops</a>
page.
</p>
    
  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Interim</h5>
</div>
      

<p>
Nightly builds are done of the current source in the
CVS repository.  The source and binaries from these builds are available at:
<br>

<blockquote>

<a href="http://cvs.apache.org/dist/axis/nightly ">
http://cvs.apache.org/dist/axis/nightly
</a>

</blockquote>

</p>

<p>
Nightly Snapshots of the current CVS source tree are available at:
<br>

<blockquote>

<a href="http://cvs.apache.org/snapshots/ws-axis/">
http://cvs.apache.org/snapshots/ws-axis/
</a>

</blockquote>

</p>
    
  
  


<div class="h4">
<h4>Translation</h4>
</div>
  


<div class="h4">
<h4>Related Projects</h4>
</div>
  
  
  
  


<div class="h4">
<h4>Misc</h4>
</div>
  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Who We Are</h5>
</div>
      
    
<p>
      The Axis Project operates on a meritocracy: the more you do,
      the more responsibility you will obtain. This page lists all
      of the people who have gone the extra mile and are
      Committers. If you would like to get involved, the first step
      is to join the mailing lists.
    </p>
    
<p>
      We ask that you please do not send us emails privately asking
      for support. We are non-paid volunteers who help out with the
      project and we do not necessarily have the time or energy to
      help people on an individual basis. Instead, we have setup
      mailing lists which often contain hundreds of individuals who
      will help answer detailed requests for help. The benefit of
      using mailing lists over private communication is that it is
      a shared resource where others can also learn from common
      mistakes and as a community we all grow together.
    </p>
      
<div class="h5">
<h5>Active Committers (Java)</h5>
</div>
    
<p>
    
<ul class="noindent">
      
<li>
        
<b>Andras Avar</b>
        &lt;<a href="mailto:Andras.Avar@nokia.com">andras.avar@nokia.com</a>&gt;
      </li>
      
<li>
        
<b>David Chappell</b>
        &lt;<a href="mailto:chappell@sonicsoftware.com">chappell@sonicsoftware.com</a>&gt;
      </li>
      
<li>
        
<b>Glen Daniels</b>
        &lt;<a href="mailto:gdaniels@apache.org">gdaniels@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Doug Davis</b>
        &lt;<a href="mailto:dug@apache.org">dug@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Eric Friedman</b>
        &lt;<a href="mailto:ericf@apache.org">ericf@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Chris Haddad</b>
        &lt;<a href="mailto:haddadc@apache.org">haddadc@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Tom Jordahl</b>
        &lt;<a href="mailto:tomj@macromedia.com">tomj@macromedia.com</a>&gt;
      </li>
      
<li>
        
<b>Dominik Kacprzak</b>
        &lt;<a href="mailto:dominik@apache.org">dominik@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Rick Kellogg
        &lt;</b><a href="mailto:rmkellogg@comcast.net">rmkellogg@comcast.net</a>
        <b>&gt;</b>
      
</li>
      
<li>
        
<b><a href="http://ws.apache.org/~toshi/">Toshiyuki Kimura (Toshi)</a></b>
        &lt;<a href="mailto:kimuratsy@nttdata.co.jp">kimuratsy@nttdata.co.jp</a>&gt;
      </li>
      
<li>
        
<b>Steve Loughran</b>
      
</li>
      
<li>
        
<b>Jaime Meritt</b>
        &lt;<a href="mailto:jmeritt@sonicsoftware.com">jmeritt@sonicsoftware.com</a>&gt;
      </li>
      
<li>
        
<b>Yuhichi Nakamura</b>
        &lt;<a href="mailto:nakamury@apache.org">nakamury@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Thomas Sandholm</b>
        &lt;<a href="mailto:sandholm@mcs.anl.gov">sandholm@mcs.anl.gov</a>&gt;
      </li>
      
<li>
        
<b>Igor Sedukhin</b>
        &lt;<a href="mailto:igors@apache.org">igors@apache.org</a>&gt;
      </li>
      
<li>
        
<b><a href="http://ws.apache.org/~dims/">Davanum Srinivas</a></b>
        &lt;<a href="mailto:dims@yahoo.com">dims@yahoo.com</a>&gt;
      </li>
      
<li>
        
<b>Sanjiva Weerawarana</b>
        &lt;<a href="mailto:sanjiva@watson.ibm.com">sanjiva@watson.ibm.com</a>&gt;
      </li>
      
<li>
        
<b><a href="http://www.iasandcb.pe.kr">Changshin Lee (a.k.a. Ias)</a></b>
        &lt;<a href="mailto:iasandcb@tmax.co.kr">iasandcb@tmax.co.kr</a>&gt;
      </li>
      
<li>
       
<b>Srinath Perera</b>
       &lt;<a href="mailto:hemapani@opensource.lk">hemapani@opensource.lk</a>&gt;
       </li>
      
<li>
        
<b>Venkat Reddy</b>
        &lt;<a href="mailto:venkat@apache.org">venkat@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Jarek Gawor</b>
        &lt;<a href="mailto:gawor@apache.org">gawor@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Jongjin Choi</b>
        &lt;<a href="mailto:jjchoe@tmax.co.kr">jjchoe@tmax.co.kr</a>&gt;
      </li>
    
</ul>
    
</p>
    
      
<div class="h5">
<h5>Active Committers (C++)</h5>
</div>
    
<p>
    
<ul class="noindent">
      
<li>
        
<b>Chaminda Divitotawela</b>
        &lt;<a href="mailto:chadiv@opensource.lk">chadiv@opensource.lk</a>&gt;
      </li>
      
<li>
        
<b>Nuwan Gurusinghe</b>
        &lt;<a href="mailto:nuwan@opensouce.lk">nuwan@opensouce.lk</a>&gt;
      </li>
      
<li>
        
<b>Susantha Kumara</b>
        &lt;<a href="mailto:susantha@opensource.lk">susantha@opensource.lk</a>&gt;
      </li>
      
<li>
        
<b>Damitha Kumarage</b>
        &lt;<a href="mailto:damitha@opensource.lk">damitha@opensource.lk</a>&gt;
      </li>
      
<li>
        
<b>Nadika Ranasinghe</b>
        &lt;<a href="mailto:nadika@opensource.lk">nadika@opensource.lk</a>&gt;
      </li>
      
<li>
        
<b>Sanjaya Sinharage</b>
        &lt;<a href="mailto:sanjayasing@opensource.lk">sanjayasing@opensource.lk</a>&gt;
      </li>
      
<li>
        
<b>Roshan Weerasuriya</b>
        &lt;<a href="mailto:roshan@opensource.lk">roshan@opensource.lk</a>&gt;
      </li>
      
<li>
        
<b>Sanjiva Weerawarana</b>
        &lt;<a href="mailto:sanjiva@watson.ibm.com">sanjiva@watson.ibm.com</a>&gt;
      </li>
    
</ul>
    
</p>
    
      
<div class="h5">
<h5>Committers Emeriti (committers that have
      been inactive for 3 months or more)</h5>
</div>
    
<p>
    
<ul class="noindent">
      
<li>
        
<b>Vahe Amirbekyan</b>
        &lt;<a href="mailto:avahe@apache.org">avahe@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Russell Butek</b>
        &lt;<a href="mailto:butek@us.ibm.com">butek@us.ibm.com</a>&gt;
      </li>
      
<li>
        
<b>Wouter Cloetens</b>
        &lt;<a href="mailto:wouter@mind.be">wouter@mind.be</a>&gt;
      </li>
      
<li>
        
<b>Matt Duftler</b>
        &lt;<a href="mailto:duftler@apache.org">duftler@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Steve Graham</b>
        &lt;<a href="mailto:sggraham@us.ibm.com">sggraham@us.ibm.com</a>&gt;
      </li>
      
<li>
        
<b>Rob Jellinghaus</b>
        &lt;<a href="mailto:robj@helium.com">robj@helium.com</a>&gt;
      </li>
      
<li>
        
<b>Jacek Kopecky</b>
        &lt;<a href="mailto:jacek@idoox.com">jacek@idoox.com</a>&gt;
      </li>
      
<li>
        
<b>Ravi Kumar</b>
        &lt;<a href="mailto:rkumar@borland.com">rkumar@borland.com</a>&gt;
      </li>
      
<li>
        
<b>Berin Loritsch</b>
        &lt;<a href="mailto:bloritsch@apache.org">bloritsch@apache.org</a>&gt;
      </li>
      
<li>
        
<b>George Matkovits</b>
        &lt;<a href="mailto:matkovitsg@apache.org">matkovitsg@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Kevin Mitchell</b>
        &lt;<a href="mailto:kmitchell@apache.org">kmitchell@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Vidyanand Murunikkara</b>
        &lt;<a href="mailto:Vidyanand@infravio.com">vidyanand@infravio.com</a>&gt;
      </li>
      
<li>
        
<b>Bill Nagy</b>
        &lt;<a href="mailto:wnagy@us.ibm.com">wnagy@us.ibm.com</a>&gt;
      </li>
      
<li>
        
<b>Christopher Nelson</b>
        &lt;<a href="mailto:cnelson@synchrony.net">cnelson@synchrony.net</a>&gt;
      </li>
      
<li>
        
<b>Ryo Neyama</b>
        &lt;<a href="mailto:neyama@apache.org">neyama@apache.org</a>&gt;
      </li>
      
<li>
        
<b>Glyn Normington</b>
        &lt;<a href="mailto:glyn@apache.org">glyn@apache.org</a>&gt;
        [<a href="http://cvs.apache.org/~glyn">Apache home
        page</a>]
      </li>
      
<li>
        
<b>Rick Rineholt
        &lt;</b><a href="mailto:rineholt@us.ibm.com">rineholt@us.ibm.com</a>
        <b>&gt;</b>
      
</li>
      
<li>
        
<b><a href="http://www.intertwingly.net/blog/">Sam
        Ruby</a></b>
        &lt;<a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>&gt;
      </li>
      
<li>
        
<b>Rich Scheuerle</b>
        &lt;<a href="mailto:scheu@us.ibm.com">scheu@us.ibm.com</a>&gt;
      </li>
      
<li>
        
<b>Matt Seibert</b>
        &lt;<a href="mailto:mseibert@us.ibm.com">mseibert@us.ibm.com</a>&gt;
      </li>
      
<li>
        
<b>Richard Sitze</b>
        &lt;<a href="mailto:rsitze@apache.org">rsitze@apache.org</a>&gt;
      </li>
      
<li>
        
<b>James Snell</b>
        &lt;<a href="mailto:jasnell@us.ibm.com">jasnell@us.ibm.com</a>&gt;
      </li>
    
</ul>
    
</p>
    
    
  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Contact Us</h5>
</div>
      

<p>
If you have questions or comments <b>about this site</b>, please send email
to:<br>

<a href="#mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a>.
</p>
<p>
If you have questions or comments <b>about the software or documentations on
this site</b>, please subscribe to the <b>axis-user</b> mailing list:
</p>
<p>

<a href="#mail.html">Mailing lists</a>

</p>
<p>
The Axis project is an effort of the Apache Software Foundation.  The address
for general ASF correspondence and licensing questions is:
</p>
<p>

<a href="#mailto:apache@apache.org">apache@apache.org</a>

</p>
<p>
You can find more contact information for the Apache Software Foundation
on the <a href="http://www.apache.org/foundation/contact.html">
contact page of the main Apache site</a>.
</p>
    
  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Legal Stuff</h5>
</div>
      

<p>
All material on this website is Copyright &copy; 1999-2003, 
The Apache Software Foundation.
</p>

<p>
Sun, Sun Microsystems, Solaris, Java, JavaServer Web Development Kit, and 
JavaServer Pages are trademarks or registered trademarks of Sun 
Microsystems, Inc. 
UNIX is a registered trademark in the United States and other countries, 
exclusively licensed through X/Open Company, Ltd. 
Windows, WindowsNT, and Win32 are registered trademarks of Microsoft Corp. 
All other product names mentioned herein and throughout the entire web site 
are trademarks of their respective owners. 
</p>
    
  
  
<div class="h2">
<h2>WebServices - Axis</h2>
</div> 
    
<div class="h5">
<h5>WebServices - Axis - Misc Notes</h5>
</div>
      

<p>
Misc notes and docs that might be of interest...
</p>

<p>

<ul>

<li> 
<a href="http://cvs.apache.org/viewcvs/~checkout~/ws-axis/java/docs/requirements.html?content-type=text/html">
     Current list of requirements</a>
</li>

<li> Notes from the 1st Face-2-Face </li>

<li> 
<a href="#docs/F2F-2.html">
     Notes from the 2nd Face-2-Face </a>
</li>

<li> 
<a href="#docs/ms-interop.html">
     Notes from the Interop meeting with Microsoft</a>
</li>

<li> 
<a href="#docs/SOAPVerse.html">
     Glen's note about SOAPVerse</a>
</li>

<li> 
<a href="#docs/CachingEarlDraft2.html">
     Toshi's note about Caching Mechanism</a>
</li>

<li> 
<a href="#java/soapmonitor-user-guide.html">
     SOAPMonitor User's Guide</a> [for nightly build]</li>

<li> 
<a href="http://ws.apache.org/~toshi/jp-site/axis/index.html">
     Axis site in Japanese</a> [translation]</li>

</ul>

</p>
    
  



<div id="pdf" align="right">
<a href="site.pdf"><img alt="PDF" src="skin/images/pdfdoc.gif" class="skin"><br>
          PDF</a>
</div>
</div>
</div>
</div>
</td>
<!--================= end Content ==================-->
</tr>
</tbody>
</table>
<!--================= end Main ==================-->
<!--================= start Footer ==================-->
<div id="footer">
<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
<tbody>
<tr>
<!--================= start Copyright ==================-->
<td colspan="2">
<div align="center">
<div class="copyright">
              Copyright &copy; 2000-2004&nbsp;The Apache Software Foundation. All rights reserved.
            </div>
</div>
</td>
<!--================= end Copyright ==================-->
</tr>
<tr>
<td align="left">
<!--================= start Host ==================-->
<!--================= end Host ==================--></td><td align="right">
<!--================= start Credits ==================-->
<div align="right">
<div class="credit"></div>
</div>
<!--================= end Credits ==================-->
</td>
</tr>
</tbody>
</table>
</div>
<!--================= end Footer ==================-->
</body>
</html>
