0

我有一个带有两个端点和两个 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 描述的服务。一种选择是制作两个单独的spring servlet。但我只想使用一个 servlet。

4

1 回答 1

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>
于 2013-08-03T00:04:41.890 回答