在Spring Integration中验证模式

时间:2014-07-18 19:22:12

标签: spring-integration

我一直试图在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(它应该是相同的)。

我读到你可以使用拦截器在解组之前验证消息,但不知道如何连接它。

1 个答案:

答案 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>