@Target(value={TYPE,METHOD,FIELD}) @Retention(value=RUNTIME) @Documented public @interface WebServiceRef
WebServiceRef 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.
Web service references are resources in the Java EE 5 sense. The annotations (for example, Addressing) annotated with meta-annotation WebServiceFeatureAnnotation can be used in conjunction with WebServiceRef. The created reference MUST be configured with annotation's web service feature.
For example, in the code below, the injected StockQuoteProvider proxy MUST have WS-Addressing enabled as specifed by the Addressing annotation.
public class MyClient {
@Addressing
@WebServiceRef(StockQuoteService.class)
private StockQuoteProvider stockQuoteProvider;
...
}
If a JAX-WS implementation encounters an unsupported or unrecognized annotation annotated with the WebServiceFeatureAnnotation that is specified with WebServiceRef, an ERROR MUST be given.
Resource,
WebServiceFeatureAnnotation
| Modifier and Type | Optional Element and Description |
|---|---|
String |
lookup
A portable JNDI lookup name that resolves to the target web service reference.
|
String |
mappedName
A product specific name that this resource should be mapped to.
|
String |
name
The JNDI name of the resource.
|
Class |
type
The Java type of the resource.
|
Class |
value
The service class, alwiays a type extending
javax.xml.ws.Service.
|
String |
wsdlLocation
A URL pointing to the WSDL document for the web service.
|
public abstract Stringname
java:comp/env namespace.
public abstract Class<?> type
public abstract StringmappedName
name 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
java:comp/env 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
global JNDI name, but may be a name of any form.
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.
public abstract StringwsdlLocation
public abstract Stringlookup