从SI v 2.2升级到v 3.0.5后网关接口中断

时间:2014-10-23 06:23:36

标签: spring-integration spelevaluationexception

将SI从v 2.2升级到v 3.0.5后,我收到以下网关的错误消息。网关接口的行为是否在v 3.x中更改为不接受消息类型?任何提示都将被理解为什么会发生这种情况。

org.springframework.expression.spel.SpelEvaluationException:EL1004E:(pos 8):方法调用:在com.sun.proxy上找不到方法sendStat(my.domain.ReplyStatEvent)。$ Proxy22 type]

void sendStat(@Payload Message<? extends LiveStatEvent> message);

ReplyStatEvent扩展LiveStatEvent,使用服务激活器定义调用网关,如下所示:

<int:service-activator ref="liveStatsGateway" method="sendStat" />

将界面更改为以下后,它可以正常工作。

void sendStat(@Payload LiveStatEvent message);

1 个答案:

答案 0 :(得分:0)

即使它之前有效,但这并不意味着它是正确的语法。

如果您的网关的参数标记为@Payload,则假定框架将向该{arg payload Message注入Message,而不是整个payload。< / p>

我们刚刚解决了这种歧义,现在告诉你你的用例不正确。

因此,如果您只想使用@Payload,您将能够为param指定有效负载类型。 在这种情况下,Message不是必需的。如果你的方法有几个args并且Framewrok无法确定哪个是有效负载,那么这是必需的。

如果你想要处理整个@Payload Message<?>,那么就足以拥有该类型的arg。

无论如何,组合{{1}}不正确。因此,您只需修复Migration Guide个案例。