0

我想使用我使用 JAX-WS wsimport 根据提供的 WSDL 生成的 Java 客户端访问第三方网络服务(我使用的是 Maven 插件)。

有一段时间我无法检索到有用的响应,不是在 Java 客户端中,也不是在 SoapUI 中,直到我发现我必须在请求上启用 WS-A。在 SoapUI 中,这现在会产生预期的响应,但是我必须做什么才能在 Java 客户端中也“启用”WS-A?我是否可能必须更改 WSDL,或向 wsimport 添加参数?

我在网上找到了一些关于 WS-A 的文档,但到目前为止还没有找到答案。

提前致谢。

4

1 回答 1

1

您可以按照您提到的那样修改 WSDL,以指示需要寻址(尽管我会要求第 3 方这样做,如果他们的端点确实需要它..)。请参见规范中的示例 3-1 和 3-2 。您可能需要重新生成您的客户端(wsimport);我不确定。

如果您想以编程方式完成此操作,您可以尝试获取您的端口并传递 a javax.xml.ws.soap.AddressingFeature,如下所示:

import javax.xml.ws.soap.AddressingFeature;
...
//however you are obtaining your service - 
//perhaps @WebServiceRef or instantiation with WSDL location, etc
HelloWorldService service = ... 
...
//true,true means enable Addressing, and indicate it is required
HelloWorld port = service.getHelloWorldPort(new AddressingFeature(true, true));
... call operations/methods on HelloWorld port

AddressingFeature的javadoc也可能会产生更多的见解。

于 2015-02-22T18:53:45.877 回答