当前位置:首页 » 城管服务 » 启动dubbo服务

启动dubbo服务

发布时间: 2021-02-17 10:49:29

① DUBBO启动时报错,怎么解决

1. 查看配置项是否有问题 2. jar包是否冲突 建议,先按官方的例子部署,把能对外提供服务了再加入自己的业务

② bbo是如何启动的

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

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

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

启动过程.png

也就是说spring启动过程中,随着Spring在初始化过程中,碰到bbo命名的标签,如(<bbo:service>,<bbo: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("mole", new DubboBeanDefinitionParser(MoleConfig.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 ());
}
}

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

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

也就是说,当Spring容器处理完<bbo: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()中,会暴露bbo服务,具体区别在于是否配置了delay属性,是否延迟暴露,如果delay不为null,或者不为-1时,会在afterPropertiesSet中调用export()暴露bbo服务,如果为null,或者为-1时,会在Spring容器初始化完成,接收到ContextRefreshedEvent事件,调用onApplicationEvent,暴露bbo服务。

    部分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.schele(new Runnable() { public void run() { //暴露服务

  • doExport();

  • }

  • }, delay, TimeUnit.MILLISECONDS);

  • } else { //直接暴露服务

  • doExport();

  • }

  • }

  • 而在doExport()中,验证参数,按照不同的Protocol,比如(bbo,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);

  • }

  • }



  • 作者:一滴水的坚持
    链接:https://www.jianshu.com/p/7f3871492c71
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

③ bbo zookeeper哪个先启动

zookeeper先启动,而后bbo在zookeeper上注册节点

④ 如何查看bbo服务是否启动

BSE.Windows.Forms 这套控件提供一复组类似outlook的折叠式菜制单组件和可以更换皮肤的pannel,国外的开源控件组。2.0的控件,我在08下编译也很正常,很实用,建议楼主使用。网上蛮多地方都提供有下载的。

⑤ sprint boot启动bbo怎么阻塞

<!-- 具体的实现bean -->
<bean id="demoService"
class="com.unj.bbotest.provider.impl.DemoServiceImpl" />
<!-- 提供方应用信息,用于计算依赖关系 -->
<bbo:application name="xixi_provider" />
<!-- 使用multicast广播注册中心暴露服务地址
<bbo:registry address="multicast://224.5.6.7:1234" />-->
<!-- 使用zookeeper注册中心暴露服务地址 -->
<bbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用bbo协议在20880端口暴露服务 -->
<bbo:protocol name="bbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<bbo:service interface="com.unj.bbotest.provider.DemoService" version="mys"
ref="demoService" />
</beans>

⑥ 2个bbo应用存在互相调用,怎么启动

bbo启动有一个选项:即是否检查依赖的服务是否启动,把这个选项置为内false就可以了。

这个是从容文档上面摘下来的:

<bbo:reference interface="com.foo.BarService" check="false" />

⑦ 启动bbo服务jar包运行时间很久是什么原因导致的

web 层应该调用service层,在service层才调用bbo的service是比较合理的,因为在service层可能会调用多个bbo service,这些都版属于业务逻辑代码权,在这里可以进行单元测试,如果你在web层,单元测试实现比较困难

⑧ 如何启动bbo服务 servlet容器 实例

bbx虽然是基于jboss的resteasy实现restfull,但是对resteasy原生的配置却不支持(可能是考

⑨ 如何查看bbo 微服务正常启动

关于bbo的使用场景,这个要从系统的演变开始将起,既然bbo的使专用很多是在电商属系统中,那么就从电商系统的演变开始讲起。一个简单的电商网站说起,它可能包含如下的几个模块和功能,如首页、detail页、list页、下单页、支付页以及后台管理等...

热点内容
影视转载限制分钟 发布:2024-08-19 09:13:14 浏览:319
韩国电影伤口上纹身找心里辅导 发布:2024-08-19 09:07:27 浏览:156
韩国电影集合3小时 发布:2024-08-19 08:36:11 浏览:783
有母乳场景的电影 发布:2024-08-19 08:32:55 浏览:451
我准备再看一场电影英语 发布:2024-08-19 08:14:08 浏览:996
奥迪a8电影叫什么三个女救人 发布:2024-08-19 07:56:14 浏览:513
邱淑芬风月片全部 发布:2024-08-19 07:53:22 浏览:341
善良妈妈的朋友李采潭 发布:2024-08-19 07:33:09 浏览:760
哪里还可以看查理九世 发布:2024-08-19 07:29:07 浏览:143
看电影需要多少帧数 发布:2024-08-19 07:23:14 浏览:121