2014-11-16 51 views
1

我在将我的应用程序表单spring-integration 4.0.4迁移到最新的4.1.0版本时出现问题。Spring Integration 4.1.0迁移问题

一旦更换罐子,我的集成上下文会为每个<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的集成4.1.0.RELEASE,弹簧核心4.1.2.RELEASE,并在jdk1.8.0_05运行。 我的集成bean上下文包含两个<recipient-list-router/>标签,删除后不要抛出此错误。

回答

0

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."); 
       } 
} 

那么,让我们为org.springframework.integrationdebug开关!

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

因此,随时可以提出有关此事的JIRA票。

从另一面也不清楚为什么去除<recipient-list-router/>驱逐的问题...

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

我同意,我们在4.1 RecipientListRouterManagement已经推出,如果你使用JMX特殊的MBean将被注册为RecipientListRouter,最后一个成为Proxy,但它不是clrear该代理如何与request-handler-advice-chain日志消息...

如果您可以从AbstractSimpleMessageHandlerFactoryBean调试该行并向我们显示该Proxy的实际对象,那将会很好。

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

谢谢!

+0

关于此问题的JIRA问题:https://jira.spring.io/browse/INT-3565 –

+0

感谢您的答复,definitley似乎工作。 对不起,不发布更多堆栈跟踪,但有问题的计算机没有连接到任何东西(公司政策),所以这有点困难... –