我使用Camel spring-ws组件通过在路由的“from”部分指定SOAP web服务来公开它。
碰巧的是,在路由逻辑的末尾,Exchange的“out”消息没有填充,但是“in”消息包含所需的响应数据。
如果在生成最终响应时不存在“out”,则生产者组件的默认约定是使用“in”交换消息。
然而,SpringWebservice消费者仅支持最终交换有“out”消息的场景。以下是https://github.com/apache/camel/blob/master/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.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());
}
}
}
这会导致不生成对 SOAP 请求的响应。
问题:这是camel-spring ws的bug/限制还是我没有正确使用spring ws消费者?
否则,听起来我必须将交换模式显式设置为InOut?
在发布CAMEL-10888之前,作为一种变通办法,在路由中,您可以将交换模式设置为InOut,以获取交换的非空“Out”消息:
.setExchangePattern(ExchangePattern.InOut)
我在生产环境中使用redis server,在HA中使用redis Sentinel。但是阅读文档,当客户机连接到sentinel时,sentinel将主redis服务器提供给客户机。 是所有的读写操作都在主服务器上进行,而从服务器只用于故障转移,还是我们可以使用从服务器读取数据?
我试图在聚合器完成后获得一个回复,但是我得到一个异常,我没有指定任何聚合器子项,但是当我指定一个。to()endpoint我没有收到聚合结果。。。这可能吗? 控制器: 聚合器:
我正在从sftp服务器读取文件,并使用Spring Batch Framework将该文件加载到数据库中。下面是我的代码,但我遇到了一个错误 代码: 错误:
我使用spring-data-redis(2.1.5.release)和jedis(2.10.2)客户端从作为spring-boot应用程序运行的不同服务连接到我的azure redis实例。 两个服务具有相同的缓存方法,并通过实现以下配置指向相同的缓存。am面临的问题是,当一个服务试图读取另一个服务创建的缓存值时,出现了去序列化异常。 例外情况: 注意:我使用redis只是为了缓存从我的数据库中
我正在尝试从我的ftp服务器读取csv文件。链接看起来像: 然而,d3不喜欢它。 在chrome中,我得到以下错误: 我有大量的数据文件~12GB,ftp服务器是我在线存储数据最方便的方式 有没有办法解决这个问题?
我成功地使用会话在我的服务使用: 然而,我的应用程序是分层的,服务中的一个方法将调用业务层中的另一个方法,然后调用DAO层方法。 在DAO层中,我想访问会话中保存的一些信息。我可以这样看: 在每个方法中传递HttpSession对象。。。但我不想那样做 还有其他方法吗? 我正在使用GUICE获取信息,是否有一些已经创建的提供程序可以为我提供当前请求会话? 谢谢