我有一个带有3个操作的WSDL,外部定义了xsd模式,每个操作有2个模式(请求+响应),单个故障,所有操作都相同。它看起来像这样:
src/main/resources/wsdl/transactions
-TransactionsOperations.wsdl
-FindTransactionRequest.xsd
-FindTransactionResponse.xsd
-RemoveTransactionRequest.xsd
...
-FaultMessage.xsd

目前这一切都适用于Weblogic,但我想用Spring尝试一下。我无法让它工作。我一步一步跟着this tutorial。好的,wsdl在转到localhost:8080/ws/TransactionsOperations.wsdl
之后确实在浏览器中可见,但是当我将它导入SoapUI时,它在模式解析时失败(并且难怪,因为它们不在那里)。模式与WSDL位于同一文件夹中,但由于某些原因,它们未部署。
我完全像在教程中那样做,除了我的模式是外部定义的,而不是在WSDL中内联,我认为这是整个问题。它们是使用<xsd:import schemaLocation="FaultMessage.xsd"...
在WSDL中导入的。在我看来,Spring并没有检查那些导入,但我没有找到任何方式告诉他们(SimpleWsdl11Definition
只有一个方法setWsdl
...)。这是否可以在Spring中以这种方式执行,或者我必须让Spring为我生成WSDL而只提供模式?
我尝试给他模式并让他为我生成WSDL,但它也没有工作(我尝试在setSchemaCollection
上使用DefaultWsdl11Definition
,它基本上生成了2行空WSDL)。我开始工作的唯一方法就是将所有模式组合到单个XSD中并根据Spring official tutorial进行操作,这是我根本无法做到的事情,它会成为多个操作的混乱。
有点副问题:当我将该工作解决方案导入SoapUI时,请求/响应在每个xml元素之前都有名称空间,是否有可能摆脱这些? (例如请求中的<ns:id>1</ns:id>
或<ns2:accountNumber>123</ns2:accountNumber>
)。 Weblogic实现不会发生这种情况。
/编辑
在Spring jira上发现了2个关于此的问题: https://jira.spring.io/browse/SWS-281 https://jira.spring.io/browse/SWS-346 并且显然它已被修复,但我无法让它工作。
Here我找到了解决这个问题的方法,但只有一个架构而且我得到了很多。