<!-- 方法存在缺陷:如果存在多个onreturn、onthrow的话,方法名不能相同,如果相同就会出现回调覆盖现象 -->
<dubbo:reference id="userService" group="db" interface="com.patty.dubbo.api.service.UserService"
timeout="500" retries="0" mock="true" check="false">
<dubbo:method name="findAllUsers" merger="myMerger" cache="lru" />
<dubbo:method name="findUserById" async="false" onreturn="notifyImpl.onreturn" onthrow="notifyImpl.onthrow" />
<dubbo:method name="asyncOnreturn" async="true" onreturn="asyncNotifyImpl.asyncOnreturn"/>
<dubbo:method name="asyncOnthrow" async="true" onthrow="asyncNotifyImpl.asyncOnthrow"/>
<dubbo:method name="asyncOninvoke" async="true" oninvoke="asyncNotifyImpl.asyncOninvoke"/>
</dubbo:reference>
在配置文件中加上<dubbo:method name="asyncOninvoke" async="true" oninvoke="asyncNotifyImpl.asyncOninvoke"/>后系统报错无法正常运行。Spring提示找不到名称为“asyncNotifyImpl.asyncOninvoke”的bean。为什么onreturn和onthrow都可以呢?
原因是dubbo没有处理oninvoke属性。下面是dubbo2.8.4版本的处理。
} else if ("onreturn".equals(property)) {
int index = value.lastIndexOf(".");
String returnRef = value.substring(0, index);
String returnMethod = value.substring(index + 1);
reference = new RuntimeBeanReference(returnRef);
beanDefinition.getPropertyValues().addPropertyValue("onreturnMethod", returnMethod);
} else if ("onthrow".equals(property)) {
int index = value.lastIndexOf(".");
String throwRef = value.substring(0, index);
String throwMethod = value.substring(index + 1);
reference = new RuntimeBeanReference(throwRef);
beanDefinition.getPropertyValues().addPropertyValue("onthrowMethod", throwMethod);
} else {//在此没有处理oninvoke属性
if ("ref".equals(property) && parserContext.getRegistry().containsBeanDefinition(value)) {
BeanDefinition refBean = parserContext.getRegistry().getBeanDefinition(value);
if (! refBean.isSingleton()) {
throw new IllegalStateException("The exported service ref " + value + " must be singleton! Please set the " + value + " bean scope to singleton, eg: <bean id=\"" + value+ "\" scope=\"singleton\" ...>");
}
}
reference = new RuntimeBeanReference(value);
}
分享到:
相关推荐
解决dubbo启动报错,加载失败问题。
如果引入dubbo时候,dubbo的标签报错,是因为没有引入dubbo.xsd配置文件: 解决dubbo标签报错
dubbo标签报错 http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd 下载一个dubbo.xsd文件windows->preferrence->xml->xmlcatalog add->catalog entry ->file system ...
dubbo开发eclipse配置需要dubbo开发eclipse配置需要dubbo开发eclipse配置需要
dubbo找不到dubbo.xsd报错, cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dubbo:application'. - schema_reference.4: Failed to read schema document...
解决springboot 中 dubbo配置的报错问题 dubbo XML Schema 文件
一般dubbo的配置文件有报错的话,只要引用此约束文件就可以了.教程网上很多的
【标题】"dubbo的demo"是一个以Dubbo框架为基础的快速启动示例项目,旨在帮助初学者理解和掌握Dubbo的核心功能和基本用法。Dubbo是中国阿里巴巴公司开源的一款高性能、轻量级的服务治理框架,它主要应用于分布式系统...
解决启动dubbo项目的时候出现,无法读取方案文档 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd',其实在你本地把dubbo.jar文件解压,然后在META-INF下边就有个dubbo.xsd,就是他
在开发分布式服务框架Dubbo的过程中,开发者可能会遇到一个常见的问题,即“dubbo引用xsd报错”。这通常意味着系统在解析或加载Dubbo相关的XML配置文件时遇到了问题,导致服务无法正常启动或运行。本文将深入探讨这...
构建dubbo项目的时候会遇到: 操作步骤: http://blog.csdn.net/gjldwz/article/details/50555922 Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wildcard is strict, but no ...
解决dubbo-admin在jdk1.8下启动报错问题,需要下载dubbo源码修改问题重新编译打包发布,这里已经和重新编译。
构建dubbo项目的时候会遇到: Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dubbo:application'. - ...
dubbo.xsd文件,用于解决dubbo配置报错。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
dubbo的xsd文件,dubbo项目xml文件报错,不支持dubbo元素,需要在本地安装dubbo.xsd文件。 eclipse>window>perferences>xml>xml catalog(本地的dubbo.xsd文件)
在本项目"springboot-dubbo整合框架2"中,我们主要关注的是如何将流行的Java微服务框架Spring Boot与阿里巴巴的高性能远程服务调用框架Dubbo相结合,构建一个强大的分布式服务系统。Spring Boot以其简洁的配置和快速...