當前位置:首頁 » 城管服務 » 啟動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