<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>Endpoint</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="Endpoint";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":10,"i13":6,"i14":6,"i15":9,"i16":9,"i17":10,"i18":6,"i19":6,"i20":6,"i21":6};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete 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/ws/Dispatch.html" title="interface in javax.xml.ws"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/xml/ws/EndpointContext.html" title="class in javax.xml.ws"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/xml/ws/Endpoint.html" target="_top">Frames</a></li>
<li><a href="Endpoint.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><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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.ws</div>
<h2 title="Class Endpoint" class="title">Class Endpoint</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>javax.xml.ws.Endpoint</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">Endpoint</span>
extends java.lang.Object</pre>
<div class="block">A Web service endpoint.

 <p>Endpoints are created using the static methods defined in this
 class. An endpoint is always tied to one <code>Binding</code>
 and one implementor, both set at endpoint creation time.

 <p>An endpoint is either in a published or an unpublished state.
 The <code>publish</code> methods can be used to start publishing
 an endpoint, at which point it starts accepting incoming requests.
 Conversely, the <code>stop</code> method can be used to stop
 accepting incoming requests and take the endpoint down.
 Once stopped, an endpoint cannot be published again.

 <p>An <code>Executor</code> may be set on the endpoint in order
 to gain better control over the threads used to dispatch incoming
 requests. For instance, thread pooling with certain parameters
 can be enabled by creating a <code>ThreadPoolExecutor</code> and
 registering it with the endpoint.

 <p>Handler chains can be set using the contained <code>Binding</code>.

 <p>An endpoint may have a list of metadata documents, such as WSDL
 and XMLSchema documents, bound to it. At publishing time, the
 JAX-WS implementation will try to reuse as much of that metadata
 as possible instead of generating new ones based on the annotations
 present on the implementor.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, JAX-WS 2.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/ws/Binding.html" title="interface in javax.xml.ws"><code>Binding</code></a>, 
<a href="../../../javax/xml/ws/BindingType.html" title="annotation in javax.xml.ws"><code>BindingType</code></a>, 
<a href="../../../javax/xml/ws/soap/SOAPBinding.html" title="interface in javax.xml.ws.soap"><code>SOAPBinding</code></a>, 
<code>Executor</code></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#WSDL_PORT">WSDL_PORT</a></span></code>
<div class="block">Standard property: name of WSDL port.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#WSDL_SERVICE">WSDL_SERVICE</a></span></code>
<div class="block">Standard property: name of WSDL service.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#Endpoint--">Endpoint</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== 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="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></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><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete 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>static <a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#create-java.lang.Object-">create</a></span>(java.lang.Object&nbsp;implementor)</code>
<div class="block">Creates an endpoint with the specified implementor object.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#create-java.lang.Object-javax.xml.ws.WebServiceFeature...-">create</a></span>(java.lang.Object&nbsp;implementor,
      <a href="../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</code>
<div class="block">Creates an endpoint with the specified implementor object and web
 service features.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#create-java.lang.String-java.lang.Object-">create</a></span>(java.lang.String&nbsp;bindingId,
      java.lang.Object&nbsp;implementor)</code>
<div class="block">Creates an endpoint with the specified binding type and
 implementor object.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#create-java.lang.String-java.lang.Object-javax.xml.ws.WebServiceFeature...-">create</a></span>(java.lang.String&nbsp;bindingId,
      java.lang.Object&nbsp;implementor,
      <a href="../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</code>
<div class="block">Creates an endpoint with the specified binding type,
 implementor object, and web service features.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../javax/xml/ws/Binding.html" title="interface in javax.xml.ws">Binding</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#getBinding--">getBinding</a></span>()</code>
<div class="block">Returns the binding for this endpoint.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract &lt;T extends <a href="../../../javax/xml/ws/EndpointReference.html" title="class in javax.xml.ws">EndpointReference</a>&gt;<br>T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#getEndpointReference-java.lang.Class-org.w3c.dom.Element...-">getEndpointReference</a></span>(java.lang.Class&lt;T&gt;&nbsp;clazz,
                    org.w3c.dom.Element...&nbsp;referenceParameters)</code>
<div class="block">Returns the <code>EndpointReference</code> associated with
 this <code>Endpoint</code> instance.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../javax/xml/ws/EndpointReference.html" title="class in javax.xml.ws">EndpointReference</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#getEndpointReference-org.w3c.dom.Element...-">getEndpointReference</a></span>(org.w3c.dom.Element...&nbsp;referenceParameters)</code>
<div class="block">Returns the <code>EndpointReference</code> associated with
 this <code>Endpoint</code> instance.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract java.util.concurrent.Executor</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#getExecutor--">getExecutor</a></span>()</code>
<div class="block">Returns the executor for this <code>Endpoint</code>instance.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>abstract java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#getImplementor--">getImplementor</a></span>()</code>
<div class="block">Returns the implementation object for this endpoint.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>abstract java.util.List&lt;javax.xml.transform.Source&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#getMetadata--">getMetadata</a></span>()</code>
<div class="block">Returns a list of metadata documents for the service.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>abstract java.util.Map&lt;java.lang.String,java.lang.Object&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#getProperties--">getProperties</a></span>()</code>
<div class="block">Returns the property bag for this <code>Endpoint</code> instance.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#isPublished--">isPublished</a></span>()</code>
<div class="block">Returns true if the endpoint is in the published state.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#publish-javax.xml.ws.spi.http.HttpContext-">publish</a></span>(<a href="../../../javax/xml/ws/spi/http/HttpContext.html" title="class in javax.xml.ws.spi.http">HttpContext</a>&nbsp;serverContext)</code>
<div class="block">Publishes this endpoint at the provided server context.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.Object-">publish</a></span>(java.lang.Object&nbsp;serverContext)</code>
<div class="block">Publishes this endpoint at the provided server context.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.String-">publish</a></span>(java.lang.String&nbsp;address)</code>
<div class="block">Publishes this endpoint at the given address.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static <a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.String-java.lang.Object-">publish</a></span>(java.lang.String&nbsp;address,
       java.lang.Object&nbsp;implementor)</code>
<div class="block">Creates and publishes an endpoint for the specified implementor
 object at the given address.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static <a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.String-java.lang.Object-javax.xml.ws.WebServiceFeature...-">publish</a></span>(java.lang.String&nbsp;address,
       java.lang.Object&nbsp;implementor,
       <a href="../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</code>
<div class="block">Creates and publishes an endpoint for the specified implementor
 object at the given address.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#setEndpointContext-javax.xml.ws.EndpointContext-">setEndpointContext</a></span>(<a href="../../../javax/xml/ws/EndpointContext.html" title="class in javax.xml.ws">EndpointContext</a>&nbsp;ctxt)</code>
<div class="block">By setting a <code>EndpointContext</code>, JAX-WS runtime knows about
 addresses of other endpoints in an application.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#setExecutor-java.util.concurrent.Executor-">setExecutor</a></span>(java.util.concurrent.Executor&nbsp;executor)</code>
<div class="block">Sets the executor for this <code>Endpoint</code> instance.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#setMetadata-java.util.List-">setMetadata</a></span>(java.util.List&lt;javax.xml.transform.Source&gt;&nbsp;metadata)</code>
<div class="block">Sets the metadata for this endpoint.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#setProperties-java.util.Map-">setProperties</a></span>(java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;properties)</code>
<div class="block">Sets the property bag for this <code>Endpoint</code> instance.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/Endpoint.html#stop--">stop</a></span>()</code>
<div class="block">Stops publishing this endpoint.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="WSDL_SERVICE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>WSDL_SERVICE</h4>
<pre>public static final&nbsp;java.lang.String WSDL_SERVICE</pre>
<div class="block">Standard property: name of WSDL service.
  <p>Type: javax.xml.namespace.QName</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.xml.ws.Endpoint.WSDL_SERVICE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="WSDL_PORT">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>WSDL_PORT</h4>
<pre>public static final&nbsp;java.lang.String WSDL_PORT</pre>
<div class="block">Standard property: name of WSDL port.
  <p>Type: javax.xml.namespace.QName</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#javax.xml.ws.Endpoint.WSDL_PORT">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="Endpoint--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Endpoint</h4>
<pre>public&nbsp;Endpoint()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="create-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>public static&nbsp;<a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;create(java.lang.Object&nbsp;implementor)</pre>
<div class="block">Creates an endpoint with the specified implementor object. If there is
 a binding specified via a BindingType annotation then it MUST be used else
 a default of SOAP 1.1 / HTTP binding MUST be used.
 <p>
 The newly created endpoint may be published by calling
 one of the <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.String-"><code>publish(String)</code></a> and
 <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.Object-"><code>publish(Object)</code></a> methods.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>implementor</code> - The endpoint implementor.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created endpoint.</dd>
</dl>
</li>
</ul>
<a name="create-java.lang.Object-javax.xml.ws.WebServiceFeature...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>public static&nbsp;<a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;create(java.lang.Object&nbsp;implementor,
                              <a href="../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</pre>
<div class="block">Creates an endpoint with the specified implementor object and web
 service features. If there is a binding specified via a BindingType
 annotation then it MUST be used else a default of SOAP 1.1 / HTTP
 binding MUST be used.
 <p>
 The newly created endpoint may be published by calling
 one of the <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.String-"><code>publish(String)</code></a> and
 <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.Object-"><code>publish(Object)</code></a> methods.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>implementor</code> - The endpoint implementor.</dd>
<dd><code>features</code> - A list of WebServiceFeature to configure on the
        endpoint. Supported features not in the <code>features
        </code> parameter will have their default values.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created endpoint.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</dd>
</dl>
</li>
</ul>
<a name="create-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>public static&nbsp;<a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;create(java.lang.String&nbsp;bindingId,
                              java.lang.Object&nbsp;implementor)</pre>
<div class="block">Creates an endpoint with the specified binding type and
 implementor object.
 <p>
 The newly created endpoint may be published by calling
 one of the <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.String-"><code>publish(String)</code></a> and
 <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.Object-"><code>publish(Object)</code></a> methods.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bindingId</code> - A URI specifying the binding to use. If the bindingID is
 <code>null</code> and no binding is specified via a BindingType
 annotation then a default SOAP 1.1 / HTTP binding MUST be used.</dd>
<dd><code>implementor</code> - The endpoint implementor.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created endpoint.</dd>
</dl>
</li>
</ul>
<a name="create-java.lang.String-java.lang.Object-javax.xml.ws.WebServiceFeature...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>public static&nbsp;<a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;create(java.lang.String&nbsp;bindingId,
                              java.lang.Object&nbsp;implementor,
                              <a href="../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</pre>
<div class="block">Creates an endpoint with the specified binding type,
 implementor object, and web service features.
 <p>
 The newly created endpoint may be published by calling
 one of the <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.String-"><code>publish(String)</code></a> and
 <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.Object-"><code>publish(Object)</code></a> methods.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bindingId</code> - A URI specifying the binding to use. If the bindingID is
 <code>null</code> and no binding is specified via a BindingType
 annotation then a default SOAP 1.1 / HTTP binding MUST be used.</dd>
<dd><code>implementor</code> - The endpoint implementor.</dd>
<dd><code>features</code> - A list of WebServiceFeature to configure on the
        endpoint. Supported features not in the <code>features
        </code> parameter will have their default values.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created endpoint.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</dd>
</dl>
</li>
</ul>
<a name="getBinding--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBinding</h4>
<pre>public abstract&nbsp;<a href="../../../javax/xml/ws/Binding.html" title="interface in javax.xml.ws">Binding</a>&nbsp;getBinding()</pre>
<div class="block">Returns the binding for this endpoint.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The binding for this endpoint</dd>
</dl>
</li>
</ul>
<a name="getImplementor--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getImplementor</h4>
<pre>public abstract&nbsp;java.lang.Object&nbsp;getImplementor()</pre>
<div class="block">Returns the implementation object for this endpoint.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The implementor for this endpoint</dd>
</dl>
</li>
</ul>
<a name="publish-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>publish</h4>
<pre>public abstract&nbsp;void&nbsp;publish(java.lang.String&nbsp;address)</pre>
<div class="block">Publishes this endpoint at the given address.
 The necessary server infrastructure will be created and
 configured by the JAX-WS implementation using some default configuration.
 In order to get more control over the server configuration, please
 use the <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.Object-"><code>publish(Object)</code></a> method instead.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>address</code> - A URI specifying the address to use. The address
        MUST be compatible with the binding specified at the
        time the endpoint was created.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If the provided address URI is not usable
          in conjunction with the endpoint's binding.</dd>
<dd><code>java.lang.IllegalStateException</code> - If the endpoint has been published already or it has been stopped.</dd>
<dd><code>java.lang.SecurityException</code> - If a <code>java.lang.SecurityManger</code>
          is being used and the application doesn't have the
          <code>WebServicePermission("publishEndpoint")</code> permission.</dd>
</dl>
</li>
</ul>
<a name="publish-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>publish</h4>
<pre>public static&nbsp;<a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;publish(java.lang.String&nbsp;address,
                               java.lang.Object&nbsp;implementor)</pre>
<div class="block">Creates and publishes an endpoint for the specified implementor
 object at the given address.
 <p>
 The necessary server infrastructure will be created and
 configured by the JAX-WS implementation using some default configuration.

 In order to get more control over the server configuration, please
 use the <a href="../../../javax/xml/ws/Endpoint.html#create-java.lang.String-java.lang.Object-"><code>create(String,Object)</code></a> and
 <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.Object-"><code>publish(Object)</code></a> methods instead.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>address</code> - A URI specifying the address and transport/protocol
        to use. A http: URI MUST result in the SOAP 1.1/HTTP
        binding being used. Implementations may support other
        URI schemes.</dd>
<dd><code>implementor</code> - The endpoint implementor.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created endpoint.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.SecurityException</code> - If a <code>java.lang.SecurityManger</code>
          is being used and the application doesn't have the
          <code>WebServicePermission("publishEndpoint")</code> permission.</dd>
</dl>
</li>
</ul>
<a name="publish-java.lang.String-java.lang.Object-javax.xml.ws.WebServiceFeature...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>publish</h4>
<pre>public static&nbsp;<a href="../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;publish(java.lang.String&nbsp;address,
                               java.lang.Object&nbsp;implementor,
                               <a href="../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</pre>
<div class="block">Creates and publishes an endpoint for the specified implementor
 object at the given address. The created endpoint is configured
 with the web service features.
 <p>
 The necessary server infrastructure will be created and
 configured by the JAX-WS implementation using some default configuration.

 In order to get more control over the server configuration, please
 use the <a href="../../../javax/xml/ws/Endpoint.html#create-java.lang.String-java.lang.Object-"><code>create(String,Object)</code></a> and
 <a href="../../../javax/xml/ws/Endpoint.html#publish-java.lang.Object-"><code>publish(Object)</code></a> methods instead.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>address</code> - A URI specifying the address and transport/protocol
        to use. A http: URI MUST result in the SOAP 1.1/HTTP
        binding being used. Implementations may support other
        URI schemes.</dd>
<dd><code>implementor</code> - The endpoint implementor.</dd>
<dd><code>features</code> - A list of WebServiceFeature to configure on the
        endpoint. Supported features not in the <code>features
        </code> parameter will have their default values.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created endpoint.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.SecurityException</code> - If a <code>java.lang.SecurityManger</code>
          is being used and the application doesn't have the
          <code>WebServicePermission("publishEndpoint")</code> permission.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</dd>
</dl>
</li>
</ul>
<a name="publish-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>publish</h4>
<pre>public abstract&nbsp;void&nbsp;publish(java.lang.Object&nbsp;serverContext)</pre>
<div class="block">Publishes this endpoint at the provided server context.
 A server context encapsulates the server infrastructure
 and addressing information for a particular transport.
 For a call to this method to succeed, the server context
 passed as an argument to it MUST be compatible with the
 endpoint's binding.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serverContext</code> - An object representing a server
           context to be used for publishing the endpoint.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If the provided server context is not
              supported by the implementation or turns
              out to be unusable in conjunction with the
              endpoint's binding.</dd>
<dd><code>java.lang.IllegalStateException</code> - If the endpoint has been published already or it has been stopped.</dd>
<dd><code>java.lang.SecurityException</code> - If a <code>java.lang.SecurityManger</code>
          is being used and the application doesn't have the
          <code>WebServicePermission("publishEndpoint")</code> permission.</dd>
</dl>
</li>
</ul>
<a name="publish-javax.xml.ws.spi.http.HttpContext-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>publish</h4>
<pre>public&nbsp;void&nbsp;publish(<a href="../../../javax/xml/ws/spi/http/HttpContext.html" title="class in javax.xml.ws.spi.http">HttpContext</a>&nbsp;serverContext)</pre>
<div class="block">Publishes this endpoint at the provided server context.
 A server context encapsulates the server infrastructure
 and addressing information for a particular transport.
 For a call to this method to succeed, the server context
 passed as an argument to it MUST be compatible with the
 endpoint's binding.

 <p>
 This is meant for container developers to publish the
 the endpoints portably and not intended for the end
 developers.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serverContext</code> - An object representing a server
           context to be used for publishing the endpoint.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If the provided server context is not
              supported by the implementation or turns
              out to be unusable in conjunction with the
              endpoint's binding.</dd>
<dd><code>java.lang.IllegalStateException</code> - If the endpoint has been published already or it has been stopped.</dd>
<dd><code>java.lang.SecurityException</code> - If a <code>java.lang.SecurityManger</code>
          is being used and the application doesn't have the
          <code>WebServicePermission("publishEndpoint")</code> permission.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</dd>
</dl>
</li>
</ul>
<a name="stop--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
<pre>public abstract&nbsp;void&nbsp;stop()</pre>
<div class="block">Stops publishing this endpoint.

 If the endpoint is not in a published state, this method
 has no effect.</div>
</li>
</ul>
<a name="isPublished--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isPublished</h4>
<pre>public abstract&nbsp;boolean&nbsp;isPublished()</pre>
<div class="block">Returns true if the endpoint is in the published state.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the endpoint is in the published state.</dd>
</dl>
</li>
</ul>
<a name="getMetadata--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMetadata</h4>
<pre>public abstract&nbsp;java.util.List&lt;javax.xml.transform.Source&gt;&nbsp;getMetadata()</pre>
<div class="block">Returns a list of metadata documents for the service.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>List&lt;javax.xml.transform.Source&gt;</code> A list of metadata documents for the service</dd>
</dl>
</li>
</ul>
<a name="setMetadata-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMetadata</h4>
<pre>public abstract&nbsp;void&nbsp;setMetadata(java.util.List&lt;javax.xml.transform.Source&gt;&nbsp;metadata)</pre>
<div class="block">Sets the metadata for this endpoint.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>metadata</code> - A list of XML document sources containing
           metadata information for the endpoint (e.g.
           WSDL or XML Schema documents)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - If the endpoint
         has already been published.</dd>
</dl>
</li>
</ul>
<a name="getExecutor--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExecutor</h4>
<pre>public abstract&nbsp;java.util.concurrent.Executor&nbsp;getExecutor()</pre>
<div class="block">Returns the executor for this <code>Endpoint</code>instance.

 The executor is used to dispatch an incoming request to
 the implementor object.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <code>java.util.concurrent.Executor</code> to be
         used to dispatch a request.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>Executor</code></dd>
</dl>
</li>
</ul>
<a name="setExecutor-java.util.concurrent.Executor-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setExecutor</h4>
<pre>public abstract&nbsp;void&nbsp;setExecutor(java.util.concurrent.Executor&nbsp;executor)</pre>
<div class="block">Sets the executor for this <code>Endpoint</code> instance.

 The executor is used to dispatch an incoming request to
 the implementor object.

 If this <code>Endpoint</code> is published using the
 <code>publish(Object)</code> method and the specified server
 context defines its own threading behavior, the executor
 may be ignored.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>executor</code> - The <code>java.util.concurrent.Executor</code>
        to be used to dispatch a request.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.SecurityException</code> - If the instance does not support
         setting an executor for security reasons (e.g. the
         necessary permissions are missing).</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>Executor</code></dd>
</dl>
</li>
</ul>
<a name="getProperties--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProperties</h4>
<pre>public abstract&nbsp;java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;getProperties()</pre>
<div class="block">Returns the property bag for this <code>Endpoint</code> instance.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Map&lt;String,Object&gt; The property bag
         associated with this instance.</dd>
</dl>
</li>
</ul>
<a name="setProperties-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setProperties</h4>
<pre>public abstract&nbsp;void&nbsp;setProperties(java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;properties)</pre>
<div class="block">Sets the property bag for this <code>Endpoint</code> instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>properties</code> - The property bag associated with
        this instance.</dd>
</dl>
</li>
</ul>
<a name="getEndpointReference-org.w3c.dom.Element...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEndpointReference</h4>
<pre>public abstract&nbsp;<a href="../../../javax/xml/ws/EndpointReference.html" title="class in javax.xml.ws">EndpointReference</a>&nbsp;getEndpointReference(org.w3c.dom.Element...&nbsp;referenceParameters)</pre>
<div class="block">Returns the <code>EndpointReference</code> associated with
 this <code>Endpoint</code> instance.
 <p>
 If the Binding for this <code>bindingProvider</code> is
 either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
 <code>W3CEndpointReference</code> MUST be returned.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>referenceParameters</code> - Reference parameters to be associated with the
 returned <code>EndpointReference</code> instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>EndpointReference of this <code>Endpoint</code> instance.
 If the returned <code>EndpointReference</code> is of type
 <code>W3CEndpointReference</code> then it MUST contain the
 the specified <code>referenceParameters</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/ws/WebServiceException.html" title="class in javax.xml.ws">WebServiceException</a></code> - If any error in the creation of
 the <code>EndpointReference</code> or if the <code>Endpoint</code> is
 not in the published state.</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - If this <code>BindingProvider</code>
 uses the XML/HTTP binding.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, JAX-WS 2.1</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/ws/wsaddressing/W3CEndpointReference.html" title="class in javax.xml.ws.wsaddressing"><code>W3CEndpointReference</code></a></dd>
</dl>
</li>
</ul>
<a name="getEndpointReference-java.lang.Class-org.w3c.dom.Element...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEndpointReference</h4>
<pre>public abstract&nbsp;&lt;T extends <a href="../../../javax/xml/ws/EndpointReference.html" title="class in javax.xml.ws">EndpointReference</a>&gt;&nbsp;T&nbsp;getEndpointReference(java.lang.Class&lt;T&gt;&nbsp;clazz,
                                                                     org.w3c.dom.Element...&nbsp;referenceParameters)</pre>
<div class="block">Returns the <code>EndpointReference</code> associated with
 this <code>Endpoint</code> instance.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - The type of EndpointReference.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>clazz</code> - Specifies the type of EndpointReference  that MUST be returned.</dd>
<dd><code>referenceParameters</code> - Reference parameters to be associated with the
 returned <code>EndpointReference</code> instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>EndpointReference of type <code>clazz</code> of this
 <code>Endpoint</code> instance.
 If the returned <code>EndpointReference</code> is of type
 <code>W3CEndpointReference</code> then it MUST contain the
 the specified <code>referenceParameters</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/ws/WebServiceException.html" title="class in javax.xml.ws">WebServiceException</a></code> - If any error in the creation of
 the <code>EndpointReference</code> or if the <code>Endpoint</code> is
 not in the published state or if the <code>clazz</code> is not a supported
 <code>EndpointReference</code> type.</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - If this <code>BindingProvider</code>
 uses the XML/HTTP binding.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, JAX-WS 2.1</dd>
</dl>
</li>
</ul>
<a name="setEndpointContext-javax.xml.ws.EndpointContext-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setEndpointContext</h4>
<pre>public&nbsp;void&nbsp;setEndpointContext(<a href="../../../javax/xml/ws/EndpointContext.html" title="class in javax.xml.ws">EndpointContext</a>&nbsp;ctxt)</pre>
<div class="block">By setting a <code>EndpointContext</code>, JAX-WS runtime knows about
 addresses of other endpoints in an application. If multiple endpoints
 share different ports of a WSDL, then the multiple port addresses
 are patched when the WSDL is accessed.

 <p>
 This needs to be set before publishing the endpoints.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ctxt</code> - that is shared for multiple endpoints</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - If the endpoint has been published already or it has been stopped.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</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/ws/Dispatch.html" title="interface in javax.xml.ws"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/xml/ws/EndpointContext.html" title="class in javax.xml.ws"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/xml/ws/Endpoint.html" target="_top">Frames</a></li>
<li><a href="Endpoint.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><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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>
