在Spring中为WSDL转换XSD导入WS

问题描述:

我正在扩展Spring WS指南第5章中的示例。我使用Spring WS 1.5.9。在Spring中为WSDL转换XSD导入WS

我加...

<import namespace="http://myco.com/schemas/promotion/v1_2" 
    schemaLocation="http://localhost:8080/ordersService/Promotion_1_2.xsd" /> ... 

但春天似乎并不被转化像它的端口导入的位置。所以,对我公司的网站仍显示“本地主机: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框架可以改变进口某种方式???

UPDATE:一些更多的背景....

我们使用相同的XSD使用Maven插件JAXB2打造我们的反应模式对象。这一切都很好,我们使用目录解析器实际在包含的JAR文件中查找附加业务域XSD。我们有100个描述我们业务领域的XSD。

因此,我试图不打破。

我想看到的是一个更详细的例子。使用JaxB2和XSD - > WSDL功能的示例。

我应该重构XSD吗?我应该使用WSDL而不是XSD 如何正确识别XSD以弹出? 我是否使用“classpath:My_file.xsd”?我需要将可能的100个XSD列入schemaCollection吗?

春季文档是伟大的,但我想一个实际的例子,匹配。

+0

Spring WS 2已经出来了,你现在应该真的使用它了。 – skaffman 2011-03-28 15:22:21

+1

有一天。这是我试图成形的现有开发,所以我可以移动到2.0 – grbonk 2011-03-29 14:33:14

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

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

诀窍/关键是在这一节中,它说......“如果你要使用多个模式,或者通过包括或进口的,你会希望把共享XMLSchema“

所以这是我们项目的最终答案。

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

现在spring使用额外的功能来允许类路径解析工作。

+0

+1类似的东西修复了它,我添加了org.apache.ws.xmlschema:xmlschema-core v2.0。2 – codebox 2014-09-09 07:30:06

+0

我还必须在使用java配置时添加'commonsXsdSchemaCollection.setInline(true);'。 – Timo 2017-11-15 16:03:15

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

查看the section的Spring WS手册,其中谈到了CommonsXsdSchemaCollection