<!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:43 PDT 2006 -->
<TITLE>
EngineConfiguration (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.EngineConfiguration interface">

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

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="EngineConfiguration (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/EngineConfiguration.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/Chain.html" title="interface in org.apache.axis"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../org/apache/axis/EngineConfigurationFactory.html" title="interface in org.apache.axis"><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="EngineConfiguration.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;CONSTR&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;CONSTR&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</FONT>
<BR>
Interface EngineConfiguration</H2>
<DL>
<DT><B>All Known Subinterfaces:</B> <DD><A HREF="../../../org/apache/axis/WSDDEngineConfiguration.html" title="interface in org.apache.axis">WSDDEngineConfiguration</A></DD>
</DL>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../org/apache/axis/configuration/DirProvider.html" title="class in org.apache.axis.configuration">DirProvider</A>, <A HREF="../../../org/apache/axis/configuration/FileProvider.html" title="class in org.apache.axis.configuration">FileProvider</A>, <A HREF="../../../org/apache/axis/configuration/NullProvider.html" title="class in org.apache.axis.configuration">NullProvider</A>, <A HREF="../../../org/apache/axis/configuration/SimpleProvider.html" title="class in org.apache.axis.configuration">SimpleProvider</A>, <A HREF="../../../org/apache/axis/deployment/wsdd/WSDDDeployment.html" title="class in org.apache.axis.deployment.wsdd">WSDDDeployment</A></DD>
</DL>
<HR>
<DL>
<DT>public interface <B>EngineConfiguration</B></DL>

<P>
EngineConfiguration is an interface that the Message Flow subsystem
 provides so that engine configuration can be provided in a pluggable
 way. An instance of EngineConfiguration provides configuration
 for a particular engine instance.
 <p>
 Concrete implementations of this interface will obtain configuration
 information from some source (examples might be files, Strings, or
 databases) and are responsible for writing it into an AxisEngine, and
 writing an AxisEngine's state back out to whatever storage medium is in use.
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Glyn Normington (glyn@apache.org), Glen Daniels (gdaniels@apache.org)</DD>
</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/EngineConfiguration.html#PROPERTY_NAME">PROPERTY_NAME</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Property name used for setting an EngineConfiguration to be used
 in creating engines.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->


<!-- ========== 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/EngineConfiguration.html#configureEngine(org.apache.axis.AxisEngine)">configureEngine</A></B>(<A HREF="../../../org/apache/axis/AxisEngine.html" title="class in org.apache.axis">AxisEngine</A>&nbsp;engine)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configure this AxisEngine using whatever data source we have.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getDeployedServices()">getDeployedServices</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get an enumeration of the services deployed to this engine.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Hashtable</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getGlobalOptions()">getGlobalOptions</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the global configuration options.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/Handler.html" title="interface in org.apache.axis">Handler</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getGlobalRequest()">getGlobalRequest</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a global request handler.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/Handler.html" title="interface in org.apache.axis">Handler</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getGlobalResponse()">getGlobalResponse</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a global response handler.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/Handler.html" title="interface in org.apache.axis">Handler</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getHandler(javax.xml.namespace.QName)">getHandler</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieve an instance of the named handler.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.List</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getRoles()">getRoles</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a list of roles that this engine plays globally.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getService(javax.xml.namespace.QName)">getService</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieve an instance of the named service.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getServiceByNamespaceURI(java.lang.String)">getServiceByNamespaceURI</A></B>(java.lang.String&nbsp;namespace)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a service which has been mapped to a particular namespace.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/Handler.html" title="interface in org.apache.axis">Handler</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getTransport(javax.xml.namespace.QName)">getTransport</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieve an instance of the named transport.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../org/apache/axis/encoding/TypeMappingRegistry.html" title="interface in org.apache.axis.encoding">TypeMappingRegistry</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../org/apache/axis/EngineConfiguration.html#getTypeMappingRegistry()">getTypeMappingRegistry</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retrieve the TypeMappingRegistry for this engine.</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/EngineConfiguration.html#writeEngineConfig(org.apache.axis.AxisEngine)">writeEngineConfig</A></B>(<A HREF="../../../org/apache/axis/AxisEngine.html" title="class in org.apache.axis">AxisEngine</A>&nbsp;engine)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Read the configuration from an engine, and store it somehow.</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="PROPERTY_NAME"><!-- --></A><H3>
PROPERTY_NAME</H3>
<PRE>
public static final java.lang.String <B>PROPERTY_NAME</B></PRE>
<DL>
<DD>Property name used for setting an EngineConfiguration to be used
 in creating engines.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.apache.axis.EngineConfiguration.PROPERTY_NAME">Constant Field Values</A></DL>
</DL>

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


<!-- ============ 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="configureEngine(org.apache.axis.AxisEngine)"><!-- --></A><H3>
configureEngine</H3>
<PRE>
public void <B>configureEngine</B>(<A HREF="../../../org/apache/axis/AxisEngine.html" title="class in org.apache.axis">AxisEngine</A>&nbsp;engine)
                     throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Configure this AxisEngine using whatever data source we have.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>engine</CODE> - the AxisEngine we'll deploy state to
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was a problem</DL>
</DD>
</DL>
<HR>

<A NAME="writeEngineConfig(org.apache.axis.AxisEngine)"><!-- --></A><H3>
writeEngineConfig</H3>
<PRE>
public void <B>writeEngineConfig</B>(<A HREF="../../../org/apache/axis/AxisEngine.html" title="class in org.apache.axis">AxisEngine</A>&nbsp;engine)
                       throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Read the configuration from an engine, and store it somehow.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>engine</CODE> - the AxisEngine from which to read state.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was a problem</DL>
</DD>
</DL>
<HR>

<A NAME="getHandler(javax.xml.namespace.QName)"><!-- --></A><H3>
getHandler</H3>
<PRE>
public <A HREF="../../../org/apache/axis/Handler.html" title="interface in org.apache.axis">Handler</A> <B>getHandler</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)
                   throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Retrieve an instance of the named handler.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - the <code>QName</code> identifying the
              <code>Handler</code>
<DT><B>Returns:</B><DD>the <code>Handler</code> associated with <code>qname</code>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was a failure in resolving
              <code>qname</code></DL>
</DD>
</DL>
<HR>

<A NAME="getService(javax.xml.namespace.QName)"><!-- --></A><H3>
getService</H3>
<PRE>
public <A HREF="../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A> <B>getService</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)
                       throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Retrieve an instance of the named service.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - the <code>QName</code> identifying the
              <code>Service</code>
<DT><B>Returns:</B><DD>the <code>Service</code> associated with <code>qname</code>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was an error resolving the
              qname</DL>
</DD>
</DL>
<HR>

<A NAME="getServiceByNamespaceURI(java.lang.String)"><!-- --></A><H3>
getServiceByNamespaceURI</H3>
<PRE>
public <A HREF="../../../org/apache/axis/handlers/soap/SOAPService.html" title="class in org.apache.axis.handlers.soap">SOAPService</A> <B>getServiceByNamespaceURI</B>(java.lang.String&nbsp;namespace)
                                     throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Get a service which has been mapped to a particular namespace.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>namespace</CODE> - a namespace URI
<DT><B>Returns:</B><DD>an instance of the appropriate Service, or null
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was an error resolving the
              namespace</DL>
</DD>
</DL>
<HR>

<A NAME="getTransport(javax.xml.namespace.QName)"><!-- --></A><H3>
getTransport</H3>
<PRE>
public <A HREF="../../../org/apache/axis/Handler.html" title="interface in org.apache.axis">Handler</A> <B>getTransport</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;qname)
                     throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Retrieve an instance of the named transport.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>qname</CODE> - the <code>QName</code> of the transport
<DT><B>Returns:</B><DD>a <code>Handler</code> implementing the transport
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was an error resolving the
              transport</DL>
</DD>
</DL>
<HR>

<A NAME="getTypeMappingRegistry()"><!-- --></A><H3>
getTypeMappingRegistry</H3>
<PRE>
public <A HREF="../../../org/apache/axis/encoding/TypeMappingRegistry.html" title="interface in org.apache.axis.encoding">TypeMappingRegistry</A> <B>getTypeMappingRegistry</B>()
                                           throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Retrieve the TypeMappingRegistry for this engine.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the type mapping registry
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was an error resolving the
              registry</DL>
</DD>
</DL>
<HR>

<A NAME="getGlobalRequest()"><!-- --></A><H3>
getGlobalRequest</H3>
<PRE>
public <A HREF="../../../org/apache/axis/Handler.html" title="interface in org.apache.axis">Handler</A> <B>getGlobalRequest</B>()
                         throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Returns a global request handler.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>Handler</code> that globally handles requests
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was some error fetching the
              handler</DL>
</DD>
</DL>
<HR>

<A NAME="getGlobalResponse()"><!-- --></A><H3>
getGlobalResponse</H3>
<PRE>
public <A HREF="../../../org/apache/axis/Handler.html" title="interface in org.apache.axis">Handler</A> <B>getGlobalResponse</B>()
                          throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Returns a global response handler.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>Handler</code> that globally handles responses
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if there was some error fetching the
              handler</DL>
</DD>
</DL>
<HR>

<A NAME="getGlobalOptions()"><!-- --></A><H3>
getGlobalOptions</H3>
<PRE>
public java.util.Hashtable <B>getGlobalOptions</B>()
                                     throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Returns the global configuration options.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the global options as a <code>Hashtable</code>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if the global options could not be
              returned</DL>
</DD>
</DL>
<HR>

<A NAME="getDeployedServices()"><!-- --></A><H3>
getDeployedServices</H3>
<PRE>
public java.util.Iterator <B>getDeployedServices</B>()
                                       throws <A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></PRE>
<DL>
<DD>Get an enumeration of the services deployed to this engine.
 Each service is represented as <code>ServiceDesc</code> object.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>an <code>Iterator</code> over the <code>ServiceDesc</code>
              objects
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../org/apache/axis/ConfigurationException.html" title="class in org.apache.axis">ConfigurationException</A></CODE> - if the deployed services could not be
              returned<DT><B>See Also:</B><DD><A HREF="../../../org/apache/axis/description/ServiceDesc.html" title="interface in org.apache.axis.description"><CODE>ServiceDesc</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getRoles()"><!-- --></A><H3>
getRoles</H3>
<PRE>
public java.util.List <B>getRoles</B>()</PRE>
<DL>
<DD>Get a list of roles that this engine plays globally.  Services
 within the engine configuration may also add additional roles.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>a <code>List</code> of the roles for this engine</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/EngineConfiguration.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/Chain.html" title="interface in org.apache.axis"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../org/apache/axis/EngineConfigurationFactory.html" title="interface in org.apache.axis"><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="EngineConfiguration.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;CONSTR&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;CONSTR&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>
