在Spring WS中为WSDL转换XSD导入

时间:2011-03-28 03:57:41

标签: import xsd wsdl transform spring-ws

我想在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来构建我们的响应模式对象。这一切都很好,我们使用Catalog解析器实际在包含的JAR文件中找到附加业务域XSD。我们有100个XSD来描述我们的业务领域。

所以我试图不打破它。

我希望看到更详细的例子。使用JaxB2和XSD的示例 - &gt; WSDL功能。

我应该重构XSD吗? 我应该使用WSDL而不是XSD 如何正确识别XSD弹簧? 我使用“classpath:My_file.xsd”吗?我是否必须将100个XSD列入schemaCollection?

春季文档很棒,但我想要一个匹配的实际例子。

2 个答案:

答案 0 :(得分:3)

我想补充一下我们最终解决方案的细节。我们一直在转向Spring WS 2x。这是一个更新的链接...

http://static.springsource.org/spring-ws/site/reference/html/server.html#server-automatic-wsdl-exposure

技巧/关键在那一节它说......“如果你想使用多个模式,无论是通过包含还是导入,你都会想要把Commons XMLSchema”

这是将其添加到我们项目中的最终答案。

<dependency>
     <groupId>org.apache.ws.commons.schema</groupId>
     <artifactId>XmlSchema</artifactId>
     <version>1.4.7</version>
</dependency>

现在,spring启用了其他功能,允许类路径解析工作。

答案 1 :(得分:2)

Spring-WS可以自动将所有架构元素直接内联到WSDL中,以便它们显示为单个文档。这样可以避免无法访问<import>网址的问题。

参见Spring WS手册的the section,该手册讨论CommonsXsdSchemaCollection