2016-03-15 1 views
1

В пружинно-INT 4.1, я имел заголовок-картограф работает нормально, как так:Spring Integration - Необходимость Карты Заголовки SOAP

<int-ws:inbound-gateway id="my-gateway" 
    request-channel="my-gateway-input" 
    reply-channel="my-gateway-output" 
    unmarshaller="jaxb2Marshaller" marshaller="jaxb2Marshaller" 
    header-mapper="soapHeaderMapper" /> 
<beans:bean id="soapHeaderMapper" class="org.springframework.integration.ws.DefaultSoapHeaderMapper"> 
    <beans:property name="requestHeaderNames" value="*"/> 
</beans:bean> 

При попытке обновления до весны-INT 4,2, перехват заголовка не допускается. Причина, по которой мне это нужно, - это то, что мне нужен заголовок безопасности для мыла. Но я не думаю, что это отображается без указания soapHeaderMapper. Обратите внимание, что у меня есть следующий восходящий поток для перехвата запроса на мыло, и я уверен, что перехватчик не удаляет заголовок мыла. Дайте мне знать, если вам нужна полная конфигурация.

<beans:bean id="wss4jSecurityInterceptor" class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor"> 
    <beans:property name="validationActions" value="UsernameToken"/> 
    <beans:property name="validationCallbackHandler" ref="validationCallbackHandler"></beans:property> 
    <beans:property name="removeSecurityHeader" value="false"></beans:property> 
</beans:bean> 

ответ

1

No-op.

Это все еще работает.

Почему, по вашему мнению, header-mapper проигнорирован?

У нас есть тестовый конфиг:

<ws:inbound-gateway id="headerMappingGateway" request-channel="headerMappingRequests" 
     header-mapper="testHeaderMapper"/> 

И тест-дело по этому вопросу:

@Autowired 
private SimpleWebServiceInboundGateway headerMappingGateway; 

@Autowired 
private SoapHeaderMapper testHeaderMapper; 

@Test 
public void testHeaderMapperReference() throws Exception { 
    DirectFieldAccessor accessor = new DirectFieldAccessor(headerMappingGateway); 
    Object headerMapper = accessor.getPropertyValue("headerMapper"); 
    assertEquals(testHeaderMapper, headerMapper); 
} 

Таким образом, все должно работать, как это было с весны интеграции 4.1.

В противном случае, пожалуйста, передайте тестовый чехол для воспроизведения.

Мы ценим любую обратную связь!

P.S. Я вижу, конечно, что у нас есть пропущенная XSD с ожидаемым и что действительно разрешено. Но это не мешает использовать любую возможную реализацию SoapHeaderMapper.

+0

Артем, спасибо за ваш своевременный ответ. Вы правы, он работает. Я думал, что это произошло не потому, что Eclipse проверял XSD, используя следующее расположение схемы, которое неправильно не позволяет компоновщику заголовков: http://www.springframework.org/schema/integration/ws/spring-integration- ws.xsd. Когда вы меняете xsd на 4.1, у меня есть другие проблемы с проверкой. Оглядываясь назад, я должен был использовать чистую конфигурацию Java вместо того, чтобы иметь дело с этим XML, который вроде бы становится беспорядочным (если я добавлю kafka, mongo-db в микс). – code4kix

Смежные вопросы