PayloadValidatingInterceptor - 仅验证具体的wsdl

时间:2013-07-30 14:50:05

标签: spring web-services interceptor

我有一个带有两个端点和两个wsdl文件的Spring WS servlet。正在使用PayloadValidatingInterceptor验证请求/响应。 spring-ws-servlet.xml的内容:

<context:component-scan base-package="cz.legend.mzv.spi.ws.ei.endpoints" />
<context:component-scan base-package="cz.legend.mzv.spi.ws.de.endpoints" />

<sws:annotation-driven />

<sws:static-wsdl id="entityImport" location="classpath:/wsdl/entityImport.wsdl" />

<sws:static-wsdl id="documentEvidence"
    location="classpath:/wsdl/documentEvidence.wsdl" />

<oxm:jaxb2-marshaller id="jaxb2Marshaller"
    contextPath="cz.legend.mzv.spi.ws.jaxb.generated" />

<bean id="endpointAdapter" class="org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter">
    <constructor-arg ref="jaxb2Marshaller" />
</bean>

<sws:interceptors>
    <bean
        class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
        <property name="schema" value="classpath:/xsd/vums_spi_de.xsd" />
        <property name="validateRequest" value="true" />
        <property name="validateResponse" value="true" />
    </bean>
</sws:interceptors>

拦截器应用于两种服务。我需要拦截器仅应用于documentEvidence.wsdl描述的服务。一种选择是制作两个独立的弹簧servlet。但我只想使用一个servlet。

1 个答案:

答案 0 :(得分:1)

解决方案:

  

或者,您可以使用或   用于指定有效负载根名称或SOAP操作的元素   拦截器应该适用:

<sws:interceptors>
  <bean class="samples.MyGlobalInterceptor"/>
  <sws:payloadRoot namespaceUri="http://www.example.com">
    <bean class="samples.MyPayloadRootInterceptor"/>
  </sws:payloadRoot>
  <sws:soapAction value="http://www.example.com/SoapAction">
    <bean class="samples.MySoapActionInterceptor1"/>
    <ref bean="mySoapActionInterceptor2"/>
  </sws:soapAction>
</sws:interceptors>