<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>WebServiceRef</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="WebServiceRef";
        }
    }
    catch(err) {
    }
//-->
</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/WebServiceProvider.html" title="annotation in javax.xml.ws"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/xml/ws/WebServiceRefs.html" title="annotation 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/WebServiceRef.html" target="_top">Frames</a></li>
<li><a href="WebServiceRef.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>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</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="Annotation Type WebServiceRef" class="title">Annotation Type WebServiceRef</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@Target(value={TYPE,METHOD,FIELD})
 @Retention(value=RUNTIME)
 @Documented
 @Repeatable(value=<a href="../../../javax/xml/ws/WebServiceRefs.html" title="annotation in javax.xml.ws">WebServiceRefs.class</a>)
public @interface <span class="memberNameLabel">WebServiceRef</span></pre>
<div class="block">The <code>WebServiceRef</code> annotation is used to
 define a reference to a web service and
 (optionally) an injection target for it.
 It can be used to inject both service and proxy
 instances. These injected references are not thread safe.
 If the references are accessed by multiple threads,
 usual synchronization techinques can be used to
 support multiple threads.

 <p>
 Web service references are resources in the Java EE 5 sense.
 The annotations (for example, <a href="../../../javax/xml/ws/soap/Addressing.html" title="annotation in javax.xml.ws.soap"><code>Addressing</code></a>) annotated with
 meta-annotation <a href="../../../javax/xml/ws/spi/WebServiceFeatureAnnotation.html" title="annotation in javax.xml.ws.spi"><code>WebServiceFeatureAnnotation</code></a>
 can be used in conjunction with <code>WebServiceRef</code>.
 The created reference MUST be configured with annotation's web service
 feature.

 <p>
 For example, in the code below, the injected
 <code>StockQuoteProvider</code> proxy MUST
 have WS-Addressing enabled as specifed by the
 <a href="../../../javax/xml/ws/soap/Addressing.html" title="annotation in javax.xml.ws.soap"><code>Addressing</code></a>
 annotation.

 <pre><code>
    public class MyClient {
        @Addressing
        @WebServiceRef(StockQuoteService.class)
       private StockQuoteProvider stockQuoteProvider;
       ...
    }
 </code></pre>

 <p>
 If a JAX-WS implementation encounters an unsupported or unrecognized
 annotation annotated with the <code>WebServiceFeatureAnnotation</code>
 that is specified with <code>WebServiceRef</code>, an ERROR MUST be given.</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/annotation/Resource.html" title="annotation in javax.annotation"><code>Resource</code></a>, 
<a href="../../../javax/xml/ws/spi/WebServiceFeatureAnnotation.html" title="annotation in javax.xml.ws.spi"><code>WebServiceFeatureAnnotation</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.optional.element.summary">
<!--   -->
</a>
<h3>Optional Element Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation">
<caption><span>Optional Elements</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Optional Element and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/WebServiceRef.html#lookup--">lookup</a></span></code>
<div class="block">A portable JNDI lookup name that resolves to the target
 web service reference.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/WebServiceRef.html#mappedName--">mappedName</a></span></code>
<div class="block">A product specific name that this resource should be mapped to.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/WebServiceRef.html#name--">name</a></span></code>
<div class="block">The JNDI name of the resource.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.Class&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/WebServiceRef.html#type--">type</a></span></code>
<div class="block">The Java type of the resource.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.Class&lt;? extends <a href="../../../javax/xml/ws/Service.html" title="class in javax.xml.ws">Service</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/WebServiceRef.html#value--">value</a></span></code>
<div class="block">The service class, always a type extending
 <code>javax.xml.ws.Service</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/ws/WebServiceRef.html#wsdlLocation--">wsdlLocation</a></span></code>
<div class="block">A URL pointing to the WSDL document for the web service.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.element.detail">
<!--   -->
</a>
<h3>Element Detail</h3>
<a name="name--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>name</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;name</pre>
<div class="block">The JNDI name of the resource.  For field annotations,
 the default is the field name.  For method annotations,
 the default is the JavaBeans property name corresponding
 to the method.  For class annotations, there is no default
 and this MUST be specified.

 The JNDI name can be absolute(with any logical namespace) or relative
 to JNDI <code>java:comp/env</code> namespace.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>absolute or relative JNDI name</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="type--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>type</h4>
<pre>public abstract&nbsp;java.lang.Class&lt;?&gt;&nbsp;type</pre>
<div class="block">The Java type of the resource.  For field annotations,
 the default is the type of the field.  For method annotations,
 the default is the type of the JavaBeans property.
 For class annotations, there is no default and this MUST be
 specified.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>type of the resource</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>java.lang.Object.class</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="mappedName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mappedName</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;mappedName</pre>
<div class="block">A product specific name that this resource should be mapped to.
 The name of this resource, as defined by the <code>name</code>
 element or defaulted, is a name that is local to the application
 component using the resource.  (When a relative JNDI name
 is specified, then it's a name in the JNDI
 <code>java:comp/env</code> namespace.)  Many application servers
 provide a way to map these local names to names of resources
 known to the application server.  This mapped name is often a
 <i>global</i> JNDI name, but may be a name of any form.
 <p>
 Application servers are not required to support any particular
 form or type of mapped name, nor the ability to use mapped names.
 The mapped name is product-dependent and often installation-dependent.
 No use of a mapped name is portable.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>product specific resource name</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="value--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public abstract&nbsp;java.lang.Class&lt;? extends <a href="../../../javax/xml/ws/Service.html" title="class in javax.xml.ws">Service</a>&gt;&nbsp;value</pre>
<div class="block">The service class, always a type extending
 <code>javax.xml.ws.Service</code>. This element MUST be specified
 whenever the type of the reference is a service endpoint interface.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the service class extending <code>javax.xml.ws.Service</code></dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>javax.xml.ws.Service.class</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="wsdlLocation--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wsdlLocation</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;wsdlLocation</pre>
<div class="block">A URL pointing to the WSDL document for the web service.
 If not specified, the WSDL location specified by annotations
 on the resource type is used instead.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a URL pointing to the WSDL document</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="lookup--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>lookup</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;lookup</pre>
<div class="block">A portable JNDI lookup name that resolves to the target
 web service reference.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>portable JNDI lookup name</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.7, JAX-WS 2.2</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>""</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/WebServiceProvider.html" title="annotation in javax.xml.ws"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/xml/ws/WebServiceRefs.html" title="annotation 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/WebServiceRef.html" target="_top">Frames</a></li>
<li><a href="WebServiceRef.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>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
