本文章不借鉴任何其他文章里的资料,仅为源码的直接解读和理解
这章接着写Dispatch
Dispatch继承了BindingProvider类
BindingProvider类的直接描述:“BindingProvider接口提供‘绑定协议’(protocol binding)的访问,上下文对象的请求,响应消息的处理”
结合上一篇文章,隐隐可以看出binding不是绑定的意思,应该把它当做一个对象!我们不应该但从字面意思去片面理解,可在往后的解读当中深入理解它。
以下这些都是BindingProvider内置的常量
public static final String USERNAME_PROPERTY =
"javax.xml.ws.security.auth.username";
public static final String PASSWORD_PROPERTY =
"javax.xml.ws.security.auth.password";
public static final String ENDPOINT_ADDRESS_PROPERTY =
"javax.xml.ws.service.endpoint.address";
public static final String SESSION_MAINTAIN_PROPERTY =
"javax.xml.ws.session.maintain";
public static final String SOAPACTION_USE_PROPERTY =
"javax.xml.ws.soap.http.soapaction.use";
public static final String SOAPACTION_URI_PROPERTY =
"javax.xml.ws.soap.http.soapaction.uri";
另外说一下,接口中可以有成员变量,但是只能是public static final类型,同时也因此必须初始化。
以下是其方法和该方法的描述:
Map<String, Object> getRequestContext();
“这是用于处理request消息的上下文。”
返回值是个Map,也就是一个context(所谓上下文)。它的作用 是用来初始化 request的内部信息的context 的。
Map<String, Object> getResponseContext();
“The context that resulted from processing the latest response messages.”
我的理解是:这个Map(上下文)得自最新处理的响应消息。至于是来自response,还是用来处理response,目前还不确定。但是该context是跟最新的response有关的。
Binding getBinding();
“The Binding for this binding provider.”
因为BindingProvider是个接口,所以内容来自于其实现类,该接口规定实现类必须返回这个Binding接口(这个Binding还是个接口)或者该接口的实现类。也就是说,要实现必须要实现对Binding的提供,那么我们可以通过这点去了解Binding的实现类都有哪些,都是怎么做的
public <T extends EndpointReference> T getEndpointReference(Class<T> clazz);
“返回与BindingProvider的实例相关的EndpointReference。返回的该实例将是clazz类型”
参数clazz:指定类型的EndpointReference必须被返回
返回:EndpointReference 的目标端点与BindingProvider 的实例相关。必须是clazz类型的
抛出:WebServiceException 如果clazz类不支持该实现(implementation)。
抛出:java.lang.UnsupportedOperationException 如果BindingProvider使用了XML/HTTP binding。
另外,EndpointReference 是个抽象类
这个 BindingProvider 接口还是十分迷糊的。重点就在binding这个接口的作用上