<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>Service</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Service";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../javax/xml/rpc/ParameterMode.html" title="class in javax.xml.rpc"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/xml/rpc/Service.html" target="_top">Frames</a></li>
<li><a href="Service.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">javax.xml.rpc</div>
<h2 title="Interface Service" class="title">Interface Service</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../org/apache/openejb/server/axis/client/ServiceImpl.html" title="class in org.apache.openejb.server.axis.client">ServiceImpl</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">Service</span></pre>
<div class="block"><code>Service</code> class acts as a factory of the following:
  <UL>
  <LI>Dynamic proxy for the target service endpoint.
  <LI>Instance of the type <code>javax.xml.rpc.Call</code> for 
      the dynamic invocation of a remote operation on the 
      target service endpoint. 
  <LI>Instance of a generated stub class
  </UL></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc"><code>Call</code></a>, 
<a href="../../../javax/xml/rpc/Stub.html" title="interface in javax.xml.rpc"><code>Stub</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#createCall--">createCall</a></span>()</code>
<div class="block">Creates a <code>Call</code> object not associated with 
  specific operation or target service endpoint.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#createCall-javax.xml.namespace.QName-">createCall</a></span>(javax.xml.namespace.QName&nbsp;portName)</code>
<div class="block">Creates a <code>Call</code> instance.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#createCall-javax.xml.namespace.QName-javax.xml.namespace.QName-">createCall</a></span>(javax.xml.namespace.QName&nbsp;portName,
          javax.xml.namespace.QName&nbsp;operationName)</code>
<div class="block">Creates a <code>Call</code> instance.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#createCall-javax.xml.namespace.QName-java.lang.String-">createCall</a></span>(javax.xml.namespace.QName&nbsp;portName,
          java.lang.String&nbsp;operationName)</code>
<div class="block">Creates a <code>Call</code> instance.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#getCalls-javax.xml.namespace.QName-">getCalls</a></span>(javax.xml.namespace.QName&nbsp;portName)</code>
<div class="block">Gets an array of preconfigured <code>Call</code> objects for 
  invoking operations on the specified port.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../javax/xml/rpc/handler/HandlerRegistry.html" title="interface in javax.xml.rpc.handler">HandlerRegistry</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#getHandlerRegistry--">getHandlerRegistry</a></span>()</code>
<div class="block">Returns the configured <code>HandlerRegistry</code> instance
  for this <code>Service</code> instance.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.rmi.Remote</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#getPort-java.lang.Class-">getPort</a></span>(java.lang.Class&nbsp;serviceEndpointInterface)</code>
<div class="block">The getPort method returns either an instance of a generated 
  stub implementation class or a dynamic proxy.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.rmi.Remote</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#getPort-javax.xml.namespace.QName-java.lang.Class-">getPort</a></span>(javax.xml.namespace.QName&nbsp;portName,
       java.lang.Class&nbsp;serviceEndpointInterface)</code>
<div class="block">The getPort method returns either an instance of a generated 
  stub implementation class or a dynamic proxy.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.util.Iterator</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#getPorts--">getPorts</a></span>()</code>
<div class="block">Returns an <code>Iterator</code> for the list of 
  <code>QName</code>s of service endpoints grouped by this
  service</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>javax.xml.namespace.QName</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#getServiceName--">getServiceName</a></span>()</code>
<div class="block">Gets the name of this service.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../javax/xml/rpc/encoding/TypeMappingRegistry.html" title="interface in javax.xml.rpc.encoding">TypeMappingRegistry</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#getTypeMappingRegistry--">getTypeMappingRegistry</a></span>()</code>
<div class="block">Gets the <code>TypeMappingRegistry</code> for this 
  <code>Service</code> object.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.net.URL</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Service.html#getWSDLDocumentLocation--">getWSDLDocumentLocation</a></span>()</code>
<div class="block">Gets the location of the WSDL document for this Service.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getPort-javax.xml.namespace.QName-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPort</h4>
<pre>java.rmi.Remote&nbsp;getPort(javax.xml.namespace.QName&nbsp;portName,
                        java.lang.Class&nbsp;serviceEndpointInterface)
                 throws <a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></pre>
<div class="block">The getPort method returns either an instance of a generated 
  stub implementation class or a dynamic proxy. A service client
  uses this dynamic proxy to invoke operations on the target 
  service endpoint. The <code>serviceEndpointInterface</code> 
  specifies the service endpoint interface that is supported by
  the created dynamic proxy or stub instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>portName</code> - Qualified name of the service endpoint in 
                   the WSDL service description</dd>
<dd><code>serviceEndpointInterface</code> - Service endpoint interface 
                   supported by the dynamic proxy or stub
                   instance</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>java.rmi.Remote Stub instance or dynamic proxy that 
                   supports the specified service endpoint 
                   interface</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></code> - This exception is thrown in the
                   following cases:
                   <UL>
                   <LI>If there is an error in creation of 
                       the dynamic proxy or stub instance
                   <LI>If there is any missing WSDL metadata
                       as required by this method
                   <LI>Optionally, if an illegal 
                       <code>serviceEndpointInterface</code>
                       or <code>portName</code> is specified
                   </UL></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>Proxy</code>, 
<code>InvocationHandler</code></dd>
</dl>
</li>
</ul>
<a name="getPort-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPort</h4>
<pre>java.rmi.Remote&nbsp;getPort(java.lang.Class&nbsp;serviceEndpointInterface)
                 throws <a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></pre>
<div class="block">The getPort method returns either an instance of a generated 
  stub implementation class or a dynamic proxy. The parameter 
  <code>serviceEndpointInterface</code> specifies the service 
  endpoint interface that is supported by the returned stub or
  proxy. In the implementation of this method, the JAX-RPC 
  runtime system takes the responsibility of selecting a protocol
  binding (and a port) and configuring the stub accordingly. 
  The returned <code>Stub</code> instance should not be 
  reconfigured by the client.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceEndpointInterface</code> - Service endpoint interface</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Stub instance or dynamic proxy that supports the 
                   specified service endpoint interface</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></code> - <UL>
                   <LI>If there is an error during creation
                       of stub instance or dynamic proxy
                   <LI>If there is any missing WSDL metadata
                       as required by this method
                   <LI>Optionally, if an illegal 
                       <code>serviceEndpointInterface</code>
                       is specified
                   </UL></dd>
</dl>
</li>
</ul>
<a name="getCalls-javax.xml.namespace.QName-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCalls</h4>
<pre><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a>[]&nbsp;getCalls(javax.xml.namespace.QName&nbsp;portName)
         throws <a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></pre>
<div class="block">Gets an array of preconfigured <code>Call</code> objects for 
  invoking operations on the specified port. There is one 
  <code>Call</code> object per operation that can be invoked 
  on the specified port. Each <code>Call</code> object is 
  pre-configured and does not need to be configured using 
  the setter methods on <code>Call</code> interface.

  <p>Each invocation of the <code>getCalls</code> method 
  returns a new array of preconfigured <code>Call</code>
  objects
 
  <p>This method requires the <code>Service</code> implementation
  class to have access to the WSDL related metadata.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>portName</code> - Qualified name for the target service endpoint</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Call[]  Array of pre-configured Call objects</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></code> - If this Service class does not
                   have access to the required WSDL metadata
                   or if an illegal <code>portName</code> is
                   specified.</dd>
</dl>
</li>
</ul>
<a name="createCall-javax.xml.namespace.QName-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a>&nbsp;createCall(javax.xml.namespace.QName&nbsp;portName)
         throws <a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></pre>
<div class="block">Creates a <code>Call</code> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>portName</code> - Qualified name for the target service endpoint</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Call instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></code> - If any error in the creation of
                   the <code>Call</code> object</dd>
</dl>
</li>
</ul>
<a name="createCall-javax.xml.namespace.QName-javax.xml.namespace.QName-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a>&nbsp;createCall(javax.xml.namespace.QName&nbsp;portName,
                javax.xml.namespace.QName&nbsp;operationName)
         throws <a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></pre>
<div class="block">Creates a <code>Call</code> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>portName</code> - Qualified name for the target service 
                   endpoint</dd>
<dd><code>operationName</code> - Qualified Name of the operation for 
                   which this <code>Call</code> object is to 
                   be created.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Call instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></code> - If any error in the creation of
                   the <code>Call</code> object</dd>
</dl>
</li>
</ul>
<a name="createCall-javax.xml.namespace.QName-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a>&nbsp;createCall(javax.xml.namespace.QName&nbsp;portName,
                java.lang.String&nbsp;operationName)
         throws <a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></pre>
<div class="block">Creates a <code>Call</code> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>portName</code> - Qualified name for the target service 
                   endpoint</dd>
<dd><code>operationName</code> - Name of the operation for which this
                       <code>Call</code> object is to be 
                       created.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Call instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></code> - If any error in the creation of
                   the <code>Call</code> object</dd>
</dl>
</li>
</ul>
<a name="createCall--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre><a href="../../../javax/xml/rpc/Call.html" title="interface in javax.xml.rpc">Call</a>&nbsp;createCall()
         throws <a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></pre>
<div class="block">Creates a <code>Call</code> object not associated with 
  specific operation or target service endpoint. This 
  <code>Call</code> object needs to be configured using the 
  setter methods on the <code>Call</code> interface.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Call object</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></code> - If any error in the creation of
                   the <code>Call</code> object</dd>
</dl>
</li>
</ul>
<a name="getServiceName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServiceName</h4>
<pre>javax.xml.namespace.QName&nbsp;getServiceName()</pre>
<div class="block">Gets the name of this service.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Qualified name of this service</dd>
</dl>
</li>
</ul>
<a name="getPorts--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPorts</h4>
<pre>java.util.Iterator&nbsp;getPorts()
                     throws <a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></pre>
<div class="block">Returns an <code>Iterator</code> for the list of 
  <code>QName</code>s of service endpoints grouped by this
  service</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Returns <code>java.util.Iterator</code> with elements
          of type <code>javax.xml.namespace.QName</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc">ServiceException</a></code> - If this Service class does not
          have access to the required WSDL metadata</dd>
</dl>
</li>
</ul>
<a name="getWSDLDocumentLocation--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWSDLDocumentLocation</h4>
<pre>java.net.URL&nbsp;getWSDLDocumentLocation()</pre>
<div class="block">Gets the location of the WSDL document for this Service.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>URL for the location of the WSDL document for 
          this service</dd>
</dl>
</li>
</ul>
<a name="getTypeMappingRegistry--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypeMappingRegistry</h4>
<pre><a href="../../../javax/xml/rpc/encoding/TypeMappingRegistry.html" title="interface in javax.xml.rpc.encoding">TypeMappingRegistry</a>&nbsp;getTypeMappingRegistry()</pre>
<div class="block">Gets the <code>TypeMappingRegistry</code> for this 
  <code>Service</code> object. The returned 
  <code>TypeMappingRegistry</code> instance is pre-configured 
  to support the standard type mapping between XML and Java 
  types types as required by the JAX-RPC specification.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The TypeMappingRegistry for this Service object.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><code>java.lang.UnsupportedOperationException<code></code> - if the <code>Service</code> class does not support
          the configuration of <code>TypeMappingRegistry</code>.</dd>
</dl>
</li>
</ul>
<a name="getHandlerRegistry--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getHandlerRegistry</h4>
<pre><a href="../../../javax/xml/rpc/handler/HandlerRegistry.html" title="interface in javax.xml.rpc.handler">HandlerRegistry</a>&nbsp;getHandlerRegistry()</pre>
<div class="block">Returns the configured <code>HandlerRegistry</code> instance
  for this <code>Service</code> instance.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>HandlerRegistry</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><code>java.lang.UnsupportedOperationException</code></code> - if the <code>Service</code> class does not support 
          the configuration of a <code>HandlerRegistry</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../javax/xml/rpc/ParameterMode.html" title="class in javax.xml.rpc"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/xml/rpc/ServiceException.html" title="class in javax.xml.rpc"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/xml/rpc/Service.html" target="_top">Frames</a></li>
<li><a href="Service.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
