商业网站开发选题的目的重庆建设局网站
news/
2025/10/3 6:27:52/
文章来源:
商业网站开发选题的目的,重庆建设局网站,网站建设的初期目标,所有代刷平台推广前言再百度或google上一搜索dubbo服务暴露过程 相关的文章已经有很多了#xff0c;但是文章基本都是基于老版本的dubbo#xff0c;当你对着文章去看下载下来的代码时#xff0c;会发现很多东西对不上#xff1b;出于此目的#xff0c;我便有了自己根据新版本#xff08;就…前言再百度或google上一搜索dubbo服务暴露过程 相关的文章已经有很多了但是文章基本都是基于老版本的dubbo当你对着文章去看下载下来的代码时会发现很多东西对不上出于此目的我便有了自己根据新版本就目前来讲的dubbo来写一些关于我自己的理解如果有不正确的地方欢迎大家指出。此篇文章主要是我对dubbo服务启动引导的理解不包括服务暴露的过程。准备我们先将dubbo的源码下载下来地址是 https://github.com/apache/dubbo啥都不说了先run起来启动zookeeper我们下载好代码直接用官方的demo来运行。不过呢你要启动zookeeper当然你启动其他的注册中心也可以不启动也可以笔者这里使用的docker来启动zookeeper方便又干净。docker run -d -P zookeeper这样我们就有了一个zookeeper的注册中心。-P的含义是随机绑定本机端口你也可以指定端口不熟悉docker的同学可以自行搜索下。接下来我们看一下zookeeper的端口号docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e22afb746c2b zookeeper /docker-entrypoint.… 3 minutes ago Up 3 minutes 0.0.0.0:32783-2181/tcp, 0.0.0.0:32782-2888/tcp, 0.0.0.0:32781-3888/tcp, 0.0.0.0:32780-8080/tcp nifty_black可以看到zookeeper的2888绑定到了我机器的32782端口另外新版的dubbo的三大中心(注册中心、配置中心、元数据中心)是分开的我们也可以使用同一个zookeeper为了简单我这里都用32782端口这个zookeeper了.配置dubbo我这里就先用dubbo-demo-xml-provider给大家做示范。将三大中心的zookeeper地址都改为zookeeper://127.0.0.1:32782,这样我们的org.apache.dubbo.demo.provider.Application就可以run起来了。beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:dubbohttp://dubbo.apache.org/schema/dubboxmlnshttp://www.springframework.org/schema/beansxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsddubbo:application metadata-typeremote namedemo-provider/dubbo:metadata-report addresszookeeper://127.0.0.1:32782/dubbo:config-center addresszookeeper://127.0.0.1:32782/dubbo:registry addresszookeeper://127.0.0.1:32782/dubbo:protocol namedubbo/bean iddemoService classorg.apache.dubbo.demo.provider.DemoServiceImpl/dubbo:service interfaceorg.apache.dubbo.demo.DemoService refdemoService//beans至此我们的dubbo provider就可以成功启动了dubbo启动过程首先看一眼我们demo的main方法public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(spring/dubbo-provider.xml);context.start();System.in.read();}很明显我们demo启动借助的spring。不过这段代码是怎么知道要启动dubbo的呢它是在spring.handlers文件中加上了如下内容http://dubbo.apache.org/schema/dubboorg.apache.dubbo.config.spring.schema.DubboNamespaceHandler
http://code.alibabatech.com/schema/dubboorg.apache.dubbo.config.spring.schema.DubboNamespaceHandlerspring.handlers在哪里呢这这里注册dubbo schemas的解析器这点就不展开讲了。在老版本的dubbo中这个类的功能也只有这一个。注册DubboBootstrapApplicationListener老版本的dubbo是通过ServiceBean继承InitializingBean来实现的而新版本的则有所改变。新版的dubbo在parse方法中调用了一个方法DubboBeanUtils#registerCommonBeans(BeanDefinitionRegistry registry)这个方法中有一行代码如下java registerInfrastructureBean(registry, DubboBootstrapApplicationListener.BEAN_NAME,DubboBootstrapApplicationListener.class);DubboBootstrapApplicationListenerDubboBootstrapApplicationListener继承自OneTimeExecutionApplicationContextEventListener,而OneTimeExecutionApplicationContextEventListener继承自ApplicationListenerDubboBootstrapApplicationListener实现了ApplicationListener的onApplicationEvent来监听spring事件当spring事件为ContextRefreshedEvent时最终会调dubboBootstrap.start();DubboBootstrapdubbo启动引导程序至此dubbo服务的启动交给了DubboBootstrap.总结老版本的dubbo是服务启动是有ServiceBean负责的ServiceBean通过继承InitializingBean进而实现setApplicationContext方法来启动dubbo服务而新版本的是从DubboNamespaceHandler中向spring注册DubboBootstrapApplicationListener来监听spring事件当事件为ContextRefreshedEvent时会启调用DubboBootstrap#start来启动dubbo服务。接下的的服务暴露等操作就交由DubboBootstrap去完成了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925589.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!