Vic*_*tor 1 binding stub jax-ws
在编写JAXWS客户端时,这是我过去使用的:
// CALL SERVICE
EPaymentsService bPayService = new EPaymentsService();
ServiceInterface stub = bPayService.getPort();
BindingProvider bp = (BindingProvider) stub;
Map<String, Object> rc = bp.getRequestContext();
String endPointUrl = propFile.getString(Constants.END_POINT_URL);
rc.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endPointUrl);
// RESPONSE
ResponseMessage resMessage = stub.sendMessage(reqMessage);
Run Code Online (Sandbox Code Playgroud)
在我的代码中,ServiceInterface不会扩展BindingProvider.So为什么我们在转换时不会出错
BindingProvider bp = (BindingProvider) stub;
Run Code Online (Sandbox Code Playgroud)
BindingProvider bp = (BindingProvider) stub;
Run Code Online (Sandbox Code Playgroud)
这是一个缩小的参考转换.根据Narrowing引用转换的规则之一,K可以将接口类型分配给非参数化的接口类型J,前提K是不是子类型J(如果K是子类型,则不需要显式转换J) .
J j = (J) K;
Run Code Online (Sandbox Code Playgroud)
如果转换失败,则在运行时抛出ClassCastException.
InputStream in = System.in;
Runnable r = (Runnable) in;
Run Code Online (Sandbox Code Playgroud)
上面的代码编译,因为这两个InputStream和Runnable的非参数的接口,但会导致ClassCastException在运行时.
从构建ServiceInterface到BindingProvider工作因为getPort返回实现WSBindingProvider接口的动态代理类,而后者又扩展了BindingProvider接口.
| 归档时间: |
|
| 查看次数: |
7357 次 |
| 最近记录: |