<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_08) on Sat Apr 22 18:56:48 PDT 2006 -->
<TITLE>
AxisServlet (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.transport.http.AxisServlet class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="AxisServlet (Axis API)";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/AxisServlet.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/axis/transport/http/AxisHTTPSessionListener.html" title="class in org.apache.axis.transport.http"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html" title="class in org.apache.axis.transport.http"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="AxisServlet.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.axis.transport.http</FONT>
<BR>
Class AxisServlet</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by">javax.servlet.GenericServlet
      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by">javax.servlet.http.HttpServlet
          <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html" title="class in org.apache.axis.transport.http">org.apache.axis.transport.http.AxisServletBase</A>
              <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.transport.http.AxisServlet</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig</DD>
</DL>
<HR>
<DL>
<DT>public class <B>AxisServlet</B><DT>extends <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html" title="class in org.apache.axis.transport.http">AxisServletBase</A></DL>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Doug Davis (dug@us.ibm.com), Steve Loughran
 xdoclet tags are not active yet; keep web.xml in sync.
 To change the location of the services, change url-pattern in web.xml and
 set parameter axis.servicesPath in server-config.wsdd. For more information see
 <a href="http://ws.apache.org/axis/java/reference.html">Axis Reference Guide</a>.</DD>
<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#org.apache.axis.transport.http.AxisServlet">Serialized Form</A></DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Field Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#INIT_PROPERTY_DISABLE_SERVICES_LIST">INIT_PROPERTY_DISABLE_SERVICES_LIST</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#INIT_PROPERTY_ENABLE_LIST">INIT_PROPERTY_ENABLE_LIST</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#INIT_PROPERTY_JWS_CLASS_DIR">INIT_PROPERTY_JWS_CLASS_DIR</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#INIT_PROPERTY_SERVICES_PATH">INIT_PROPERTY_SERVICES_PATH</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#INIT_PROPERTY_TRANSPORT_NAME">INIT_PROPERTY_TRANSPORT_NAME</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#INIT_PROPERTY_USE_SECURITY">INIT_PROPERTY_USE_SECURITY</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected static&nbsp;org.apache.commons.logging.Log</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#log">log</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.axis.transport.http.AxisServletBase"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Fields inherited from class org.apache.axis.transport.http.<A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html" title="class in org.apache.axis.transport.http">AxisServletBase</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#ATTR_AXIS_ENGINE">ATTR_AXIS_ENGINE</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#axisServer">axisServer</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#AxisServlet()">AxisServlet</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create a new servlet instance</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)">doGet</A></B>(javax.servlet.http.HttpServletRequest&nbsp;request,
      javax.servlet.http.HttpServletResponse&nbsp;response)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Process GET requests.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)">doPost</A></B>(javax.servlet.http.HttpServletRequest&nbsp;req,
       javax.servlet.http.HttpServletResponse&nbsp;res)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Process a POST to the servlet by handing it off to the Axis Engine.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#getDefaultJWSClassDir()">getDefaultJWSClassDir</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Provided to allow overload of default JWSClassDir
 by derived class.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#getHttpServletResponseStatus(org.apache.axis.AxisFault)">getHttpServletResponseStatus</A></B>(<A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A>&nbsp;af)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extract information from AxisFault and map it to a HTTP Status code.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#getJWSClassDir()">getJWSClassDir</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#init()">init</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialization method.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#initQueryStringHandlers()">initQueryStringHandlers</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize a Handler for the transport defined in the Axis server config.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#logException(java.lang.Throwable)">logException</A></B>(java.lang.Throwable&nbsp;e)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log any exception to our output log, at our chosen level</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#processAxisFault(org.apache.axis.AxisFault)">processAxisFault</A></B>(<A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A>&nbsp;fault)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;routine called whenever an axis fault is caught; where they
 are logged and any other business.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#reportAvailableServices(javax.servlet.http.HttpServletResponse, java.io.PrintWriter, javax.servlet.http.HttpServletRequest)">reportAvailableServices</A></B>(javax.servlet.http.HttpServletResponse&nbsp;response,
                        java.io.PrintWriter&nbsp;writer,
                        javax.servlet.http.HttpServletRequest&nbsp;request)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method lists the available services; it is called when there is
 nothing to execute on a GET</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#reportCantGetAxisService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.io.PrintWriter)">reportCantGetAxisService</A></B>(javax.servlet.http.HttpServletRequest&nbsp;request,
                         javax.servlet.http.HttpServletResponse&nbsp;response,
                         java.io.PrintWriter&nbsp;writer)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;generate the error response to indicate that there is apparently no endpoint there</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#reportCantGetJWSService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.io.PrintWriter)">reportCantGetJWSService</A></B>(javax.servlet.http.HttpServletRequest&nbsp;request,
                        javax.servlet.http.HttpServletResponse&nbsp;response,
                        java.io.PrintWriter&nbsp;writer)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;probe for a JWS page and report 'no service' if one is not found there</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#reportNoWSDL(javax.servlet.http.HttpServletResponse, java.io.PrintWriter, java.lang.String, org.apache.axis.AxisFault)">reportNoWSDL</A></B>(javax.servlet.http.HttpServletResponse&nbsp;res,
             java.io.PrintWriter&nbsp;writer,
             java.lang.String&nbsp;moreDetailCode,
             <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A>&nbsp;axisFault)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;report that we have no WSDL

 This method was moved to the querystring handler QSWSDLHandler.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/axis/transport/http/AxisServlet.html#reportServiceInfo(javax.servlet.http.HttpServletResponse, java.io.PrintWriter, org.apache.axis.handlers.soap.SOAPService, java.lang.String)">reportServiceInfo</A></B>(javax.servlet.http.HttpServletResponse&nbsp;response,
                  java.io.PrintWriter&nbsp;writer,
                  <A HREF="../../../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A>&nbsp;service,
                  java.lang.String&nbsp;serviceName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print a snippet of service info.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.axis.transport.http.AxisServletBase"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class org.apache.axis.transport.http.<A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html" title="class in org.apache.axis.transport.http">AxisServletBase</A></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#decLockCounter()">decLockCounter</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#destroy()">destroy</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getEngine()">getEngine</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getEngine(javax.servlet.http.HttpServlet)">getEngine</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getEngineEnvironment(javax.servlet.http.HttpServlet)">getEngineEnvironment</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getHomeDir()">getHomeDir</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getLoadCounter()">getLoadCounter</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getOption(javax.servlet.ServletContext, java.lang.String, java.lang.String)">getOption</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getServletContext()">getServletContext</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getWebappBase(javax.servlet.http.HttpServletRequest)">getWebappBase</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#getWebInfPath()">getWebInfPath</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#incLockCounter()">incLockCounter</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#isDevelopment()">isDevelopment</A>, <A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)">service</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_javax.servlet.http.HttpServlet"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class javax.servlet.http.HttpServlet</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service</CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_javax.servlet.GenericServlet"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class javax.servlet.GenericServlet</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>getInitParameter, getInitParameterNames, getServletConfig, getServletInfo, getServletName, init, log, log</CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Field Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="log"><!-- --></A><H3>
log</H3>
<PRE>
protected static org.apache.commons.logging.Log <B>log</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="INIT_PROPERTY_TRANSPORT_NAME"><!-- --></A><H3>
INIT_PROPERTY_TRANSPORT_NAME</H3>
<PRE>
public static final java.lang.String <B>INIT_PROPERTY_TRANSPORT_NAME</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.axis.transport.http.AxisServlet.INIT_PROPERTY_TRANSPORT_NAME">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="INIT_PROPERTY_USE_SECURITY"><!-- --></A><H3>
INIT_PROPERTY_USE_SECURITY</H3>
<PRE>
public static final java.lang.String <B>INIT_PROPERTY_USE_SECURITY</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.axis.transport.http.AxisServlet.INIT_PROPERTY_USE_SECURITY">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="INIT_PROPERTY_ENABLE_LIST"><!-- --></A><H3>
INIT_PROPERTY_ENABLE_LIST</H3>
<PRE>
public static final java.lang.String <B>INIT_PROPERTY_ENABLE_LIST</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.axis.transport.http.AxisServlet.INIT_PROPERTY_ENABLE_LIST">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="INIT_PROPERTY_JWS_CLASS_DIR"><!-- --></A><H3>
INIT_PROPERTY_JWS_CLASS_DIR</H3>
<PRE>
public static final java.lang.String <B>INIT_PROPERTY_JWS_CLASS_DIR</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.axis.transport.http.AxisServlet.INIT_PROPERTY_JWS_CLASS_DIR">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="INIT_PROPERTY_DISABLE_SERVICES_LIST"><!-- --></A><H3>
INIT_PROPERTY_DISABLE_SERVICES_LIST</H3>
<PRE>
public static final java.lang.String <B>INIT_PROPERTY_DISABLE_SERVICES_LIST</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.axis.transport.http.AxisServlet.INIT_PROPERTY_DISABLE_SERVICES_LIST">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="INIT_PROPERTY_SERVICES_PATH"><!-- --></A><H3>
INIT_PROPERTY_SERVICES_PATH</H3>
<PRE>
public static final java.lang.String <B>INIT_PROPERTY_SERVICES_PATH</B></PRE>
<DL>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#org.apache.axis.transport.http.AxisServlet.INIT_PROPERTY_SERVICES_PATH">Constant Field Values</A></DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="AxisServlet()"><!-- --></A><H3>
AxisServlet</H3>
<PRE>
public <B>AxisServlet</B>()</PRE>
<DL>
<DD>create a new servlet instance
<P>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="getJWSClassDir()"><!-- --></A><H3>
getJWSClassDir</H3>
<PRE>
protected java.lang.String <B>getJWSClassDir</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="init()"><!-- --></A><H3>
init</H3>
<PRE>
public void <B>init</B>()
          throws javax.servlet.ServletException</PRE>
<DL>
<DD>Initialization method.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html#init()">init</A></CODE> in class <CODE><A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html" title="class in org.apache.axis.transport.http">AxisServletBase</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>javax.servlet.ServletException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)"><!-- --></A><H3>
doGet</H3>
<PRE>
public void <B>doGet</B>(javax.servlet.http.HttpServletRequest&nbsp;request,
                  javax.servlet.http.HttpServletResponse&nbsp;response)
           throws javax.servlet.ServletException,
                  java.io.IOException</PRE>
<DL>
<DD>Process GET requests. This includes handoff of pseudo-SOAP requests
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>request</CODE> - request in<DD><CODE>response</CODE> - request out
<DT><B>Throws:</B>
<DD><CODE>javax.servlet.ServletException</CODE>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="processAxisFault(org.apache.axis.AxisFault)"><!-- --></A><H3>
processAxisFault</H3>
<PRE>
protected void <B>processAxisFault</B>(<A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A>&nbsp;fault)</PRE>
<DL>
<DD>routine called whenever an axis fault is caught; where they
 are logged and any other business. The method may modify the fault
 in the process
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>fault</CODE> - what went wrong.</DL>
</DD>
</DL>
<HR>

<A NAME="logException(java.lang.Throwable)"><!-- --></A><H3>
logException</H3>
<PRE>
protected void <B>logException</B>(java.lang.Throwable&nbsp;e)</PRE>
<DL>
<DD>log any exception to our output log, at our chosen level
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>e</CODE> - what went wrong</DL>
</DD>
</DL>
<HR>

<A NAME="reportServiceInfo(javax.servlet.http.HttpServletResponse, java.io.PrintWriter, org.apache.axis.handlers.soap.SOAPService, java.lang.String)"><!-- --></A><H3>
reportServiceInfo</H3>
<PRE>
protected void <B>reportServiceInfo</B>(javax.servlet.http.HttpServletResponse&nbsp;response,
                                 java.io.PrintWriter&nbsp;writer,
                                 <A HREF="../../../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A>&nbsp;service,
                                 java.lang.String&nbsp;serviceName)</PRE>
<DL>
<DD>print a snippet of service info.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>service</CODE> - service<DD><CODE>writer</CODE> - output channel<DD><CODE>serviceName</CODE> - where to put stuff</DL>
</DD>
</DL>
<HR>

<A NAME="reportNoWSDL(javax.servlet.http.HttpServletResponse, java.io.PrintWriter, java.lang.String, org.apache.axis.AxisFault)"><!-- --></A><H3>
reportNoWSDL</H3>
<PRE>
protected void <B>reportNoWSDL</B>(javax.servlet.http.HttpServletResponse&nbsp;res,
                            java.io.PrintWriter&nbsp;writer,
                            java.lang.String&nbsp;moreDetailCode,
                            <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A>&nbsp;axisFault)</PRE>
<DL>
<DD>report that we have no WSDL

 This method was moved to the querystring handler QSWSDLHandler. The
 method reportNoWSDL in AxisServlet is never called. Perhaps the method
 is overwritten in subclasses of AxisServlet so the method wasn't
 removed. See the discussion in

 http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23845
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>res</CODE> - <DD><CODE>writer</CODE> - <DD><CODE>moreDetailCode</CODE> - optional name of a message to provide more detail<DD><CODE>axisFault</CODE> - optional fault string, for extra info at debug time only</DL>
</DD>
</DL>
<HR>

<A NAME="reportAvailableServices(javax.servlet.http.HttpServletResponse, java.io.PrintWriter, javax.servlet.http.HttpServletRequest)"><!-- --></A><H3>
reportAvailableServices</H3>
<PRE>
protected void <B>reportAvailableServices</B>(javax.servlet.http.HttpServletResponse&nbsp;response,
                                       java.io.PrintWriter&nbsp;writer,
                                       javax.servlet.http.HttpServletRequest&nbsp;request)
                                throws <A HREF="../../../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A>,
                                       <A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></PRE>
<DL>
<DD>This method lists the available services; it is called when there is
 nothing to execute on a GET
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>response</CODE> - <DD><CODE>writer</CODE> - <DD><CODE>request</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE>
<DD><CODE><A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="reportCantGetAxisService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.io.PrintWriter)"><!-- --></A><H3>
reportCantGetAxisService</H3>
<PRE>
protected void <B>reportCantGetAxisService</B>(javax.servlet.http.HttpServletRequest&nbsp;request,
                                        javax.servlet.http.HttpServletResponse&nbsp;response,
                                        java.io.PrintWriter&nbsp;writer)</PRE>
<DL>
<DD>generate the error response to indicate that there is apparently no endpoint there
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>request</CODE> - the request that didnt have an edpoint<DD><CODE>response</CODE> - response we are generating<DD><CODE>writer</CODE> - open writer for the request</DL>
</DD>
</DL>
<HR>

<A NAME="reportCantGetJWSService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.io.PrintWriter)"><!-- --></A><H3>
reportCantGetJWSService</H3>
<PRE>
protected void <B>reportCantGetJWSService</B>(javax.servlet.http.HttpServletRequest&nbsp;request,
                                       javax.servlet.http.HttpServletResponse&nbsp;response,
                                       java.io.PrintWriter&nbsp;writer)</PRE>
<DL>
<DD>probe for a JWS page and report 'no service' if one is not found there
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>request</CODE> - the request that didnt have an edpoint<DD><CODE>response</CODE> - response we are generating<DD><CODE>writer</CODE> - open writer for the request</DL>
</DD>
</DL>
<HR>

<A NAME="doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)"><!-- --></A><H3>
doPost</H3>
<PRE>
public void <B>doPost</B>(javax.servlet.http.HttpServletRequest&nbsp;req,
                   javax.servlet.http.HttpServletResponse&nbsp;res)
            throws javax.servlet.ServletException,
                   java.io.IOException</PRE>
<DL>
<DD>Process a POST to the servlet by handing it off to the Axis Engine.
 Here is where SOAP messages are received
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>req</CODE> - posted request<DD><CODE>res</CODE> - respose
<DT><B>Throws:</B>
<DD><CODE>javax.servlet.ServletException</CODE> - trouble
<DD><CODE>java.io.IOException</CODE> - different trouble</DL>
</DD>
</DL>
<HR>

<A NAME="getHttpServletResponseStatus(org.apache.axis.AxisFault)"><!-- --></A><H3>
getHttpServletResponseStatus</H3>
<PRE>
protected int <B>getHttpServletResponseStatus</B>(<A HREF="../../../../../org/apache/axis/AxisFault.html" title="class in org.apache.axis">AxisFault</A>&nbsp;af)</PRE>
<DL>
<DD>Extract information from AxisFault and map it to a HTTP Status code.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>af</CODE> - Axis Fault
<DT><B>Returns:</B><DD>HTTP Status code.</DL>
</DD>
</DL>
<HR>

<A NAME="getDefaultJWSClassDir()"><!-- --></A><H3>
getDefaultJWSClassDir</H3>
<PRE>
protected java.lang.String <B>getDefaultJWSClassDir</B>()</PRE>
<DL>
<DD>Provided to allow overload of default JWSClassDir
 by derived class.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>directory for JWS files</DL>
</DD>
</DL>
<HR>

<A NAME="initQueryStringHandlers()"><!-- --></A><H3>
initQueryStringHandlers</H3>
<PRE>
public void <B>initQueryStringHandlers</B>()</PRE>
<DL>
<DD>Initialize a Handler for the transport defined in the Axis server config.
 This includes optionally filling in query string handlers.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/AxisServlet.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/axis/transport/http/AxisHTTPSessionListener.html" title="class in org.apache.axis.transport.http"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/axis/transport/http/AxisServletBase.html" title="class in org.apache.axis.transport.http"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="AxisServlet.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright © 2005 Apache Web Services Project. All Rights Reserved.
</BODY>
</HTML>
