構建源碼第一步:
必備開發環境:Java 1.5 以上的版本;Maven 2.2.1 或者以上的版本;
官網下載原始碼
官網構建文檔學習一下;
注意:需要相關資料可以關注私信
上面part介紹了dubbo源碼環境,下面將一步步踩坑構建源碼。雖然上面附屬了官方文檔連結,此處再重複說一下下載步驟:
引出一個拓展點:
平時日常開發配置maven時,需要在setting.xml引入阿里雲倉庫,一般我們百度時配置提供的基本是一種老版地址
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>123456
在解決上面依賴問題時,發現阿里雲倉庫已經進行了地址更新:阿里雲maven
注意:需要相關資料可以關注私信
官方配置指南參考:
注意:需要相關資料可以關注私信
於是,將本地maven配置setting.xml改成新的倉庫地址:
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public/</url> <mirrorOf>central</mirrorOf> </mirror>123456
以上踩坑似乎跟本地倉庫有關,在這裡分享出來,希望能夠帶給夥伴一種解決思路,遇到類似問題,不要著急,看錯誤日誌,尋找解決方案。
解決完資源依賴問題,再次輸入mvn idea:idea命令,終於迎來勝利的曙光,構建成功啦!
經歷一番折騰後,終於解決了問題,終於要準備開啟dubbo的大門啦,一探究竟~
事實告訴高興的太早了,坑啊~,繼續踩坑。
idea打開dubbo源碼,進入dubbo-demo項目
注意:需要相關資料可以關注私信
按照正常步驟,將配置文件中zookeeper註冊中心IP位址改成自己阿里雲公網地址(根據自己情況修改);
滿心歡喜啟動項目~結果:
[11/08/20 08:36:35:376 CST] main INFO imps.CuratorFrameworkImpl: Default schemaException in thread &34; java.lang.IllegalStateException: zookeeper not connected at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java:83) at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter.createZookeeperClient(CuratorZookeeperTransporter.java:26) at org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperTransporter.connect(AbstractZookeeperTransporter.java:70) at org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter$Adaptive.connect(ZookeeperTransporter$Adaptive.java) at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration.<init>(ZookeeperDynamicConfiguration.java:56) at org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory.createDynamicConfiguration(ZookeeperDynamicConfigurationFactory.java:37) at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.lambda$getDynamicConfiguration$0(AbstractDynamicConfigurationFactory.java:39) at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) at org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory.getDynamicConfiguration(AbstractDynamicConfigurationFactory.java:39) at org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration(DynamicConfiguration.java:224) at org.apache.dubbo.config.bootstrap.DubboBootstrap.prepareEnvironment(DubboBootstrap.java:1034) at org.apache.dubbo.config.bootstrap.DubboBootstrap.startConfigCenter(DubboBootstrap.java:623)1234567891011121314
心裡怒罵一聲「此處省略三個字」!!!最終屈服於它,說服自己遇到問題不要慌,分析一波吧;面對第一次處理dubbo源碼,心裡也沒有底啊。但是按照往常遇到問題的處理方式,就是看到上面的日誌,找到第一個報錯的類(為什麼呢?跟過源碼或者經驗比較豐富的夥伴應該清楚,我們開發代碼一般類似洋蔥,一層套一層,故第一個報錯的類,肯定是出問題的地方);於是乎,選中CuratorZookeeperClient.java:83此類作為突破目標;
注意:需要相關資料可以關注私信
看到了日誌報錯的地方,開始吧~擼起袖子就是幹啊;
注意:需要相關資料可以關注私信
跟進源碼我們發現了時間超時問題,我們距離成功解決問題又進了一步;故我們在配置文件中修改其連接時間:
官方文檔:dubbo:registry
接下來就是修改dubbo源碼中的配置文件:
將dubbo-provider.xml\dubbo-consumer.xml中均添加超時時間:
<dubbo:registry address=&34; timeout=&34;/>1
解決完這些問題,心裡已經不敢期望成功運行原始碼了,心裡擔憂~
小心嘗試分別運行provider、consumer主啟動類;
心裡一顆大石頭終於放下來了,踩了一路的坑,終於成功運行demo了。