您的位置:首页 > 编程语言 > Java开发

在Spring AOP代理过的对象上支持dubbo annotation配置事物失效问题

2018-03-20 10:03 661 查看
在Spring AOP代理过的对象上支持dubbo annotation配置
dubbo annotation方式配置 在A.insert服务中有两个@resource注入的service.insert 第二个inert报错,期望两个service操作回滚,使用xml申明式事物,实际没有回滚,dubbo改成xml配置,正常回滚。
整理了testcase:https://pan.baidu.com/s/1sZG9tsUTQQvlE2fFqnsQeQ
1、解决方案:1.1、dubbo 2.5.9 解决了。1.2、修改成xml配置。 1.3、新增中间一层接口实现类调用。
2、但是 dubbo 2.6.0 问题依旧存在 打印日志如,发布的服务接口为SpringProxy ,之前的版本也有此问题,由于不想每次注解中指定接口名称,于是修改了如下:
//修复 代理类发布的服务接口为 SpringProxy
Class<?> clazz = bean.getClass();
if (org.springframework.aop.support.AopUtils.isAopProxy(bean)) {
clazz = org.springframework.aop.support.AopUtils.getTargetClass(bean);
}
serviceConfig.setInterface(clazz.getInterfaces()[0]);
[com.alibaba.dubbo.registry.integration.RegistryProtocol]- [DUBBO] subscribe url: provider://192.168.2.77:20880/org.springframework.aop.SpringProxy?anyhost=true&application=dubbo-rss-provider&category=configurators&check=false&default.delay=-1&default.retries=0&default.timeout=60000&delay=-1&dubbo=2.6.0&generic=false&interface=org.springframework.aop.SpringProxy&methods=&pid=10752&revision=4.2.5.RELEASE&side=provider×tamp=1521424569991&version=1.0.0, override urls: [empty://192.168.2.77:20880/org.springframework.aop.SpringProxy?anyhost=true&application=dubbo-rss-provider&category=configurators&check=false&default.delay=-1&default.retries=0&default.timeout=60000&delay=-1&dubbo=2.6.0&generic=false&interface=org.springframework.aop.SpringProxy&methods=&pid=10752&revision=4.2.5.RELEASE&side=provider×tamp=1521424569991&version=1.0.0], dubbo version: 2.6.0, current host: 127.0.0.1
[com.alibaba.dubbo.config.model.ApplicationModel]- [DUBBO] already register the provider service: org.springframework.aop.SpringProxy:1.0.0, dubbo version: 2.6.0, current host: 127.0.0.13、2.6.1 启动报错
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
at com.alibaba.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter.connect(CuratorZookeeperTransporter.java:26)
at com.alibaba.dubbo.remoting.zookeeper.ZookeeperTransporter$Adaptive.connect(ZookeeperTransporter$Adaptive.java)
at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.(ZookeeperRegistry.java:69)
at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistryFactory.createRegistry(ZookeeperRegistryFactory.java:37)
at com.alibaba.dubbo.registry.support.AbstractRegistryFactory.getRegistry(AbstractRegistryFactory.java:95)
at com.alibaba.dubbo.registry.RegistryFactory$Adaptive.getRegistry(RegistryFactory$Adaptive.java)
at com.alibaba.dubbo.registry.integration.RegistryProtocol.getRegistry(RegistryProtocol.java:200)
at com.alibaba.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:134)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:54)
at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:54)
at com.alibaba.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java)
at com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:505)
at com.alibaba.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:357)
at com.alibaba.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:316)
at com.alibaba.dubbo.config.ServiceConfig.export(ServiceConfig.java:215)
at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:121)
at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:50)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐