【发布时间】:2012-06-25 16:23:21
【问题描述】:
我正在使用 Spring Integration 开发 Web 应用程序来路由我的消息,但我在传递我的标头值时遇到了一些问题。我的消息通过路由器和服务激活器。
标头值在我的路由器的路由方法中可用,所以看起来没问题。让我们假设这不是问题(我通过禁用我的服务激活器来检查这一点)。
当涉及到我的服务激活器方法时,会引发以下错误: “未能在目标类 MyService 上找到任何名为 process 的有效消息处理方法。”
my-spring-integration.xml
<channel id="route" />
<service-activator method="process" input-channel="route" ref="myService" output-channel="myOutputChannel" />
MyRouter.java
@Component
public class MyRouter {
public String router(String message, @Header("isValid") boolean isValid) {
// isValid is "true"
return "route";
}
}
MyService.java
@MessageEndpoint
@Transactional
public class MyService {
public void process(String message, @Header("isValid") boolean isValid) {
...
}
}
这是为什么呢?路由后是否会删除标头值?还是我的配置不对?我尝试将@ServiceActivator 注释添加到我的流程方法中,但没有帮助。 任何帮助将不胜感激。
【问题讨论】:
-
我尝试按照您所拥有的配置进行配置,它对我来说很干净。您能否提供您的 Spring Integration 版本
-
有什么办法可以升级到2.0+版本,1.0.4是比较老的版本了?
-
不是真的,但据了解 1.04 版本在这种情况下应该不是问题。
-
我猜你是对的。我的应用程序支持“标题”,但不支持“标题”注释。不知道具体原因,估计是spring集成版本的问题。
标签: spring annotations messaging spring-integration