查看dubbo端口(如何修改并获得dubbo服务的端口号)

2024-10-08 22:51:14 1

查看dubbo端口(如何修改并获得dubbo服务的端口号)

本篇文章给大家谈谈查看dubbo端口,以及如何修改并获得dubbo服务的端口号对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

如何修改并获得dubbo服务的端口号

package com.github.doctor.dubbo.config;import java.util.Map;import java.util.Map.Entry;import javax.annotation.PostConstruct;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.stereotype.Component;import com.alibaba.dubbo.common.utils.NetUtils;import com.alibaba.dubbo.config.ProtocolConfig;/** * 这是一个进程启动多个dubbo服务的DubboPortHandler另一种写法。以前的方案见DubboNamespaceHandlerEx * 利用spring修改受spring管理bean的属性信息 * * @author doctor * * @time 2014年12月31日 上午9:43:52 */@Componentpublic class DubboPortHandler2 {@Autowiredprivate ApplicationContext applicationContext;private int port = 20080;@PostConstructpublic void init() {Map《String, ProtocolConfig》 beansOfType = applicationContext.getBeansOfType(ProtocolConfig.class);for (Entry《String, ProtocolConfig》 item : beansOfType.entrySet()) {port = NetUtils.getAvailablePort();item.getValue().setPort(port);}}public int getPort() {return port;}}

dubbo是如何启动的

已知,在项目启动过程中,我们会将dubbo的配置文件写到spring的配置文件里,如下xml文件:

《dubbo:application name="anyname_provider" /》《!-- 使用zookeeper注册中心暴露服务地址 --》《dubbo:registry address="zookeeper://127.0.0.1:2181" /》《!-- 用dubbo协议在20880端口暴露服务 --》《dubbo:protocol name="dubbo" port="20880" /》《!-- 声明需要暴露的服务接口 --》《dubbo:service interface="com.shxz130.provider.Provider"ref="demoService" /》

从官方文档中,我们能看到如下:

启动过程.png

也就是说spring启动过程中,随着Spring在初始化过程中,碰到dubbo命名的标签,如(《dubbo:service》,《dubbo:registry》)等标签,会由DubboNamespaceHandler类处理,具体原理见链接Spring自定义标签

DubboBeanDefinitionParser代码如下:

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 AnnotationBeanDefinitionParser());}}

遇到不同的标签,会由不同的Parser处理,这里重点看服务发布,这行代码:

registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));

也就是说,当Spring容器处理完《dubbo:service》标签后,会在Spring容器中生成一个ServiceBean ,服务的发布也会在ServiceBean中完成。不妨看一下ServiceBean的定义:

public class ServiceBean《T》 extends ServiceConfig《T》 implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener《ContextRefreshedEvent》, BeanNameAware {}

该Bean实现了很多接口,关于InitializingBean,DisposableBean,ApplicationContextAware,BeanNameAware,这些接口的使用介绍如下链接:

  • InitializingBean&DisposableBean

  • BeanNameAware& ApplicationContextAware

  • 而在Spring初始化完成Bean的组装,会调用InitializingBean的afterPropertiesSet方法,在Spring容器加载完成,会接收到事件ContextRefreshedEvent,调用ApplicationListener的onApplicationEvent方法。

    在afterPropertiesSet中,和onApplicationEvent中,会调用export(),在export()中,会暴露dubbo服务,具体区别在于是否配置了delay属性,是否延迟暴露,如果delay不为null,或者不为-1时,会在afterPropertiesSet中调用export()暴露dubbo服务,如果为null,或者为-1时,会在Spring容器初始化完成,接收到ContextRefreshedEvent事件,调用onApplicationEvent,暴露dubbo服务。

    部分ServiceBean的代码如下:

  • public class ServiceBean《T》 extends ServiceConfig《T》 implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener《ContextRefreshedEvent》, BeanNameAware { //Spring容器初始化完成,调用
  • public void onApplicationEvent(ContextRefreshedEvent event) {        if (isDelay() && !isExported() && !isUnexported()) {            if (logger.isInfoEnabled()) {
  •                logger.info("The service ready on spring started. service: " + getInterface());
  •            }            //暴露服务
  •            export();
  •        }
  •    }    //判断是否延迟发布
  •  private boolean isDelay() {
  •        Integer delay = getDelay();
  •        ProviderConfig provider = getProvider();        if (delay == null && provider != null) {
  •            delay = provider.getDelay();
  •        }        return supportedApplicationListener && (delay == null || delay == -1);
  •    } //当bean初始化完成调用
  • public void afterPropertiesSet() throws Exception {        //......此处省略10000行代码
  •        if (!isDelay()) {            //暴露服务
  •            export();
  •        }
  •    }
  • }
  • 在export(),暴露服务过程中,如果发现有delay属性,则延迟delay时间,暴露服务,如果没有,则直接暴露服务。

  • public synchronized void export() {        //忽略若干行代码
  •        if (delay != null && delay 》 0) {            //当delay不为null,且大于0时,延迟delay时间,暴露服务
  •            delayExportExecutor.schedule(new Runnable() {                public void run() {                    //暴露服务
  •                    doExport();
  •                }
  •            }, delay, TimeUnit.MILLISECONDS);
  •        } else {            //直接暴露服务
  •            doExport();
  •        }
  •    }
  • 而在doExport()中,验证参数,按照不同的Protocol,比如(dubbo,injvm)暴露服务,在不同的zookeeper集群节点上注册自己的服务。

  • protected synchronized void doExport() {         //忽略10000行代码
  •        doExportUrls();        //忽略10000行代码
  •    } private void doExportUrls() {
  •        List《URL》 registryURLs = loadRegistries(true);        for (ProtocolConfig protocolConfig : protocols) {            //按照不同的Protocal暴露服务
  •            doExportUrlsFor1Protocol(protocolConfig, registryURLs);
  •        }
  •    }
  • 作者:一滴水的坚持***隐藏网址***来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

dubbo服务器线程使用情况查看

在dubbo服务器上,执行telnet可进入dubbo命令控制行: 点击回车,进入dubbo控制台 ls 显示服务列表。 ls -l 显示服务详细信息列表。 ls XxxService 显示服务的方法列表。 ls -l XxxService 显示服务的方法详细信息列表。 ps 显示服务端口列表。 ps -l 显示服务地址列表。 ps 20880 显示端口上的连接信息。 ps -l 20880 显示端口上的连接详细信息。 trace XxxService 跟踪1次服务任意方法的调用情况。 trace XxxService 10 跟踪10次服务任意方法的调用情况。 trace XxxService xxxMethod 跟踪1次服务方法的调用情况 trace XxxService xxxMethod 10 跟踪10次服务方法的调用情况。

linux查看dubbo注册哪些服务

直连加不发布服务DUBBO的配置属性里面对消费端提供了不从注册中心发现服务的机制,直接配置远程接口的地址,这样可以保证消费端连接到制定的环境接口。这样消费端是解决了问题,但是服务提供端呢?如上图的B1它即是消费端也是服务提供端,它提供A1所依赖的接口,那么如果B1将它的服务发布到注册中心里面(这里需要提醒,STABLE环境机制里面所有子环境公用一个注册中心),那么势必会导致stable环境里面的A会发现B1提供的服务?势必会导致stable环境的不稳定(stable环境的机制是stable环境只能进不能出,就是不能调用外部其他子环境的服务)?所以B1不能发布服务到注册中心,dubbo也提供了相关的配置属性来支持这一点。下面我例举出通过哪些配置可以实现这种方案:服务消费端:DUBBO在消费端提供了一个url的属性来指定某个服务端的地址《!--lang:xml--》《dubbo:reference interface="com.alibaba.dubbo.demo.HelloWorldService" check="false" id="helloWorldService"/》默认的方式是从注册中心发现接口为com.alibaba.dubbo.demo.HelloWorldService的服务,但是如果需要直连,可以在dubbo.properties下面配置dubbo.reference.helloWorldService.url=dubbo://ip:port/com.alibaba.dubbo.demo.HelloWorldService可以通过配置dubbo.reference.url=dubbo://ip:port/来让某个消费者系统的服务都指向制定的服务器地址(关于配置信息可以参考《DUBBO配置规则详解》)

关于本次查看dubbo端口和如何修改并获得dubbo服务的端口号的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

查看dubbo端口(如何修改并获得dubbo服务的端口号)

本文编辑:admin

更多文章:


指针二维数组函数最大值(用函数求一个二维数组的最大值及其行下标和列下标)

指针二维数组函数最大值(用函数求一个二维数组的最大值及其行下标和列下标)

本文目录用函数求一个二维数组的最大值及其行下标和列下标C语言程序,急用指针实现:找出二维数组(设3行4列)中的最大数及其位置C语言设计函数:接受一个二维数组,用指针方式返回数组的最大值,最小值二维数组指针问题求二位数组的最大值c语言用指针找

2024年7月12日 15:22

等离子滑块轴承(数控等离子切割机z轴不工作怎么办)

等离子滑块轴承(数控等离子切割机z轴不工作怎么办)

本篇文章给大家谈谈等离子滑块轴承,以及数控等离子切割机z轴不工作怎么办对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录数控等离子切割机z轴不

2024年10月4日 23:15

mapgis(mapgis与arcgis的区别)

mapgis(mapgis与arcgis的区别)

本文目录mapgis与arcgis的区别Mapgis软件是做什么的mapgis是什么mapgis与arcgis的区别一、软件的研发开发区别:mapgis是由中国地质大学开发的通用工具型地理信息系统软件,而arcgis是由美国ESRI公司美国

2024年5月23日 15:14

supervise的词根词缀(1.4从词根看词缀)

supervise的词根词缀(1.4从词根看词缀)

本文目录1.4从词根看词缀英语单词词根以vis为词根的单词英语||常用词根词缀(词根篇)求英语词根词缀,最好有例子英语词根及构词法初中英语单词整理之词根归类1.4从词根看词缀前言 从词根出发探讨词缀问题。借此机会还分析了词根与词缀间的对

2024年7月23日 00:50

view的用法和例句(词汇精选:view的用法和辨析)

view的用法和例句(词汇精选:view的用法和辨析)

本文目录词汇精选:view的用法和辨析sight,view,scene和scenery有什么区别词汇精选:view的用法和辨析 一、详细释义: n. 看法,观点 例句: We take an optimistic view

2024年7月22日 13:58

编程用什么笔记本电脑(编程用什么笔记本)

编程用什么笔记本电脑(编程用什么笔记本)

大家好,如果您还对编程用什么笔记本电脑不太了解,没有关系,今天就由本站为大家分享编程用什么笔记本电脑的知识,包括编程用什么笔记本的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录编程用什么笔记本数控建模编程用什么笔记

2024年10月8日 12:50

java论坛管理系统(java实现论坛权限管理)

java论坛管理系统(java实现论坛权限管理)

本文目录java实现论坛权限管理java后台管理系统的功能有什么如何做一个java管理系统用Java做一个xx管理系统,需要用到哪些Java技术求详细解释下求毕业设计-基于Java的网上论坛系统论文用java技术开发一个论坛要求该论坛提供良

2024年7月8日 05:39

promise链式调用(promise什么意思 解析promise的含义和用法)

promise链式调用(promise什么意思 解析promise的含义和用法)

“promise链式调用”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看promise链式调用(promise什么意思 解析promise的含义和用法)!本文目录promise什么意思 解析promise的含义和用法Prom

2024年8月6日 03:10

edittext什么意思(安卓怎么让edittext输入中文)

edittext什么意思(安卓怎么让edittext输入中文)

本文目录安卓怎么让edittext输入中文Android 下设置TextView和EditText的区别和联系分别是什么安卓怎么让edittext输入中文首先本来就能输入中文,我想你的意思是仅限输入中文吧,edittext有一个属性andr

2024年7月22日 15:26

安卓轮播图代码(请问这组图片轮播的代码怎么写http://sc.chinaz.com/jiaobendemo.aspxdownloadid=14728150722208)

安卓轮播图代码(请问这组图片轮播的代码怎么写http://sc.chinaz.com/jiaobendemo.aspxdownloadid=14728150722208)

本文目录请问这组图片轮播的代码怎么写http://sc.chinaz.com/jiaobendemo.aspxdownloadid=14728150722208如何在同一个页面里放置多个这样的图片轮播代码(现在只有最上面的有轮播效果)请问这

2024年7月11日 06:14

先学vue还是先学ajax(不会ajax可以学vue吗)

先学vue还是先学ajax(不会ajax可以学vue吗)

本文目录不会ajax可以学vue吗学vue要学ajax吗javascript和ajax先学哪种web前端工程师进阶学习路线如何走Web前端入门需要先学什么不会ajax可以学vue吗感觉二者不冲突啊,前端与后端进行数据交互就应该用到ajax。

2024年7月20日 11:42

sql truncate(sql语句中删除表数据drop,truncate和delete的区别)

sql truncate(sql语句中删除表数据drop,truncate和delete的区别)

大家好,sql truncate相信很多的网友都不是很明白,包括sql语句中删除表数据drop,truncate和delete的区别也是一样,不过没有关系,接下来就来为大家分享关于sql truncate和sql语句中删除表数据drop,t

2024年7月18日 22:45

pscs6自学入门完整教程视频(photoshop cs6新手入门视频教程,我想找写关于ps cs6视频教程)

pscs6自学入门完整教程视频(photoshop cs6新手入门视频教程,我想找写关于ps cs6视频教程)

本文目录photoshop cs6新手入门视频教程,我想找写关于ps cs6视频教程求中文版Photoshop CS6完全自学教程(视频)!!!!!!!!!!!求中文版Photoshop CS6完全自学基础知识入门到精通视频教程 求好心人中

2024年7月18日 07:36

华为路由器ospf配置命令(怎样配置华为ospf)

华为路由器ospf配置命令(怎样配置华为ospf)

本文目录怎样配置华为ospf华为设备上查看ospf链路状态数据库信息可以使用以下哪个命令华为路由器交换机配置命令大全华为网关配置命令华为交换机路由配置命令华为认证ospf配置命令华为ensp路由器ospf怎么配置华为路由器的配置命令,谁能详

2024年6月12日 13:49

在线获取网页源码工具(用手机怎么查看网页的源代码)

在线获取网页源码工具(用手机怎么查看网页的源代码)

本文目录用手机怎么查看网页的源代码如何查找网页的源代码什么手机浏览器支持查看网页源码请教:如何查看网页源代码的工具或方法用手机怎么查看网页的源代码1、首先在电脑上打开谷歌浏览器的右边的菜单。    2、在更多工具中找到“开发者工具”。   

2024年5月23日 03:14

电脑代码装逼(打代码什么电脑好)

电脑代码装逼(打代码什么电脑好)

本文目录打代码什么电脑好火车上敲代码是怎么样的体验除了娱乐消遣,电脑还可以做什么有价值的东西不怎么玩游戏,写代码对电脑有一定要求,有什么推荐的电脑吗打代码什么电脑好不是说mac就好,windows的就不好。用什么电脑好,重要的是看你的需求。

2024年7月3日 17:57

长沙小程序开发制作(长沙小程序开发需要多少费用)

长沙小程序开发制作(长沙小程序开发需要多少费用)

大家好,今天小编来为大家解答以下的问题,关于长沙小程序开发制作,长沙小程序开发需要多少费用这个很多人还不知道,现在让我们一起来看看吧!本文目录长沙小程序开发需要多少费用长沙小程序开发费用是多少湖南哪个小程序开发公司更专业长沙小程序开发公司哪

2024年9月9日 07:06

c程序设计软件下载(请问在哪里下载C语言程序设计的上机操作的软件啊)

c程序设计软件下载(请问在哪里下载C语言程序设计的上机操作的软件啊)

本文目录请问在哪里下载C语言程序设计的上机操作的软件啊求适合apple macbook c语言程序设计的程序软件下载c语言程序设计用什么软件啊谁知道学习C语言程序设计比较好的上机软件是什么初级那种的 谁给我个下载地址 或者发到我QQ上请问在

2024年7月23日 03:23

sidebar下载(自己下载的gadgets,是不是就会有两个sidebar进程能弄成一个吗)

sidebar下载(自己下载的gadgets,是不是就会有两个sidebar进程能弄成一个吗)

本文目录自己下载的gadgets,是不是就会有两个sidebar进程能弄成一个吗如何让wordpress具有下载文件功能下载了Windows Sidebar Styler2.0.6,无法使用Windows Sidebar Propertie

2024年6月3日 20:52

java运行软件卡死(java 程序运行到一半出现 toString() unavailable - no suspended threads ,然后就卡死在哪里不运行)

java运行软件卡死(java 程序运行到一半出现 toString() unavailable - no suspended threads ,然后就卡死在哪里不运行)

各位老铁们好,相信很多人对java运行软件卡死都不是特别的了解,因此呢,今天就来为大家分享下关于java运行软件卡死以及java 程序运行到一半出现 toString() unavailable - no suspended threads

2024年7月20日 02:30

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1736
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索