本文共 1604 字,大约阅读时间需要 5 分钟。
问题描述
淘淘商城项目作为一个SOA架构的项目,自然地会分成表现层与服务层这两层,为了各个层之间解耦合(或者最大限度地松耦合),我们使用了Dubbo这样一个alibaba开源的分布式服务框架,该框架最大的特点就是利用分层的方式来架构,从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。
但是我们在appplicationContext-service.xml文件中发布服务和在springmvc.xml文件中引用服务时,有可能即使我们配置了Dubbo约束,但是仍然会报错,会提示我们找不到dubbo:application、dubbo:registry、dubbo:protocol、dubbo:reference等元素。具体错误信息如下:
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’. - schema_reference.4: 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 xsd:schema.
appplicationContext-service.xml文件中的错误信息截图如下:
springmvc.xml文件中的错误信息也截图如下:产生原因
为什么会报这样的错误呢?因为阿里的开源网站http://code.alibabatech.com
早已经挂掉了!这就说明系统不能找到dubbo.xsd约束文件。
解决方案
由于系统不能找到dubbo.xsd约束文件,因此我们来手动添加dubbo.xsd约束文件,你可按照如下详细步骤来操作。
第一步,在本地仓库中找到下载好的dubbo-2.5.3.jar包,它里面存在一个dubbo.xsd文件。
打开该压缩包,在META-INF目录下,你会看到dubbo.xsd文件,如下图所示。 第二步,将dubbo.xsd文件取出,并将其存放在dubbo-2.5.3.jar包所在的目录下。 第三步,点击Eclipse菜单栏中的Window
菜单,然后在其下拉列表中点击Preferences
选项。 第四步,这时会弹出一个如下窗口,在其右侧找到XML
这一项并将其展开,你便会看到XML Catalog
选项,然后点击它,接着再选中User Specified Entries
,最后点击Add...
按钮。 第五步,这时会弹出一个如下窗口,然后在Key type
这一栏中选择URI,接着点击File System...
按钮,相信你又会看到一个弹窗,紧接着在该弹窗中找到dubbo.xsd约束文件,最后点击打开
按钮。 第六步,把窗口中的Key type
这一栏改选为Schema location,Key
这一栏中输入http://code.alibabatech.com/schema/dubbo/dubbo.xsd,然后点击OK
按钮。 第七步,点击如下窗口中的OK
按钮关闭该窗口。 第八步,右键相应的报红叉的配置文件,然后在其子菜单中点击Validate
,稍等片刻红叉即可消失。 转载地址:https://liayun.blog.csdn.net/article/details/107190874 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!