我正在尝试扩展 Spring WS 指南第 5 章中的示例。我正在使用 Spring WS 1.5.9 。
我添加了...
<import namespace="http://myco.com/schemas/promotion/v1_2"
schemaLocation="http://localhost:8080/ordersService/Promotion_1_2.xsd" /> ...
但是 spring 似乎并没有像端口那样改变导入的位置。所以在我的公司网站上它仍然显示“localhost:8080”
我已经这样定义了 WSDL 生成
<bean id="orders" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
<property name="schema" ref="schema" />
<property name="portTypeName" value="Orders" />
<property name="locationUri" value="http://localhost:8080/ordersService/" />
Spring Framework 是否/可以以某种方式转换导入???
更新:更多背景信息......
我们使用与 maven JaxB2 插件相同的 XSD 来构建我们的响应模式对象。一切都很好,我们使用目录解析器在包含的 JAR 文件中实际查找附加业务域 XSD。我们有 100 个 XSD 来描述我们的业务领域。
所以我尽量不打破这一点。
我想看到的是更详细的示例。使用 JaxB2 和 XSD -> WSDL 功能的示例。
我应该重构 XSD 吗? 我应该使用 WSDL 而不是 XSD 如何正确识别要启动的 XSD? 我是否使用“classpath:My_file.xsd”?我是否必须向 schemaCollection 列出可能有 100 个 XSD?
spring 文档很棒,但我想要一个匹配的实际示例。
最佳答案
我想添加有关我们最终得到的解决方案的详细信息。我们已经转向 Spring WS 2x。这是更新的链接...
技巧/关键在于该部分,它说...“如果您想通过包含或导入来使用多个模式,您将需要放置 Commons XMLSchema”
这就是将其添加到我们项目中的最终答案。
<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.7</version>
</dependency>
现在 spring 启用了额外的功能来允许类路径解析工作。
关于import - 在 Spring WS 中转换 XSD 导入以用于 WSDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5454517/