<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>Provider</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="Provider";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":10,"i2":10,"i3":6,"i4":10,"i5":6,"i6":10,"i7":6,"i8":10,"i9":6,"i10":9,"i11":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/spi/Invoker.html" title="class in javax.xml.ws.spi"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../javax/xml/ws/spi/ServiceDelegate.html" title="class in javax.xml.ws.spi"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/xml/ws/spi/Provider.html" target="_top">Frames</a></li>
<li><a href="Provider.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><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>Field&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.spi</div>
<h2 title="Class Provider" class="title">Class Provider</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>javax.xml.ws.spi.Provider</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../org/apache/openejb/client/JaxWsProviderWrapper.html" title="class in org.apache.openejb.client">JaxWsProviderWrapper</a>, <a href="../../../../org/apache/openejb/core/webservices/ProviderWrapper.html" title="class in org.apache.openejb.core.webservices">ProviderWrapper</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">Provider</span>
extends java.lang.Object</pre>
<div class="block">Service provider for <code>ServiceDelegate</code> and
 <code>Endpoint</code> objects.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, JAX-WS 2.0</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/ws/spi/Provider.html#Provider--">Provider</a></span>()</code>
<div class="block">Creates a new instance of Provider</div>
</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>abstract <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/spi/Provider.html#createAndPublishEndpoint-java.lang.String-java.lang.Object-">createAndPublishEndpoint</a></span>(java.lang.String&nbsp;address,
                        java.lang.Object&nbsp;implementor)</code>
<div class="block">Creates and publishes an endpoint object with the specified
 address and implementation object.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><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/spi/Provider.html#createAndPublishEndpoint-java.lang.String-java.lang.Object-javax.xml.ws.WebServiceFeature...-">createAndPublishEndpoint</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 object with the specified
 address, implementation object and web service features.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><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/spi/Provider.html#createEndpoint-java.lang.String-java.lang.Class-javax.xml.ws.spi.Invoker-javax.xml.ws.WebServiceFeature...-">createEndpoint</a></span>(java.lang.String&nbsp;bindingId,
              java.lang.Class&lt;?&gt;&nbsp;implementorClass,
              <a href="../../../../javax/xml/ws/spi/Invoker.html" title="class in javax.xml.ws.spi">Invoker</a>&nbsp;invoker,
              <a href="../../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</code>
<div class="block">Creates an endpoint object with the provided binding, implementation
 class, invoker and web service features.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract <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/spi/Provider.html#createEndpoint-java.lang.String-java.lang.Object-">createEndpoint</a></span>(java.lang.String&nbsp;bindingId,
              java.lang.Object&nbsp;implementor)</code>
<div class="block">Creates an endpoint object with the provided binding and implementation
 object.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><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/spi/Provider.html#createEndpoint-java.lang.String-java.lang.Object-javax.xml.ws.WebServiceFeature...-">createEndpoint</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 object with the provided binding, implementation
 object and web service features.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract <a href="../../../../javax/xml/ws/spi/ServiceDelegate.html" title="class in javax.xml.ws.spi">ServiceDelegate</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/ws/spi/Provider.html#createServiceDelegate-java.net.URL-javax.xml.namespace.QName-java.lang.Class-">createServiceDelegate</a></span>(java.net.URL&nbsp;wsdlDocumentLocation,
                     javax.xml.namespace.QName&nbsp;serviceName,
                     java.lang.Class&lt;? extends <a href="../../../../javax/xml/ws/Service.html" title="class in javax.xml.ws">Service</a>&gt;&nbsp;serviceClass)</code>
<div class="block">Creates a service delegate object.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/xml/ws/spi/ServiceDelegate.html" title="class in javax.xml.ws.spi">ServiceDelegate</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/ws/spi/Provider.html#createServiceDelegate-java.net.URL-javax.xml.namespace.QName-java.lang.Class-javax.xml.ws.WebServiceFeature...-">createServiceDelegate</a></span>(java.net.URL&nbsp;wsdlDocumentLocation,
                     javax.xml.namespace.QName&nbsp;serviceName,
                     java.lang.Class&lt;? extends <a href="../../../../javax/xml/ws/Service.html" title="class in javax.xml.ws">Service</a>&gt;&nbsp;serviceClass,
                     <a href="../../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</code>
<div class="block">Creates a service delegate object.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract <a href="../../../../javax/xml/ws/wsaddressing/W3CEndpointReference.html" title="class in javax.xml.ws.wsaddressing">W3CEndpointReference</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/ws/spi/Provider.html#createW3CEndpointReference-java.lang.String-javax.xml.namespace.QName-javax.xml.namespace.QName-java.util.List-java.lang.String-java.util.List-">createW3CEndpointReference</a></span>(java.lang.String&nbsp;address,
                          javax.xml.namespace.QName&nbsp;serviceName,
                          javax.xml.namespace.QName&nbsp;portName,
                          java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;metadata,
                          java.lang.String&nbsp;wsdlDocumentLocation,
                          java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;referenceParameters)</code>
<div class="block">Factory method to create a <code>W3CEndpointReference</code>.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/xml/ws/wsaddressing/W3CEndpointReference.html" title="class in javax.xml.ws.wsaddressing">W3CEndpointReference</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/ws/spi/Provider.html#createW3CEndpointReference-java.lang.String-javax.xml.namespace.QName-javax.xml.namespace.QName-javax.xml.namespace.QName-java.util.List-java.lang.String-java.util.List-java.util.List-java.util.Map-">createW3CEndpointReference</a></span>(java.lang.String&nbsp;address,
                          javax.xml.namespace.QName&nbsp;interfaceName,
                          javax.xml.namespace.QName&nbsp;serviceName,
                          javax.xml.namespace.QName&nbsp;portName,
                          java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;metadata,
                          java.lang.String&nbsp;wsdlDocumentLocation,
                          java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;referenceParameters,
                          java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;elements,
                          java.util.Map&lt;javax.xml.namespace.QName,java.lang.String&gt;&nbsp;attributes)</code>
<div class="block">Factory method to create a <code>W3CEndpointReference</code>.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>abstract &lt;T&gt;&nbsp;T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/ws/spi/Provider.html#getPort-javax.xml.ws.EndpointReference-java.lang.Class-javax.xml.ws.WebServiceFeature...-">getPort</a></span>(<a href="../../../../javax/xml/ws/EndpointReference.html" title="class in javax.xml.ws">EndpointReference</a>&nbsp;endpointReference,
       java.lang.Class&lt;T&gt;&nbsp;serviceEndpointInterface,
       <a href="../../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</code>
<div class="block">The getPort method returns a proxy.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static <a href="../../../../javax/xml/ws/spi/Provider.html" title="class in javax.xml.ws.spi">Provider</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/xml/ws/spi/Provider.html#provider--">provider</a></span>()</code>
<div class="block">Creates a new provider object.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<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/spi/Provider.html#readEndpointReference-javax.xml.transform.Source-">readEndpointReference</a></span>(javax.xml.transform.Source&nbsp;eprInfoset)</code>
<div class="block">read an EndpointReference from the infoset contained in
 <code>eprInfoset</code>.</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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="Provider--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Provider</h4>
<pre>protected&nbsp;Provider()</pre>
<div class="block">Creates a new instance of Provider</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="provider--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>provider</h4>
<pre>public static&nbsp;<a href="../../../../javax/xml/ws/spi/Provider.html" title="class in javax.xml.ws.spi">Provider</a>&nbsp;provider()</pre>
<div class="block">Creates a new provider object.
 <p>
 The algorithm used to locate the provider subclass to use consists
 of the following steps:
 <ul>
  <li> Use the service-provider loading facilities, defined by the <code>ServiceLoader</code> class,
  to attempt to locate and load an implementation of <a href="../../../../javax/xml/ws/spi/Provider.html" title="class in javax.xml.ws.spi"><code>Provider</code></a> service using
  the default loading mechanism.
  <li>Use the configuration file "jaxws.properties". The file is in standard
  <code>Properties</code> format and typically located in the
  <code>conf</code> directory of the Java installation. It contains the fully qualified
  name of the implementation class with the key <code>javax.xml.ws.spi.Provider</code>.
  <li> If a system property with the name <code>javax.xml.ws.spi.Provider</code>
  is defined, then its value is used as the name of the implementation class.
  <li> Finally, a platform default implementation is used.
 </ul></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>provider object</dd>
</dl>
</li>
</ul>
<a name="createServiceDelegate-java.net.URL-javax.xml.namespace.QName-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createServiceDelegate</h4>
<pre>public abstract&nbsp;<a href="../../../../javax/xml/ws/spi/ServiceDelegate.html" title="class in javax.xml.ws.spi">ServiceDelegate</a>&nbsp;createServiceDelegate(java.net.URL&nbsp;wsdlDocumentLocation,
                                                      javax.xml.namespace.QName&nbsp;serviceName,
                                                      java.lang.Class&lt;? extends <a href="../../../../javax/xml/ws/Service.html" title="class in javax.xml.ws">Service</a>&gt;&nbsp;serviceClass)</pre>
<div class="block">Creates a service delegate object.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wsdlDocumentLocation</code> - A URL pointing to the WSDL document
        for the service, or <code>null</code> if there isn't one.</dd>
<dd><code>serviceName</code> - The qualified name of the service.</dd>
<dd><code>serviceClass</code> - The service class, which MUST be either
        <code>javax.xml.ws.Service</code> or a subclass thereof.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created service delegate.</dd>
</dl>
</li>
</ul>
<a name="createServiceDelegate-java.net.URL-javax.xml.namespace.QName-java.lang.Class-javax.xml.ws.WebServiceFeature...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createServiceDelegate</h4>
<pre>public&nbsp;<a href="../../../../javax/xml/ws/spi/ServiceDelegate.html" title="class in javax.xml.ws.spi">ServiceDelegate</a>&nbsp;createServiceDelegate(java.net.URL&nbsp;wsdlDocumentLocation,
                                             javax.xml.namespace.QName&nbsp;serviceName,
                                             java.lang.Class&lt;? extends <a href="../../../../javax/xml/ws/Service.html" title="class in javax.xml.ws">Service</a>&gt;&nbsp;serviceClass,
                                             <a href="../../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</pre>
<div class="block">Creates a service delegate object.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wsdlDocumentLocation</code> - A URL pointing to the WSDL document
        for the service, or <code>null</code> if there isn't one.</dd>
<dd><code>serviceName</code> - The qualified name of the service.</dd>
<dd><code>serviceClass</code> - The service class, which MUST be either
        <code>javax.xml.ws.Service</code> or a subclass thereof.</dd>
<dd><code>features</code> - Web Service features that must be configured on
        the service. If the provider doesn't understand a feature,
        it must throw a WebServiceException.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created service delegate.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</dd>
</dl>
</li>
</ul>
<a name="createEndpoint-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createEndpoint</h4>
<pre>public abstract&nbsp;<a href="../../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;createEndpoint(java.lang.String&nbsp;bindingId,
                                        java.lang.Object&nbsp;implementor)</pre>
<div class="block">Creates an endpoint object with the provided binding and implementation
 object.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bindingId</code> - A URI specifying the desired binding (e.g. SOAP/HTTP)</dd>
<dd><code>implementor</code> - A service implementation object to which
        incoming requests will be dispatched. The corresponding
        class MUST be annotated with all the necessary Web service
        annotations.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created endpoint.</dd>
</dl>
</li>
</ul>
<a name="createAndPublishEndpoint-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createAndPublishEndpoint</h4>
<pre>public abstract&nbsp;<a href="../../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;createAndPublishEndpoint(java.lang.String&nbsp;address,
                                                  java.lang.Object&nbsp;implementor)</pre>
<div class="block">Creates and publishes an endpoint object with the specified
 address and implementation object.</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> - A service implementation object to which
        incoming requests will be dispatched. The corresponding
        class MUST be annotated with all the necessary Web service
        annotations.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly created endpoint.</dd>
</dl>
</li>
</ul>
<a name="readEndpointReference-javax.xml.transform.Source-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readEndpointReference</h4>
<pre>public abstract&nbsp;<a href="../../../../javax/xml/ws/EndpointReference.html" title="class in javax.xml.ws">EndpointReference</a>&nbsp;readEndpointReference(javax.xml.transform.Source&nbsp;eprInfoset)</pre>
<div class="block">read an EndpointReference from the infoset contained in
 <code>eprInfoset</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>eprInfoset</code> - infoset for EndpointReference</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>EndpointReference</code> unmarshalled from
 <code>eprInfoset</code>.  This method never returns <code>null</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 there is an error creating the
 <code>EndpointReference</code> from the specified <code>eprInfoset</code>.</dd>
<dd><code>java.lang.NullPointerException</code> - If the <code>null</code>
 <code>eprInfoset</code> value is given.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, JAX-WS 2.1</dd>
</dl>
</li>
</ul>
<a name="getPort-javax.xml.ws.EndpointReference-java.lang.Class-javax.xml.ws.WebServiceFeature...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPort</h4>
<pre>public abstract&nbsp;&lt;T&gt;&nbsp;T&nbsp;getPort(<a href="../../../../javax/xml/ws/EndpointReference.html" title="class in javax.xml.ws">EndpointReference</a>&nbsp;endpointReference,
                              java.lang.Class&lt;T&gt;&nbsp;serviceEndpointInterface,
                              <a href="../../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</pre>
<div class="block">The getPort method returns a proxy.  If there
 are any reference parameters in the
 <code>endpointReference</code>, then those reference
 parameters MUST appear as SOAP headers, indicating them to be
 reference parameters, on all messages sent to the endpoint.
 The parameter  <code>serviceEndpointInterface</code> specifies
 the service endpoint interface that is supported by the
 returned proxy.
 The parameter <code>endpointReference</code> specifies the
 endpoint that will be invoked by the returned proxy.
 In the implementation of this method, the JAX-WS
 runtime system takes the responsibility of selecting a protocol
 binding (and a port) and configuring the proxy accordingly from
 the WSDL metadata of the
 <code>serviceEndpointInterface</code> and the <code>EndpointReference</code>.
 For this method
 to successfully return a proxy, WSDL metadata MUST be available and the
 <code>endpointReference</code> MUST contain an implementation understood
 <code>serviceName</code> metadata.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Service endpoint interface</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>endpointReference</code> - the EndpointReference that will
 be invoked by the returned proxy.</dd>
<dd><code>serviceEndpointInterface</code> - Service endpoint interface</dd>
<dd><code>features</code> - A list of WebServiceFeatures to configure on the
                proxy.  Supported features not in the <code>features
                </code> parameter will have their default values.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Object Proxy instance that supports the
                  specified service endpoint interface</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> - <UL>
                  <LI>If there is an error during creation
                      of the proxy
                  <LI>If there is any missing WSDL metadata
                      as required by this method}
                  <LI>If this
                      <code>endpointReference</code>
                      is illegal
                  <LI>If an illegal
                      <code>serviceEndpointInterface</code>
                      is specified
                  <LI>If a feature is enabled that is not compatible with
                      this port or is unsupported.
                   </UL></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/WebServiceFeature.html" title="class in javax.xml.ws"><code>WebServiceFeature</code></a></dd>
</dl>
</li>
</ul>
<a name="createW3CEndpointReference-java.lang.String-javax.xml.namespace.QName-javax.xml.namespace.QName-java.util.List-java.lang.String-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createW3CEndpointReference</h4>
<pre>public abstract&nbsp;<a href="../../../../javax/xml/ws/wsaddressing/W3CEndpointReference.html" title="class in javax.xml.ws.wsaddressing">W3CEndpointReference</a>&nbsp;createW3CEndpointReference(java.lang.String&nbsp;address,
                                                                javax.xml.namespace.QName&nbsp;serviceName,
                                                                javax.xml.namespace.QName&nbsp;portName,
                                                                java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;metadata,
                                                                java.lang.String&nbsp;wsdlDocumentLocation,
                                                                java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;referenceParameters)</pre>
<div class="block">Factory method to create a <code>W3CEndpointReference</code>.

 <p>
 This method can be used to create a <code>W3CEndpointReference</code>
 for any endpoint by specifying the <code>address</code> property along
 with any other desired properties.  This method
 can also be used to create a <code>W3CEndpointReference</code> for
 an endpoint that is published by the same Java EE application.
 To do so the <code>address</code> property can be provided or this
 method can automatically determine the <code>address</code> of
 an endpoint that is published by the same Java EE application and is
 identified by the <code>serviceName</code> and
 <code>portName</code> properties.  If the <code>address</code> is
 <code>null</code> and the <code>serviceName</code> and
 <code>portName</code> do not identify an endpoint published by the
 same Java EE application, a
 <code>javax.lang.IllegalStateException</code> MUST be thrown.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>address</code> - Specifies the address of the target endpoint</dd>
<dd><code>serviceName</code> - Qualified name of the service in the WSDL.</dd>
<dd><code>portName</code> - Qualified name of the endpoint in the WSDL.</dd>
<dd><code>metadata</code> - A list of elements that should be added to the
 <code>W3CEndpointReference</code> instances <code>wsa:metadata</code>
 element.</dd>
<dd><code>wsdlDocumentLocation</code> - URL for the WSDL document location for
 the service.</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>the <code>W3CEndpointReference</code> created from
          <code>serviceName</code>, <code>portName</code>,
          <code>metadata</code>, <code>wsdlDocumentLocation</code>
          and <code>referenceParameters</code>. This method
          never returns <code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - <ul>
        <li>If the <code>address</code>, <code>serviceName</code> and
            <code>portName</code> are all <code>null</code>.
        <li>If the <code>serviceName</code> service is <code>null</code> and the
            <code>portName</code> is NOT <code>null</code>.
        <li>If the <code>address</code> property is <code>null</code> and
            the <code>serviceName</code> and <code>portName</code> do not
            specify a valid endpoint published by the same Java EE
            application.
        <li>If the <code>serviceName</code>is NOT <code>null</code>
             and is not present in the specified WSDL.
        <li>If the <code>portName</code> port is not <code>null</code> and it
             is not present in <code>serviceName</code> service in the WSDL.
        <li>If the <code>wsdlDocumentLocation</code> is NOT <code>null</code>
            and does not represent a valid WSDL.
     </ul></dd>
<dd><code><a href="../../../../javax/xml/ws/WebServiceException.html" title="class in javax.xml.ws">WebServiceException</a></code> - If an error occurs while creating the
                             <code>W3CEndpointReference</code>.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, JAX-WS 2.1</dd>
</dl>
</li>
</ul>
<a name="createW3CEndpointReference-java.lang.String-javax.xml.namespace.QName-javax.xml.namespace.QName-javax.xml.namespace.QName-java.util.List-java.lang.String-java.util.List-java.util.List-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createW3CEndpointReference</h4>
<pre>public&nbsp;<a href="../../../../javax/xml/ws/wsaddressing/W3CEndpointReference.html" title="class in javax.xml.ws.wsaddressing">W3CEndpointReference</a>&nbsp;createW3CEndpointReference(java.lang.String&nbsp;address,
                                                       javax.xml.namespace.QName&nbsp;interfaceName,
                                                       javax.xml.namespace.QName&nbsp;serviceName,
                                                       javax.xml.namespace.QName&nbsp;portName,
                                                       java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;metadata,
                                                       java.lang.String&nbsp;wsdlDocumentLocation,
                                                       java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;referenceParameters,
                                                       java.util.List&lt;org.w3c.dom.Element&gt;&nbsp;elements,
                                                       java.util.Map&lt;javax.xml.namespace.QName,java.lang.String&gt;&nbsp;attributes)</pre>
<div class="block">Factory method to create a <code>W3CEndpointReference</code>.
 Using this method, a <code>W3CEndpointReference</code> instance
 can be created with extension elements, and attributes.
 <code>Provider</code> implementations must override the default
 implementation.

 <p>
 This method can be used to create a <code>W3CEndpointReference</code>
 for any endpoint by specifying the <code>address</code> property along
 with any other desired properties.  This method
 can also be used to create a <code>W3CEndpointReference</code> for
 an endpoint that is published by the same Java EE application.
 To do so the <code>address</code> property can be provided or this
 method can automatically determine the <code>address</code> of
 an endpoint that is published by the same Java EE application and is
 identified by the <code>serviceName</code> and
 <code>portName</code> propeties.  If the <code>address</code> is
 <code>null</code> and the <code>serviceName</code> and
 <code>portName</code> do not identify an endpoint published by the
 same Java EE application, a
 <code>javax.lang.IllegalStateException</code> MUST be thrown.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>address</code> - Specifies the address of the target endpoint</dd>
<dd><code>interfaceName</code> - the <code>wsam:InterfaceName</code> element in the
 <code>wsa:Metadata</code> element.</dd>
<dd><code>serviceName</code> - Qualified name of the service in the WSDL.</dd>
<dd><code>portName</code> - Qualified name of the endpoint in the WSDL.</dd>
<dd><code>metadata</code> - A list of elements that should be added to the
 <code>W3CEndpointReference</code> instances <code>wsa:metadata</code>
 element.</dd>
<dd><code>wsdlDocumentLocation</code> - URL for the WSDL document location for
 the service.</dd>
<dd><code>referenceParameters</code> - Reference parameters to be associated
 with the returned <code>EndpointReference</code> instance.</dd>
<dd><code>elements</code> - extension elements to be associated
 with the returned <code>EndpointReference</code> instance.</dd>
<dd><code>attributes</code> - extension attributes to be associated
 with the returned <code>EndpointReference</code> instance.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>W3CEndpointReference</code> created from
          <code>serviceName</code>, <code>portName</code>,
          <code>metadata</code>, <code>wsdlDocumentLocation</code>
          and <code>referenceParameters</code>. This method
          never returns <code>null</code>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - <ul>
        <li>If the <code>address</code>, <code>serviceName</code> and
            <code>portName</code> are all <code>null</code>.
        <li>If the <code>serviceName</code> service is <code>null</code> and the
            <code>portName</code> is NOT <code>null</code>.
        <li>If the <code>address</code> property is <code>null</code> and
            the <code>serviceName</code> and <code>portName</code> do not
            specify a valid endpoint published by the same Java EE
            application.
        <li>If the <code>serviceName</code>is NOT <code>null</code>
             and is not present in the specified WSDL.
        <li>If the <code>portName</code> port is not <code>null</code> and it
             is not present in <code>serviceName</code> service in the WSDL.
        <li>If the <code>wsdlDocumentLocation</code> is NOT <code>null</code>
            and does not represent a valid WSDL.
        <li>If the <code>wsdlDocumentLocation</code> is NOT <code>null</code> but
            wsdli:wsdlLocation's namespace name cannot be got from the available
            metadata.
     </ul></dd>
<dd><code><a href="../../../../javax/xml/ws/WebServiceException.html" title="class in javax.xml.ws">WebServiceException</a></code> - If an error occurs while creating the
                             <code>W3CEndpointReference</code>.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</dd>
</dl>
</li>
</ul>
<a name="createAndPublishEndpoint-java.lang.String-java.lang.Object-javax.xml.ws.WebServiceFeature...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createAndPublishEndpoint</h4>
<pre>public&nbsp;<a href="../../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;createAndPublishEndpoint(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 object with the specified
 address, implementation object and web service features.
 <code>Provider</code> implementations must override the
 default implementation.</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> - A service implementation object to which
        incoming requests will be dispatched. The corresponding
        class MUST be annotated with all the necessary Web service
        annotations.</dd>
<dd><code>features</code> - A list of WebServiceFeatures 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="createEndpoint-java.lang.String-java.lang.Object-javax.xml.ws.WebServiceFeature...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createEndpoint</h4>
<pre>public&nbsp;<a href="../../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;createEndpoint(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 object with the provided binding, implementation
 object and web service features. <code>Provider</code> implementations
 must override the default implementation.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bindingId</code> - A URI specifying the desired binding (e.g. SOAP/HTTP)</dd>
<dd><code>implementor</code> - A service implementation object to which
        incoming requests will be dispatched. The corresponding
        class MUST be annotated with all the necessary Web service
        annotations.</dd>
<dd><code>features</code> - A list of WebServiceFeatures 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="createEndpoint-java.lang.String-java.lang.Class-javax.xml.ws.spi.Invoker-javax.xml.ws.WebServiceFeature...-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>createEndpoint</h4>
<pre>public&nbsp;<a href="../../../../javax/xml/ws/Endpoint.html" title="class in javax.xml.ws">Endpoint</a>&nbsp;createEndpoint(java.lang.String&nbsp;bindingId,
                               java.lang.Class&lt;?&gt;&nbsp;implementorClass,
                               <a href="../../../../javax/xml/ws/spi/Invoker.html" title="class in javax.xml.ws.spi">Invoker</a>&nbsp;invoker,
                               <a href="../../../../javax/xml/ws/WebServiceFeature.html" title="class in javax.xml.ws">WebServiceFeature</a>...&nbsp;features)</pre>
<div class="block">Creates an endpoint object with the provided binding, implementation
 class, invoker and web service features. Containers typically use
 this to create Endpoint objects. <code>Provider</code>
 implementations must override the default implementation.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bindingId</code> - A URI specifying the desired binding (e.g. SOAP/HTTP).
        Can be null.</dd>
<dd><code>implementorClass</code> - A service implementation class that
        MUST be annotated with all the necessary Web service
        annotations.</dd>
<dd><code>invoker</code> - that does the actual invocation on the service instance.</dd>
<dd><code>features</code> - A list of WebServiceFeatures 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>
</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/spi/Invoker.html" title="class in javax.xml.ws.spi"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../javax/xml/ws/spi/ServiceDelegate.html" title="class in javax.xml.ws.spi"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/xml/ws/spi/Provider.html" target="_top">Frames</a></li>
<li><a href="Provider.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><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>Field&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>
