springboot整合dubbo
来源:互联网 发布:结伴编程 编辑:程序博客网 时间:2024/04/28 21:11
本文主要通过代码示例来说明springboot和dubbo的整合方式
以下是核心代码示例,其他的资源整合配置和spring+Dubbo相同
声明下:dubbo网址在下面配置中为占位符描述,可针对自己的网络环境配置
推荐地址code.alibabatech.com 原因会在下面说明
控制类
@SpringBootApplication@EnableConfigurationProperties@ImportResource({ "classpath:applicationContext.xml" })public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" default-autowire="byName"> <import resource="classpath:dubbo/dubbo.xml"/>
dubbo.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo网址/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://dubbo网址/schema/dubbo http://dubbo网址/schema/dubbo/dubbo.xsd" default-autowire="byName"> <dubbo:application id="dubboApplication" name="${spring.application.name}" /> <dubbo:registry id="wbPortalRegistry" address="${dubbo.registry.address}" /> <import resource="classpath:/dubbo/dubbo-provider.xml"/> <import resource="classpath:/dubbo/dubbo-consumer.xml"/></beans>
dubbo-consumer.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo网址/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://dubbo网址/schema/dubbo http://dubbo网址/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd " default-autowire="byName"> <dubbo:reference id="*" interface="*.api.*" protocol="dubbo" version="${dubbo.version}" timeout="5000" check="false" /></beans>
dubbo-provider.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo网址/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://dubbo网址/schema/dubbo http://dubbo网址/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd " default-autowire="byName"><dubbo:service interface="***" ref="*Impl" timeout="30000" protocol="dubbo" version="${provider.version}" /></beans>
注:本文是在阿里内网环境下启动OK的,然后放在外面启动确会出现异常。以下就是对问题的起因和描述
截图为异常的现象
在翻看dubbo的文档的时候发现这种问题的官方介绍如下
出现org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element怎么办?通常是在用Dubbo1.0的jar包,却用了Dubbo2.0才支持的<dubbo:registry> <dubbo:application> <dubbo:provider> <dubbo:consumer>或2.0才支持的属性。
然而我遇到这个问题的原因却不是这样的,因为我上面总结的文档是在工作环境中做的,然而文档中的dubbo网址位置的资源在外网中没有,因而会出现这种异常现象
解决方案就是本文开头声明的那样使用推荐地址即可
下面讲述下使用推荐地址的原因
这个是dubbo.jar中的结构,我标注的位置就是dubbo自定义标签的实现
然后打开spring.schemas文件
http\://code.alibabatech.com/schema/dubbo/dubbo.xsd=META-INF/dubbo.xsd
这就是标签规则xsd文件的配置
前面的地址就是我们要在配置文件中替换的地址,也可以这么说,系统启动的时候读取的xsd文件是jar中的文件,而不是配置文件中的远程资源,这也就是可以解释为什么好多的xsd配置资源我们当前环境是访问不到的,但是项目运行却没有任何的影响了
顺手在说下spring.handlers这个文件
http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler
这个里边的配置其实就是xsd规则的解析过程,源码如下
public class DubboNamespaceHandler extends NamespaceHandlerSupport { static { Version.checkDuplicate(DubboNamespaceHandler.class); } public void init() { registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true)); registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true)); registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true)); registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true)); registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true)); registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true)); registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true)); registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true)); registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false)); registerBeanDefinitionParser("annotation", new DubboBeanDefinitionParser(AnnotationBean.class, true)); }}
本文就讲解到此,更深一步的信息,有兴趣的可以跟踪上面的源码,如有疑问可以留言,期待与广大读者一起学习进步
点我查看源码
- springboot+mybatis+dubbo整合
- springboot整合dubbo
- springboot整合dubbo
- springboot整合dubbo
- springboot整合dubbo
- springboot整合dubbo-start
- Springboot Dubbo ZooKeeper整合
- SpringBoot--整合Dubbo
- Springboot+Dubbo整合
- 【四】Dubbo整合Springboot
- dubbo整合springboot入门案例
- SpringBoot与Dubbo的整合
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- SpringBoot项目中整合dubbo/zookeeper实战
- SpringBoot下的Dubbo和Zookeeper整合
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- BZOJ2067 [Poi2004]SZN
- 《大话数据结构》读书笔记(一)——数据结构基础和算法
- SSH框架流程说明(SSH框架各框架整合说明)
- equals与==的区别
- 人物 | 思岚科技CEO陈士凯: 为用户提供高性价比机器人定位导航产品是我们的使命
- springboot整合dubbo
- 单例设计模式
- Mysql java connector 与MySQL版本对应关系
- 2. Add Two Numbers
- Java权限修饰符
- React Native 随笔
- 自定义实数及其数组
- Dalvik opcodes
- Android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput