Я пытаюсь создать простой прокси-сервер SOAP в Spring интеграции. Для этого мне нужно перейти к SOAPAction через клиент, вызывающий мою услугу, на прокси-сервер службы. К сожалению, похоже, что это значение теряется при преобразовании объекта Spring Integration Message. Объект Message имеет полезную нагрузку и заголовок. Я ожидал найти SOAPAction в заголовке (как «ws_soapAction»), но его там нет. Единственными заголовками являются answerChannel, errorChannel, id и timestamp. Это стандартные заголовки Spring Integration. Я могу установить ws_soapAction путем жесткого кодирования, но это делает работу гораздо менее динамичной. Я пробовал как SOAP 1.1, так и SOAP 1.2.SOAPAction не прошел через весну Интеграция
Вот приложение:
@SpringBootApplication
public class OmgApplication {
public static void main(String[] args) {
SpringApplication.run(OmgApplication.class, args);
}
@Autowired
MarshallingWebServiceInboundGateway entryPoint;
@Autowired
MarshallingWebServiceOutboundGateway omgGateway;
@Bean
IntegrationFlow flow() {
return IntegrationFlows.from(entryPoint)
.handle(omgGateway)
.get();
}
}
И шлюзы:
@Bean
MarshallingWebServiceInboundGateway entryPoint() {
MarshallingWebServiceInboundGateway entryPoint = new MarshallingWebServiceInboundGateway(jaxb2Marshaller());
entryPoint.setHeaderMapper(new DefaultSoapHeaderMapper());
return entryPoint;
}
@Bean
MarshallingWebServiceOutboundGateway omgGateway() {
MarshallingWebServiceOutboundGateway omgGateway = new MarshallingWebServiceOutboundGateway(
"https://url.to.the/service", jaxb2Marshaller(), jaxb2Marshaller()
);
omgGateway.setHeaderMapper(new DefaultSoapHeaderMapper());
return omgGateway;
}