2012-06-15 122 views
0

目前我正在使用Spring-ws實現web服務。在這裏,我感到與xsd驗證。對於XSD驗證我使用以下configruationSpring ws XSD驗證

<bean id="validatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"> 
     <property name="xsdSchema" ref="schema" /> 
     <property name="validateRequest" value="true" /> 
     <property name="validateResponse" value="true" /> 
     </bean> 

<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
    <property name="xsd" value="/WEB-INF/ProductSchema.xsd" /> 
    </bean> 

我在這裏豆初始化期間傳遞XSD文件。有沒有辦法讓我動態發送這個(ProductSchema.xsd)xsd文件。因爲我會根據輸入的有效負載來了解哪個xsd文件需要發送。

請幫幫我。在此先感謝

回答

0

我不知道你有多少XSD,但也許你可以在ProductSchema.xsd中定義導入來包含其他導入。至少我是如何設置的。

例如:

<import namespace="http://namespace" schemaLocation="data.xsd" /> 
0

我不太清楚你正在嘗試做的。

但是可以使不同的有效載荷通過註釋用的localpart處理程序方法的元素的名稱匹配i中的有效載荷匹配不同端點/方法:

@Endpoint 
public class MyEndpoint { 

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "NameOfMyXmlRequestElement")  
    @ResponsePayload 
    public MyResponse handleMyRequest(@RequestPayload MyRequest MyRequest) throws Exception { 
    ... 

甲recived然後請求可以是解組/

<bean id="myJaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="classesToBeBound"> 
     <list> 
      <value>mydomain.model.oxm.MyRequest</value> 
      <value>mydomain.model.oxm.MyResponse</value> 
     </list> 
    </property> 
    <property name="schema" ref="MyServiceSchema" /> 
</bean> 

<bean id="MyServiceSchema" class="org.springframework.core.io.ClassPathResource"> 
    <constructor-arg value="WEB-INF/schemas/MyService.xsd" /> 
</bean> 

的MyRequest類必須註釋與Jaxb2marshaller,@XmlRootElement工作(NAME = 「MyRequest」)等等

:使用特定的模式驗證