`

Dubbo oninvoke报错

阅读更多
<!-- 方法存在缺陷:如果存在多个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启动报错,加载失败问题。

    bubbo.xsd 解决dubbo标签报错

    如果引入dubbo时候,dubbo的标签报错,是因为没有引入dubbo.xsd配置文件: 解决dubbo标签报错

    解决dubbo标签报错,原因是:缺少dubbo.xsd

    dubbo标签报错 http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd 下载一个dubbo.xsd文件windows-&gt;preferrence-&gt;xml-&gt;xmlcatalog add-&gt;catalog entry -&gt;file system ...

    解决dubbo标签报错:dubbo.xsd

    dubbo开发eclipse配置需要dubbo开发eclipse配置需要dubbo开发eclipse配置需要

    dubbo找不到dubbo.xsd报错

    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 文件

    解决springboot 中 dubbo配置的报错问题 dubbo XML Schema 文件

    dubbo约束文件 dubbo.xsd dubbo报错文件

    一般dubbo的配置文件有报错的话,只要引用此约束文件就可以了.教程网上很多的

    dubbo的demo

    【标题】"dubbo的demo"是一个以Dubbo框架为基础的快速启动示例项目,旨在帮助初学者理解和掌握Dubbo的核心功能和基本用法。Dubbo是中国阿里巴巴公司开源的一款高性能、轻量级的服务治理框架,它主要应用于分布式系统...

    解决dubbo启动的时候报错,无法读取方案文档 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'

    解决启动dubbo项目的时候出现,无法读取方案文档 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd',其实在你本地把dubbo.jar文件解压,然后在META-INF下边就有个dubbo.xsd,就是他

    解决dubbo引用xsd报错

    在开发分布式服务框架Dubbo的过程中,开发者可能会遇到一个常见的问题,即“dubbo引用xsd报错”。这通常意味着系统在解析或加载Dubbo相关的XML配置文件时遇到了问题,导致服务无法正常启动或运行。本文将深入探讨这...

    解决:dubbo找不到dubbo.xsd报错

    构建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-admin在jdk1.8下启动报错问题,需要下载dubbo源码修改问题重新编译打包发布,这里已经和重新编译。

    解决dubbo找不到dubbo.xsd报错

    构建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资源,用于解决dubbo问题

    dubbo.xsd文件,用于解决dubbo配置报错。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    dubbo xsd文件,dubbo项目xml文件报错

    dubbo的xsd文件,dubbo项目xml文件报错,不支持dubbo元素,需要在本地安装dubbo.xsd文件。 eclipse&gt;window&gt;perferences&gt;xml&gt;xml catalog(本地的dubbo.xsd文件)

    springboot-dubbo整合框架2

    在本项目"springboot-dubbo整合框架2"中,我们主要关注的是如何将流行的Java微服务框架Spring Boot与阿里巴巴的高性能远程服务调用框架Dubbo相结合,构建一个强大的分布式服务系统。Spring Boot以其简洁的配置和快速...

Global site tag (gtag.js) - Google Analytics