我使用Camel Spring-WS组件通过在路线的'部分中指定肥皂Web服务来揭示SOAP Web服务。
恰好是,在路由逻辑的末尾,交换的"输出"消息没有填充,但是" in"消息包含所需的响应数据。
生产者组件的默认约定是在生成最终响应时不存在" outher"的"在"交换"消息中使用。
SpringWebserviceConsumer仅在最终交换带有" OUT"消息时支持方案。.java:
public void invoke(MessageContext messageContext) throws Exception {
Exchange exchange = getEndpoint().createExchange(ExchangePattern.InOptionalOut);
populateExchangeFromMessageContext(messageContext, exchange);
// start message processing
getProcessor().process(exchange);
if (exchange.getException() != null) {
throw exchange.getException();
} else if (exchange.getPattern().isOutCapable()) {
Message responseMessage = exchange.getOut(Message.class);
if (responseMessage != null) {
Source responseBody = responseMessage.getBody(Source.class);
WebServiceMessage response = messageContext.getResponse();
configuration.getMessageFilter().filterConsumer(exchange, response);
XmlConverter xmlConverter = configuration.getXmlConverter();
xmlConverter.toResult(responseBody, response.getPayloadResult());
}
}
}
这将导致对肥皂请求产生的任何响应。
问题:这是骆驼 - 弹簧WS的错误/限制,还是我没有正确使用Spring-WS消费者?
否则,听起来我必须明确设置Exchange Platts以进行INOUT?
直到骆驼10888以工作方式发布,在路线中,您可以将Exchange模式设置为InOut,以获取Exchange的"脱机"消息:
.setExchangePattern(ExchangePattern.InOut)