我一直试图在Spring Integration中实现一个验证拦截器而没有运气。我配置的第一部分如下所示:
<bean
class="org.springframework.ws.server.endpoint.mapping.UriEndpointMapping">
<property name="mappings">
<props>
<prop key="http://localhost/ws/CompanyService">SOAPCompanyGateway</prop>
</props>
</property>
</bean>
<int-ws:inbound-gateway id="SOAPCompanyGateway"
request-channel="SOAPCompanyRequestChannel" marshaller="SOAPMarshaller" unmarshaller="SOAPMarshaller"/>
<bean id="validatingInterceptor"
class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
<property name="schema" value="/WEB-INF/classes/schema/v1_1/CompanyService.xsd"/>
<property name="validateRequest" value="true"/>
<property name="validateResponse" value="false"/>
</bean>
<bean id="SOAPMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPaths">
<list>
<!-- list all schema versions that we wish to accept -->
<value>com.predictivesolutions.schema.v1_1</value>
</list>
</property>
</bean>
但是它没有验证XML消息。我们使用普通的Spring WS,但我似乎无法让它适用于Integration(它应该是相同的)。
我读到你可以使用拦截器在解组之前验证消息,但不知道如何连接它。
答案 0 :(得分:1)
您是否有兴趣将interceptor
提供给EndpointMapping
?
<bean class="org.springframework.ws.server.endpoint.mapping.UriEndpointMapping">
<property name="mappings">
<props>
<prop key="http://localhost/ws/CompanyService">SOAPCompanyGateway</prop>
</props>
</property>
<property name="interceptors">
<array>
<ref bean="validatingInterceptor"/>
</array>
</property>
</bean>