/ / Validação de esquema em Spring Integration - spring-integration

Validação de esquema na Spring Integration - spring-integration

Tenho tentado implementar um interceptor de validação no Spring Integration sem sorte. A primeira parte da minha configuração é assim:

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

No entanto, não está validando a mensagem XML. Temos isso funcionando com o Spring WS normal, mas não consigo fazê-lo funcionar para o Integration (que deve ser o mesmo).

Eu li que você pode usar o interceptor para validar a mensagem antes de descompactar, mas não tenho certeza de como conectá-la.

Respostas:

1 para resposta № 1

É interessante por que você não fornece o seu interceptor ao 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>