2011-03-28 235 views
2

我正在擴展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

回答

2

我想添加我們最終解決方案的細節。我們一直在轉向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

1

Spring-WS可以自動將所有模式元素直接內聯到WSDL中,以便它們顯示爲單個文檔。這可以避免無法訪問的網址<import>

查看the section的Spring WS手冊,其中談到了CommonsXsdSchemaCollection