初学Dubbo遇到的那些坑

初次接触Dubbo,犯了挺多低级错误,仅记录在此 ~~~

OS: MacOS

IDE: IntelliJ

网上有挺多不错的入门教程,如:

https://blog.csdn.net/noaman_wgs/article/details/70214612

https://blog.csdn.net/jingyangV587/article/details/78901937

入坑前的热身:开发环境、各种包、依赖服务(zookeeper)都还算顺利,下面开始跳:

1. 接口实现的分离:

Problem: 各种教程基本都是Eclipse + Maven + Spring + Dubbo,通常由三部分组成:Interface, Provider, Consumer,教程里是放在一个Project底下,所以引用起来比较简单,想更贴近实际情况,所以我创建了三个项目,但由于Provider, Consumer都需要把Interface作为依赖,所以要把Interface包导入到maven中。

Root cause: Interface包没有导入本地Maven库。

Solution: 在Interface项目目录下运行以下命令,等运行成功之后,就可以在其它项目里引用该依赖了:

mvn install

2. 找不到Spring配置文件

Problem: 在Provider工程中,我写了一个provider.xml的配置,但在IntelliJ中运行主函数的时候,老是提示找不到该文件。

Root cause: Java类找文件是从编译后的路径,而不是源文件目录查找文件。

Solution: 刚开始以为是相对路径的问题,试了把该文件放到各个folder里,都不起作用,甚至尝试着用java语句打出空文件路径(System.out.println((new File("")).getAbsolutePath())),也不能解决,猜想所在的目录与classpath有关,尝试把配置文件放到target/classes底下,终于能加载配置了。

3. 找不到Dubbo Schema

Problem: 按着入门教程完成了Provider部分,启动服务时总是报:

Failed to read schema document 'http:// code.alibabatech.com/schema/dubbo/dubbo.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not .

Root cause:阿里已经把Dubbo贡献给Apache,所以DTD的网址也挪到了http://dubbo.apache.org/schema/dubbo/dubbo.xsd,故原URL失效。

Solution: 网上有一些介绍如何override IDE中DTD的配置解决此类问题,但在我本地环境中不起作用,而且改成有效的URL即http://dubbo.apache.org/schema/dubbo/dubbo.xsd也不起作用,无奈之下,只好在项目中建了自己的META-INF,并增加了如下三个文件:dubbo.xsd, spring.handlers, spring.schemas,其中dubbo.xsd来自dubbo的jar包,spring.handlers内容如下:

http\://dubbo.apache.org/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler

spring.schemas内容如下:

http\://dubbo.apache.org/schema/dubbo/dubbo.xsd=META-INF/dubbo.xsd

并把该META-INF拷贝到target/classes目录下方可生效,最终目录结构如下:

初学Dubbo遇到的那些坑_第1张图片

使用此方法请注意以下两个问题:

a. 想着的spring配置中也应改成http://dubbo.apache.org/schema/dubbo/dubbo.xsd

b. 加上所有的包依赖: zookeeper, dubbo, 101tec

4. 找不到对应的Bean

Problem: 启动Consumer主函数时,报找不到Bean的错误。

Root cause: 依赖缺失。

Solution: 很多问题都有可能引起这种现象,我遇到的只是其中一种,即在Spring配置中缺少相应的依赖声明,加上即可。


链接:

本文提到的demo程序

https://blog.csdn.net/noaman_wgs/article/details/70214612

https://blog.csdn.net/jingyangV587/article/details/78901937

你可能感兴趣的:(初学Dubbo遇到的那些坑)