【发布时间】:2016-10-14 01:58:29
【问题描述】:
我正在创建一个 Java 服务,该服务将采用入站 XML,对 XML 中的一些数据应用一些业务逻辑,并使用该数据和 XML 中的原始数据调用 SOAP 服务。
我有一个用于出站 SOAP 服务的入站请求 XML 和 WSDL 示例。
我的计划是:
- 使用 XMLSpy 从示例入站 XML 生成 XSD。
- 使用 maven-jaxb2-plugin 从 XSD 生成 Java 类。
- 将入站 XML 解组为 JAXB 对象。
- 从 JAXB 对象中提取数据,对其中一些应用业务逻辑。
- 使用带有 cxf-codegen-plugin 的 SOAP WSDL 文档生成 SOAP 客户端。
- 使用数据调用 SOAP 客户端。
我在这里阅读有关使用 XSLT 的信息: xml-to-soap-transformation
我是否正确地完成了这项任务? XSLT 应该成为我实现的一部分吗?
谢谢!
更新:
出站 SOAP 服务是“文档样式”,WSDL 包括 XSD 架构。
项目使用Spring框架。
生成的代码如下所示:
@WebServiceClient(name = "OrderService",
wsdlLocation = "file:/C:/......./src/main/resources/wsdl/OrderService.wsdl",
targetNamespace = "http://xmlns.some_name_space")
public class OrderService extends Service {
@WebService(targetNamespace = "http://xmlns.some_name_space", name = "OrderPortType")
@XmlSeeAlso({org.....ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface OrderPortType {
生成的客户端:
QName SERVICE_NAME = new QName("http://xmlns......", "OrderService");
URL wsdlURL = OrderService.WSDL_LOCATION;
OrderService ss = new OrderService(wsdlURL, SERVICE_NAME);
OrderPortType port = ss.getOrder();
CancelOrderType cancelOrderMessage = null;
CancelAcknowledgeOrderType cancelOrderReturn = port.cancelOrder(cancelOrderMessage);
ProcessOrderType processOrderMessage = null;
AcknowledgeOrderType processOrderReturn = port.processOrder(processOrderMessage);
【问题讨论】: