java - Spring Integration 4.1.0 迁移问题

标签 java spring spring-integration

我在将应用程序从 spring-integration 4.0.4 迁移到最新的 4.1.0 版本时遇到问题。

替换 jar 后,我的集成上下文将为每个 <recipient-list-router/> 抛出异常。标签。

抛出的异常是 java.lang.ClassCastException消息是:

Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy62 cannot be cast to org.springframework.integration.context.IntegrationObjectSupport
    at org.springframework.config.AbstractSimpleMessageHandlerFactoryBean.createHandlerInternal(AbstractSimpleMessageHandlerFactoryBean.java:130)
    at org.springframework.integration.config.AbstractSimpleMessageHandlerFactoryBean.getObject(AbstractSimpleMessageHandlerFactoryBean.java:102)
    at org.springframework.integration.config.AbstractSimpleMessageHandlerFactoryBean.getObject(AbstractSimpleMessageHandlerFactoryBean.java:44)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanReagistrySupport.java:168)
    ... 20 more

我正在使用 Spring-Integration 4.1.0.RELEASE、spring-core 4.1.2.RELEASE,并在 jdk1.8.0_05 上运行。 我的集成 bean 上下文包含两个 <recipient-list-router/>标签,删除后不会引发此错误。

最佳答案

代码来自AbstractSimpleMessageHandlerFactoryBean说:

else if(!(this.handler instanceof AbstractReplyProducingMessageHandler)) {
    if (logger.isDebugEnabled()) {
            logger.debug("adviceChain can only be set to AbstractReplyProducingMessageHandler or its subclass, "
                    + ((IntegrationObjectSupport) this.handler).getComponentName() + " doesn't support it.");
                }
}

那么,让我们切换 debug对于org.springframework.integration类别!

从另一方面来说,我同意这是一个错误,因为如果我们的 messageHandlerProxy我们不能简单地将其转换为 IntegrationObjectSupport

所以,请随意提出 JIRA关于此事的票。

从另一面来看,不清楚为什么删除 <recipient-list-router/>驱逐问题...

因为<recipient-list-router/>不支持<request-handler-advice-chain>

我同意我们在 4.1 中引入了 RecipientListRouterManagement如果您使用 JMX,特殊的 MBean 将注册为 RecipientListRouter最后一个变成 Proxy ,但尚不清楚该代理与 request-handler-advice-chain 有何关系。记录消息...

如果您可以从 AbstractSimpleMessageHandlerFactoryBean 调试该行,那就太好了并向我们​​展示真正的对象 Proxy .

请显示更多 StackTrace 。也许我们可以看到更多背景来找出原因的根源。

谢谢!

关于java - Spring Integration 4.1.0 迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26958018/

相关文章:

java - Akka - ActorRef.tell() 需要几分钟来传递消息

java - 排除 apk 文件中的预定义资源

java - 错误 : Could not find or load main class - Spring Boot Application jar

java - Spring 过滤器在初始化函数后丢失设置变量

java - 大数据微服务间通信

java - 没有 Transformer 的 Spring TCP 客户端

java - Spring 4.x 与 Spring Integration 4.X ClassLoader 问题

java - 在填充ObservableList时,是否必须从数据库中加载所有记录?

java - 从 HTML 标签获取属性的正则表达式

hibernate - 一起运行时 Maven Spring 测试失败,但单独成功(ehcache 关闭,IllegalTransactionStateException)