2011-10-13 44 views
1

信息:我使用Spring-WS 1.5.9和2.5.6春季春-WS:多個端點/ WSDL/XSD /你名,它

我目前在建的過程很多Web服務,並且對於架構應該如何有幾個問題。

現在我有一個單一的網絡服務。它(當然)包含一個wsdl和一個端點等等。

我目前正在擴展Web服務,並且在那裏我使用JAXB2(xjc)等創建了另一個xsd,auto-gen代碼。

現在,我應該如何處理這些xsds,wsdl(s),代碼等等?我什麼也看不見春天-WS建議...

我的建築師想有一個WSDL,可使用實現以下幾點:

<bean id="schemaCollection" class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection"> 
<property name="xsds"> 
    <list> 
     <value>one.xsd</value> 
     <value>two.xsd</value> 
    </list> 
</property> 
<property name="inline" value="true"/> 

這是一個好辦法做這個?我最終會得到像10-15個Web服務那樣大的WSDL。

端點怎麼樣?我應該創建單個端點並測試請求的類型(例如使用instanceof)嗎?我自己認爲有一個端點映射到一個請求是更優雅/乾淨。

最後,怎麼樣編組?我有這個(與一個WS /架構):

<oxm:jaxb2-marshaller id="marshaller" contextPath="mydomain.signals.one.v1_0.schemas"/> 
<oxm:jaxb2-marshaller id="unmarshaller" contextPath="mydomain.signals.v1_0.schemas"/> 

但是,我應該如何添加另一個架構?我試圖像下面,這看起來不正確是現在的工作對我來說:

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="contextPaths"> 
     <list> 
      <value>mydomain.signals.one.v1_0.schemas</value> 
      <value>mydomain.signals.two.v1_0.schemas</value> 
     </list> 
    </property> 
</bean> 

我希望這是有道理的。我的目標是指出我應該做什麼。

回答

1

如果你有10-15個Web服務,那麼沒有辦法避免擁有一個巨大的wsdl。如果目標是單一的wsdl,你所做的似乎是可以接受的。

我更喜歡每個請求的端點。

另外,你有沒有嘗試過使用冒號分隔值列表的上下文路徑?因此,不要使用列表,只需要一個長字符串,每個上下文路徑用冒號分隔。

來自於Spring-WS文檔:

上下文路徑是冒號的列表(:)分隔的Java包名 ,它包含模式派生類。

我知道通道是Jaxb1,但我敢肯定它仍然適用於Jaxb2Marshaller。我想你只會使用列表變體,如果你指定的類。

http://static.springsource.org/spring-ws/site/reference/html/oxm.html

+0

是啊,我發現與結腸的一部分,儘管這使得XML相當不可讀(隨着時間的推移這將是可怕的)。 – sunlock

+0

這不是最優雅的外觀,但如果你只是把每一個放在一個新的線上,它應該仍然是非常可讀的。 – AHungerArtist