java - JAX-WS 为 IBM websphere、IBM Web 服务客户端添加寻址

标签 java web-services soap wsdl

我正在 websphere 上运行代码并使用soap 2.12-2.2?。 RAD 工具用于生成 IBM JAX-WS Web 服务客户端代码。我可以连接到有问题的服务器,但 Web 服务需要打开寻址。如果我使用http客户端代码和soap ui,我可以让这个请求工作,并且我看到特定的SOAP操作寻址 header 。但我找不到为 jax-ws 代码添加此内容的方法。我提到 websphere ibm 是因为我想知道这是否是该代码内部的错误。在幕后,该库是用于 jax-ws 的 org.apache.axis2。这是我尝试过的所有代码。

预期请求:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="http://schemas.schedulenow.com/paramedclients/services" xmlns:data="http://schemas.schedulenow.com/paramedclients/data" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
  <wsa:Action soap:mustUnderstand="1">http://sion</wsa:Action><wsa:To soap:mustUnderstand="1">...</wsa:To></soap:Header>
   <soap:Body>
      <ser:Initialize>

当我获取原始字符串并访问服务器时,它包含一个有效的请求。当我使用 jax-ws ibm cod.e 时,缺少“wsa:Action”。

WSDL 具有以下内容:

但由于某种原因,客户端不会添加所需的 header 。我尝试了以下方法。

            SSLSocketFactory sslFactory = GenerateSocketAndTrustManager.createSSLFactory();

            _desc.getDispatch().getRequestContext().put("com.ibm.ws.wsaddressingAndDependentsDisabled", false); 
            _desc.getDispatch().getRequestContext().put("com.ibm.ws.wsaddressingAndDependentsDisabled", false); 
            _desc.getDispatch().getRequestContext().put("com.ibm.ws.wsaddressing.disabled", false); 
            _desc.getDispatch().getRequestContext().put("com.ibm.ws.wsaddressing.wsdl.UsingAddressing", true);



@Addressing(enabled=true, required=true)
@WebServiceClient(name = "ScheduleService", targetNamespace = "http://tempuri.org/", wsdlLocation = "WEB-INF/wsdl/ScheduleService_1.wsdl")



            AddressingFeature feat = new AddressingFeature(true, false);            
            _service.getWSHttpBindingScheduleService(feat);

最佳答案

如上所述here ,方法是在创建端口的位置添加 AddressingFeature (示例取自 Oracle 文档):

HelloWorld port = service.getHelloWorldPort(
    new AddressingFeature(true, true));

关于java - JAX-WS 为 IBM websphere、IBM Web 服务客户端添加寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33846135/

相关文章:

SoapUI 模拟服务 : Work as proxy

java - Java访问二维数组的方法

c# - 如何模拟 Web 服务

java - 基于现有 WSDL 生成 Java Webservice 的工具

java - 如何为 REST Web 服务创建 JUnit 测试?

java - Apache Axis 库

java - 编译java文件时可以使用相对路径吗?

java - 将 List<Class> 中的值添加到 Jtable

java - 使用嵌套 for 循环将字符串数组中的字符替换为键盘左侧或右侧的相应字符

c++ - 无法使用 HTTPS 访问 gSOAP Web 服务