如何向被请求方发送客户端的 SOAP 响应

时间:2021-02-22 15:17:03

标签: java spring spring-boot soap

我正在开发一个 Spring Boot 应用程序,它充当 2 个组件之间的通道。使用 SOAP 请求并产生 SOAP 响应。

例如:-

A -> 主叫方
B -> 我的组件
C -> 客户方。

A<->B<->C

以前 A 和 C 是通过 SOAP 操作直接相互连接的。 C 方正在使用 RPC 编码的 WSDL。

我已使用以下代码部署了 Party C WSDL 接口。因为我需要将请求转发给 C 并处理来自 A 的请求。

使用 @Endpoint 注释创建端点,如下所示,并使用 @XPathParam 读取标签值。

我想将那个 SOAP 响应返回给来自 C 方的 A 方。但不知道如何将来自 C 的 SOAP 响应返回给 A。

提示会有所帮助。

@Bean
public Wsdl11Definition wsdl11Definition(){
  SimpleWsdl11Definition simpleWsdl11Definition = new SimpleWsdl11Definition();
  simpleWsdl11Definition.setWsdl(new ClassPathResource("/wsdl/calculator.wsdl"));
  return simpleWsdl11Definition;
}

@Bean
public ServletRegistrationBean<MessageDispatcherServlet>
  messageDispatcherServlet(ApplicationContext applicationContext){
  MessageDispatcherServlet messageDispatcherServlet = new MessageDispatcherServlet();
  messageDispatcherServlet.setApplicationContext(applicationContext);
  return new ServletRegistrationBean<>(messageDispatcherServlet, "/medium/ws/*");
}
@ResponsePayload
@PayloadRoot(namespace = "http://medium.com/types/calculator", localPart = "AdditionInput")
public Output addition(@XPathParam("lineId") String lineID){
  // Calling Party C and creating Request Using Apache Axis tool for party C
  // String response = SOAP Response from Party C.
}

1 个答案:

答案 0 :(得分:0)

我已经部署了客户端 WSDL,因为我们正在使用请求并将此请求转发给 C。 所以,我创建了我的一个对象,并在对象中创建了 C 响应的映射值。我已经在 Response 中返回了那个对象。使用拦截器,我已将该对象转换为所需的响应。

相关问题