Ana*_*001 5 java soap web-services
我有一个用 JAX-WS 编写的 SOAP 客户端。我的代码是这样的:
UpdateSub port = service.getUpdateSub();
port.soapMethod(parameter);
Run Code Online (Sandbox Code Playgroud)
我想要针对与 SOAP 服务器的连接被拒绝或超时的情况提供特定的代码。我测试了这些情况,发现soapMethod 抛出ClientTransportException。ClientTransportException 来自 sun 包,因此如果我导入它以捕获它,编译器会抛出此错误:
包 com.sun.xml.internal.ws.client 不存在
我按照Karmakaze 建议的方式解决了这个问题
据我了解,这只是一种解决方法,Oracle 不建议这样做。那么,在没有编译器参数的情况下捕获此类异常的正确方法是什么?
从我的角度来看,ClientTransportException 并不是为了被捕获而设计的,应该使用 WebServiceException 来代替,但是这样 HTTP 状态代码就不再可用了。
我研究了如何处理由带有 HTTP 401 状态代码的服务器应答的无效身份验证的 SOAP 1.2 错误。根据SOAP 1.2 Adjuncts,这样的答案是完全有效的。
主要问题来自HttpTransportPipe::checkStatusCode,它阻止 400 和 500 以外的状态代码被处理为 SOAP 错误,导致 ClientTransportException,我认为只有在不支持的状态代码缺少有效负载时才应该抛出它,我的意思是其他代码比标准表 17 中列出的内容要多。请参阅 tracker 中的相关提交评论和原始问题。
| 归档时间: |
|
| 查看次数: |
3326 次 |
| 最近记录: |