public class Service extends Object
Service
对象提供Web服务的客户端视图。
Service
作为以下工厂:
Dispatch
用于远程操作的动态面向消息的调用。 服务上可用的端口可以使用getPorts
方法getPorts
。 或者,您可以将服务端点接口传递到一元的getPort
方法,并让运行时选择兼容的端口。
用于通过创建的所有对象处理程序链Service
可以通过来设定HandlerResolver
。
可以在服务上设置Executor
,以便更好地控制用于分派异步回调的线程。 例如,通过创建ThreadPoolExecutor
并将其注册到服务,可以启用具有某些参数的线程池。
Provider
, HandlerResolver
, Executor
Modifier and Type | Class and Description |
---|---|
static class |
Service.Mode
动态客户端或服务的方向。
|
Modifier | Constructor and Description |
---|---|
protected |
Service(URL wsdlDocumentLocation, QName serviceName) |
protected |
Service(URL wsdlDocumentLocation, QName serviceName, WebServiceFeature... features) |
Modifier and Type | Method and Description |
---|---|
void |
addPort(QName portName, String bindingId, String endpointAddress)
为服务创建一个新的端口。
|
static Service |
create(QName serviceName)
创建一个
Service 实例。
|
static Service |
create(QName serviceName, WebServiceFeature... features)
创建一个
Service 实例。
|
static Service |
create(URL wsdlDocumentLocation, QName serviceName)
创建一个
Service 实例。
|
static Service |
create(URL wsdlDocumentLocation, QName serviceName, WebServiceFeature... features)
创建一个
Service 实例。
|
<T> Dispatch<T> |
createDispatch(EndpointReference endpointReference, 类<T> type, Service.Mode mode, WebServiceFeature... features)
创建一个用于客户选择的对象的
Dispatch 实例。
|
Dispatch<Object> |
createDispatch(EndpointReference endpointReference, JAXBContext context, Service.Mode mode, WebServiceFeature... features)
创建一个用于JAXB生成的对象的
Dispatch 实例。
|
<T> Dispatch<T> |
createDispatch(QName portName, 类<T> type, Service.Mode mode)
创建一个
Dispatch 实例,供客户选择的对象使用。
|
<T> Dispatch<T> |
createDispatch(QName portName, 类<T> type, Service.Mode mode, WebServiceFeature... features)
创建一个
Dispatch 实例,供客户选择的对象使用。
|
Dispatch<Object> |
createDispatch(QName portName, JAXBContext context, Service.Mode mode)
创建一个用于JAXB生成的对象的
Dispatch 实例。
|
Dispatch<Object> |
createDispatch(QName portName, JAXBContext context, Service.Mode mode, WebServiceFeature... features)
创建一个用于JAXB生成的对象的
Dispatch 实例。
|
Executor |
getExecutor()
返回此
Service 实例的执行程序。
|
HandlerResolver |
getHandlerResolver()
返回配置的处理程序解析器。
|
<T> T |
getPort(类<T> serviceEndpointInterface)
getPort 方法返回一个代理。
|
<T> T |
getPort(类<T> serviceEndpointInterface, WebServiceFeature... features)
getPort 方法返回代理。
|
<T> T |
getPort(EndpointReference endpointReference, 类<T> serviceEndpointInterface, WebServiceFeature... features)
getPort 方法返回一个代理。
|
<T> T |
getPort(QName portName, 类<T> serviceEndpointInterface)
getPort 方法返回一个代理。
|
<T> T |
getPort(QName portName, 类<T> serviceEndpointInterface, WebServiceFeature... features)
getPort 方法返回一个代理。
|
Iterator<QName> |
getPorts()
返回
Iterator ,用于
QName 服务分组的服务端点QName的列表
|
QName |
getServiceName()
获取此服务的名称。
|
URL |
getWSDLDocumentLocation()
获取此服务的WSDL文档的位置。
|
void |
setExecutor(Executor executor)
设置此
Service 实例的执行程序。
|
void |
setHandlerResolver(HandlerResolver handlerResolver)
设置
HandlerResolver 这个
Service 实例。
|
protected Service(URL wsdlDocumentLocation, QName serviceName, WebServiceFeature... features)
public <T> T getPort(QName portName, 类<T> serviceEndpointInterface)
getPort
方法返回一个代理。
服务客户端使用此代理来调用目标服务端点上的操作。
serviceEndpointInterface
指定创建的动态代理实例支持的服务端点接口。
portName
- WSDL服务描述中服务端点的合格名称。
serviceEndpointInterface
- 动态代理实例支持的服务端点接口。
WebServiceException
- 在以下情况下抛出此异常:
serviceEndpointInterface
或portName
指定。 Proxy
, InvocationHandler
public <T> T getPort(QName portName, 类<T> serviceEndpointInterface, WebServiceFeature... features)
getPort
方法返回代理。
服务客户端使用此代理来调用目标服务端点上的操作。
serviceEndpointInterface
指定创建的动态代理实例支持的服务端点接口。
portName
- WSDL服务描述中服务端点的合格名称。
serviceEndpointInterface
- 动态代理实例支持的服务端点接口。
features
- 要在代理上配置的WebServiceFeatures的列表。
支持的功能不是在features
参数将其默认值。
WebServiceException
- 在以下情况下抛出此异常:
serviceEndpointInterface
或portName
指定。 Proxy
, InvocationHandler
, WebServiceFeature
public <T> T getPort(类<T> serviceEndpointInterface)
getPort
方法返回代理。
参数serviceEndpointInterface
指定返回的代理支持的服务端点接口。
在实现该方法时,JAX-WS运行时系统负责选择协议绑定(和端口)并相应地配置代理。
返回的代理不应由客户机重新配置。
serviceEndpointInterface
- 服务端点接口。
WebServiceException
-
serviceEndpointInterface
指定。 public <T> T getPort(类<T> serviceEndpointInterface, WebServiceFeature... features)
getPort
方法返回代理。
参数serviceEndpointInterface
指定返回的代理支持的服务端点接口。
在实现该方法时,JAX-WS运行时系统负责选择协议绑定(和端口)并相应地配置代理。
返回的代理不应由客户机重新配置。
serviceEndpointInterface
- 服务端点接口。
features
- 要在代理上配置的WebServiceFeatures的列表。
支持的功能不是在features
参数将其默认值。
WebServiceException
-
serviceEndpointInterface
指定。 WebServiceFeature
public <T> T getPort(EndpointReference endpointReference, 类<T> serviceEndpointInterface, WebServiceFeature... features)
getPort
方法返回代理。
参数endpointReference endpointReference
将由返回的代理调用的端点。
如果有在任何参考参数endpointReference
,则这些参考参数必须显示为SOAP标头,指示它们是参照参数,对发送到端点的所有消息。
endpointReference's
地址必须用于端点上的调用。
参数serviceEndpointInterface
指定返回代理支持的服务端点接口。
在实现此方法时,JAX-WS运行时系统负责选择协议绑定(和端口),并从与该Service
实例相关联的WSDL或从Service
的元数据相应地endpointReference
。
如果此Service
实例具有WSDL,并且endpointReference
元数据也具有WSDL,则必须使用此实例的WSDL。
如果此Service
实例没有WSDL,并且endpointReference
确实有一个WSDL,则可以使用endpointReference
的WSDL。
返回的代理不应由客户机重新配置。
如果此Service
实例具有与WSDL中包含的信息匹配的已知代理端口,则返回该代理,否则抛出WebServiceException。
调用此方法具有与以下相同的行为
port = service.getPort(portName, serviceEndpointInterface);
其中portName
从的元数据检索endpointReference
或从serviceEndpointInterface
和与此相关的WSDL Service
实例。
endpointReference
- 将由返回的代理调用的目标服务端点的
EndpointReference
。
serviceEndpointInterface
- 服务端点接口。
features
- 要在代理上配置的WebServiceFeatures
的列表。
支持的功能不是在features
参数将其默认值。
WebServiceException
-
endpointReference
元数据与该Service
实例的serviceName
不匹配。 portName
不能从WSDL或提取endpointReference
元数据。 endpointReference
指定。 serviceEndpointInterface
指定。 public void addPort(QName portName, String bindingId, String endpointAddress)
Dispatch
实例。
portName
- 目标服务端点的合格名称。
bindingId
- 绑定的字符串标识符。
endpointAddress
- 作为URI的目标服务端点的地址。
WebServiceException
- 如果创建端口有任何错误。
SOAPBinding.SOAP11HTTP_BINDING
,
SOAPBinding.SOAP12HTTP_BINDING
,
HTTPBinding.HTTP_BINDING
public <T> Dispatch<T> createDispatch(QName portName, 类<T> type, Service.Mode mode)
Dispatch
实例,供客户选择的对象使用。
portName
- 目标服务端点的合格名称
type
- 用于消息或消息有效载荷的对象类。
实现都必须支持javax.xml.transform.Source
, javax.xml.soap.SOAPMessage
和javax.activation.DataSource
,这取决于所使用的绑定。
mode
- 控制创建的调度实例是消息还是有效负载,即客户端是否使用完整的协议消息或消息有效载荷。
例如,当使用SOAP协议时,此参数控制客户端是否使用SOAP消息或SOAP主体的内容。
当类型为SOAPMessage时,模式必须为MESSAGE。
WebServiceException
- 如果在创建
Dispatch
对象时有任何错误。
Source
, SOAPMessage
public <T> Dispatch<T> createDispatch(QName portName, 类<T> type, Service.Mode mode, WebServiceFeature... features)
Dispatch
实例,供客户选择的对象使用。
portName
- 目标服务端点的合格名称
type
- 用于消息或消息有效载荷的对象类。
执行需要支持javax.xml.transform.Source
和javax.xml.soap.SOAPMessage
。
mode
- 控制创建的调度实例是消息还是有效负载,即客户端是否使用完整的协议消息或消息有效载荷。
例如,当使用SOAP协议时,此参数控制客户端是否使用SOAP消息或SOAP主体的内容。
模式必须MESSAGE
当类型是SOAPMessage
。
features
- 要在代理上配置的WebServiceFeatures
的列表。
支持的功能不是在features
参数将其默认值。
WebServiceException
- 如果创建
Dispatch
对象时出现任何错误,或启用了与该端口不兼容或不受支持的功能。
Source
, SOAPMessage
, WebServiceFeature
public <T> Dispatch<T> createDispatch(EndpointReference endpointReference, 类<T> type, Service.Mode mode, WebServiceFeature... features)
Dispatch
实例,供客户选择的对象使用。
如果有在任何参考参数endpointReference
,则这些参考参数必须显示为SOAP标头,指示它们是参照参数,对发送到端点的所有消息。
endpointReference's
地址必须用于端点上的调用。
在实现此方法时,JAX-WS运行时系统负责选择协议绑定(和端口),并从与此Service
实例相关联的WSDL或从Service
的元数据相应地endpointReference
。
如果此Service
实例具有WSDL,并且endpointReference
在其元数据中也具有WSDL,则必须使用此实例的WSDL。
如果此Service
实例没有WSDL,并且endpointReference
确实有WSDL,则可以使用endpointReference
的WSDL。
一个实现必须能够检索portName
从endpointReference
元。
此方法的行为与调用相同
dispatch = service.createDispatch(portName, type, mode, features);
其中portName
从WSDL或检索EndpointReference
元数据。
endpointReference
-该
EndpointReference
用于将由返回调用的目标服务端点
Dispatch
对象。
type
- 用于消息或消息有效载荷的对象类。
执行需要支持javax.xml.transform.Source
和javax.xml.soap.SOAPMessage
。
mode
- 控制创建的调度实例是消息还是面向有效负载,即客户端是否使用完整的协议消息或消息有效载荷。
例如,当使用SOAP协议时,此参数控制客户端是否使用SOAP消息或SOAP主体的内容。
模式必须MESSAGE
当类型是SOAPMessage
。
features
- 要在代理上配置的WebServiceFeatures
数组。
支持的功能不是在features
参数将其默认值。
WebServiceException
-
endpointReference
元数据与该Service
实例相关portName
的WSDL的serviceName
或portName
不匹配。 portName
不能从EndpointReference
元数据确定。 Dispatch
对象。 Source
, SOAPMessage
, WebServiceFeature
public Dispatch<Object> createDispatch(QName portName, JAXBContext context, Service.Mode mode)
Dispatch
实例。
portName
- 目标服务端点的合格名称
context
- 用于编组和解组消息或消息有效载荷的JAXB上下文。
mode
- 控制创建的调度实例是消息还是有效负载,即客户端是否使用完整的协议消息或消息有效载荷。
例如,当使用SOAP协议时,此参数控制客户端是否使用SOAP消息或SOAP主体的内容。
WebServiceException
- 如果在创建
Dispatch
对象时有任何错误。
JAXBContext
public Dispatch<Object> createDispatch(QName portName, JAXBContext context, Service.Mode mode, WebServiceFeature... features)
Dispatch
实例。
portName
- 目标服务端点的合格名称
context
- 用于编组和解组消息或消息有效载荷的JAXB上下文。
mode
- 控制创建的调度实例是消息还是有效负载,即客户端是否使用完整的协议消息或消息有效负载。
例如,当使用SOAP协议时,此参数控制客户端是否使用SOAP消息或SOAP主体的内容。
features
- 要在代理上配置的WebServiceFeatures
的列表。
支持的功能不是在features
参数将其默认值。
WebServiceException
- 如果在创建
Dispatch
对象时出现任何错误,或启用了与该端口不兼容的功能或不支持的功能。
JAXBContext
, WebServiceFeature
public Dispatch<Object> createDispatch(EndpointReference endpointReference, JAXBContext context, Service.Mode mode, WebServiceFeature... features)
Dispatch
实例。
如果endpointReference中有endpointReference
,那么在发送到端点的所有消息上,这些引用参数必须显示为SOAP头,表示它们是参考参数。
endpointReference's
地址必须用于端点上的调用。
在实现此方法时,JAX-WS运行时系统负责选择协议绑定(和端口),并从与此Service
实例相关联的WSDL或从Service
的元数据相应地endpointReference
。
如果此Service
实例具有WSDL,并且endpointReference
在其元数据中也具有WSDL,则必须使用此实例的WSDL。
如果此Service
实例没有WSDL,并且endpointReference
确实有一个WSDL,则可以使用endpointReference
的WSDL。
一个实现必须能够检索portName
从endpointReference
元。
此方法与调用相同
dispatch = service.createDispatch(portName, context, mode, features);
其中portName
是从WSDL或endpointReference
元数据endpointReference
。
endpointReference
-该
EndpointReference
用于将由返回调用的目标服务端点
Dispatch
对象。
context
- 用于编组和解组消息或消息有效载荷的JAXB上下文。
mode
- 控制创建的调度实例是消息还是有效负载,即客户端是否使用完整的协议消息或消息有效载荷。
例如,当使用SOAP协议时,此参数控制客户端是否使用SOAP消息或SOAP主体的内容。
features
-数组WebServiceFeatures
配置上的代理。
支持的功能不是在features
参数将其默认值。
WebServiceException
-
endpointReference
元数据与与此Service
实例相关portName
的WSDL的serviceName
或portName
不匹配。 portName
不能从EndpointReference
元数据确定。 Dispatch
对象。 JAXBContext
, WebServiceFeature
public QName getServiceName()
public Iterator<QName> getPorts()
Iterator
的
QName
的服务端点列表
QName
服务分组
java.util.Iterator
,元素类型为
javax.xml.namespace.QName
。
WebServiceException
- 如果此Service类无法访问所需的WSDL元数据。
public URL getWSDLDocumentLocation()
public HandlerResolver getHandlerResolver()
HandlerResolver
被这个
Service
实例使用,或者
null
如果没有一个。
public void setHandlerResolver(HandlerResolver handlerResolver)
HandlerResolver
这个Service
实例。
处理程序解析器(如果存在)将为创建的每个代理或分派实例调用一次,并且解析器返回的处理程序链将在实例上设置。
handlerResolver
-该
HandlerResolver
用于所有随后创建的代理/调度对象。
HandlerResolver
public Executor getExecutor()
Service
实例的执行程序。
执行器用于需要回调的所有异步调用。
java.util.concurrent.Executor
。
Executor
public void setExecutor(Executor executor)
Service
实例的执行器。
执行器用于需要回调的所有异步调用。
executor
- 用于调用回调的
java.util.concurrent.Executor
。
SecurityException
- 如果实例不支持以安全原因设置执行程序(例如缺少必需的权限)。
Executor
public static Service create(URL wsdlDocumentLocation, QName serviceName)
Service
实例。
指定的WSDL文档位置和服务限定名必须唯一标识wsdl:service
元素。
wsdlDocumentLocation
-
URL
为服务的WSDL文档位置
serviceName
-
QName
为服务
WebServiceException
- 创建指定服务时是否有任何错误。
public static Service create(URL wsdlDocumentLocation, QName serviceName, WebServiceFeature... features)
Service
实例。
创建的实例配置了Web服务功能。
指定的WSDL文档位置和服务限定名称必须唯一标识wsdl:service
元素。
wsdlDocumentLocation
-
URL
,用于服务的WSDL文档位置
serviceName
-
QName
为服务
features
- 必须在服务上配置的Web Service功能。
如果提供程序不了解某项功能,则必须抛出WebServiceException。
WebServiceException
- 创建指定服务时是否有任何错误。
public static Service create(QName serviceName)
Service
实例。
serviceName
-
QName
为服务
WebServiceException
- 创建指定服务时是否有任何错误
public static Service create(QName serviceName, WebServiceFeature... features)
Service
实例。
创建的实例配置了Web服务功能。
serviceName
-
QName
为服务
features
- 必须在服务上配置的Web Service功能。
如果提供程序不了解某项功能,则必须抛出WebServiceException。
WebServiceException
- 创建指定服务时是否有任何错误