Red5在Remoting时如果添加了@Transactional就找不到方法的原因

来源:互联网 发布:视频截取软件for mac 编辑:程序博客网 时间:2024/05/16 05:20

如果一个Remoting的service实现了某接口,并且有@Transactional的标注,那么客户端在调用服务器方法的时候很可能报找不到方法的错误。这是因为@Transactional默认使用jdk的动态代理,red5寻找方法的时候去找接口声明的方法。如果该方法没在接口中声明,自然就找不到。

要解决这个问题比较直接的方法是在接口中声明。这样做会比较繁琐。所有Remoting方法都得在接口中声明。

另一种方法是强制使用CGLib代理,这只需要简单配置即可,不必修改代码。配置方法是在Spring配置文件中加上:

<aop:aspectj-autoproxy proxy-target-class="true" /><!-- 使用annotation定义事务 --><tx:annotation-driven transaction-manager="transactionManager"proxy-target-class="true" />
原创粉丝点击