WSDL 下载好了,Java 类也生成了,但第一次 SOAP 调用依然出不了网络。生成器使用的代理选项属于生成器自身的运行过程。

Oracle JDK 8 的 wsimport 参考文档为这个工具有一个 HTTP 代理选项。它不是写进生成出来的服务类里的可移植指令。之后运行的应用可能用另一个 JVM、另一个账号和另一套 JAX-WS 实现。

先弄清楚是哪一步请求失败

阶段需要检查的进程或组件
从 WSDL 与 import 生成类构建工具或 wsimport 调用
构造服务时读取 WSDL应用的 WSDL 位置与运行时客户端
调用 SOAP 端点选定的运行时传输层及其代理配置

中间这一步最容易被忽略。生成的服务可能仍然指向远程 WSDL。如果运行时在构造阶段就要取它,那么事后再配端口,对先前那次下载已经太晚。把需要的描述打包成应用资源,在实现支持的前提下可以去掉这层获取依赖。

某个实现里名为 ClientProxyFeature 的类并不会自动成为每个 JAX-WS 提供方的一部分。

代理凭据要和 SOAP 服务凭据分开。WSDL 下载成功甚至可以是匿名完成的,而操作端点却要求登录,反过来也一样。

记录失败的 URL 以及构造或调用停下的位置。这通常就能指出缺失的设置该放在哪里,不必再用一次生成相同类的方式试错。

相关文章