dubbo 入門教程 基於zookeeper

從上午發佈的安裝zookeeper 遇到的第一個錯誤開始 一直在搞dubbo 中午吃了飯 睡了會覺 。中間錯誤一個又一個 慢慢的都解決了。小有成就,哈哈。算這個星期天沒有白費吧。html

 

學習的過程值得留戀。分享一下吧java

只是以前聽網友提過dubbo這個東西 一直都沒有百度和使用過。前天答應老闆 咱們框架中留一個口出來 給dubbo 。今每天氣熱 就在宿舍研究吧。git

 

首先是百度 知道是作什麼的 後來就開始找教程 可是你們都知道 百度的教程 基本都是一個模板。看了大概有20篇 基本就換換字 代碼 都是同樣的。試了一下 不行 也不報錯 也不知道在哪裏入口。後來想一想必定是不行 換一種方式吧 直接用main方法啓動服務的方式。百度了一推 仍是同樣的模板 就是maven 可是哥沒有使用過maven。在關鍵的時候還要研究一下maven 比較耗時間了。後來準備放棄的時候 聊會天,繼續找有權威性的 找到dubbo的團隊提供出來的。繼續 發現spring的xml報錯。後來瀏覽器訪問啊 ping 啊 各類嘗試 最後不行。再微博上看了dubbo發佈的 在14年的時候 域名綁定就換成dubbo.io了 後來在這個網上看到了一個下載。是github 而後進去看看。 下載了2個demo。一個是基於http的,還有一個是基於ws也就是websevice的。看了一下 都是基於maven的。有點惱火了。剛剛開始百度的時候 第一步就是用zookeeper。最後官網給的例子不是zookeeper。繼續看以前的例子,(總不能放棄吧)。仍是沒有結果。想一想 先一步一步來吧。 因而新建了一個web項目 放入spring對應的包。找到dubbo的包 放了進來,而後找到zookeeper的包 放進來, 寫一個接口 寫一個實現類,配置文件就用的百度過來的,開始不明白,看了不少資料 本身也開始慢慢地理解過來了,因而在main裏面啓動服務,錯誤,說找不到類,好辦了 我想必定是個人zookeeper的client沒有加,可是我是服務器這邊的 應該是不要的 想一想  先加進去試試。服務器啓動 再次報錯。有看了一下包名 不是這個開放團隊的client。再找 放進去 試試。仍是對 少各類class 一個一個找 放進去。還不錯 對了。服務啓動  不抱錯了,而後任何提示 啓動成功的標誌都沒有 以後就學網上的人 在start 後面打印一句話。打印不出來,怎麼回事呢。難道仍是不對,百思不得其解。後來在想一想 我是同時zookeeper註冊的 個人zookeeper沒有開。打開zookeeper。再次啓動 對了。那叫一個興奮。服務端就這樣好了。github

客戶端就直接copy網上的代碼,調用成功。 開始聊天 吹牛逼、。終於成功了。後來發現個人服務端和客戶端都在一個項目上面的。而後在新建一個項目 放客戶端。繼續報錯。 說找不到方法。找到對應的類下面的方法。是有的啊。難道是緩存。clear一下。仍是不對。頭暈了。準備放棄了。實在沒有辦法了。準備換http或者是ws的了。休息一下 喝杯水。想到了 難道是版本的問題。 找到上午發佈文章的zookeeper下載的鏈接,下載了一個3.3.6的版本的zookeeper.jar放進去,好了。測試幾回 真的是好了。哈哈web

 

上面的話是寫給我本身的 下面的教程是寫給你們的。哈哈 有想法的能夠評論 ;spring

第一步 在spring官網下載一個spring比較全的包。 我用的仍是之前的3.2api

第二步 新建一個web項目。將spring的包放在lib下面。瀏覽器

第三步 在dubbo.io官網的版本庫下載dubbo的jar包。緩存

第四步 在Apache的官網下載zookeeper的項目。 zookeeper的安裝方法在上篇文章講過了。拿出zookeeper根目錄下面的zookeeper.jar就能夠。服務器

附加一些jar 工程下面有的 能夠無視。slf4j-api-1.7.5.jar,slf4j-log4j12-1.7.5.jar,netty-3.7.0.Final.jar,jetty-util-6.1.26.jar,jetty-6.1.26.jar,commons-cli-1.2.jar 這些jar在zookeeper3.5的lib下面都有。直接拷貝就能夠。

還有一個就是zkclient-0.1.0.jar 必定要下載I0Itec的,這個應該不是zk開發的。這個我也忘記在哪裏下載的了。很差意思。要是須要的能夠在下面評論 留個郵箱什麼的。

下面新建一個接口:

package com.unj.dubbotest.provider;
public abstract interface DemoService {
 
 public abstract String build(String name) throws Exception;
 
}

新建一個實現類

package com.unj.dubbotest.provider.impl;
import com.unj.dubbotest.provider.DemoService;
public class DemoServiceImpl implements DemoService {
 public String build(String name) throws Exception {
  System.out.println("name is === " + name);
  return "你好 名稱是 ------------- >>>> " + name;
 }
}

在src下面新建一個applicationContext.xml 內容以下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        ">
 <!-- 具體的實現bean -->
 <bean id="demoService"
  class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />
 <!-- 提供方應用信息,用於計算依賴關係 -->
 <dubbo:application name="xixi_provider" />
 <!-- 使用multicast廣播註冊中心暴露服務地址 
  <dubbo:registry address="multicast://224.5.6.7:1234" />-->
 <!-- 使用zookeeper註冊中心暴露服務地址 -->
 <dubbo:registry address="zookeeper://127.0.0.1:2181" />
 <!-- 用dubbo協議在20880端口暴露服務 -->
 <dubbo:protocol name="dubbo" port="20880" />
 <!-- 聲明須要暴露的服務接口 -->
 <dubbo:service interface="com.unj.dubbotest.provider.DemoService"
  ref="demoService" />
</beans>

最後寫一個啓動服務的類 (用過cxf的都知道)

package com.unj.dubbotest.provider;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
 
    public static void main(String[] args) throws Exception {
     
     ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});
        context.start();
 
        System.out.println("新浪微博:瘋狂的楊中仁.");
        
        System.in.read(); // 按任意鍵退出
    }
 
}

啓動zookeeper。在執行啓動服務的類 控制檯打印了以下信息

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version
新浪微博:瘋狂的楊中仁.

說明啓動成功了。

下面在作客戶端。贊成 新建一個web項目 把服務端的jar所有拷貝到lib下面去。

新建一個接口 包名和服務端同樣 這邊接口 其實要在服務器那邊拿過來的。

package com.unj.dubbotest.provider;
public abstract interface DemoService {
 
 public abstract String build(String name) throws Exception;
 
}

在src下面新建一個 applicationConsumer.xml文件。內容以下:

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 xsi:schemaLocation="http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://code.alibabatech.com/schema/dubbo  
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd  
        ">
 <!-- consumer application name -->
 <dubbo:application name="consumer-of-helloworld-app" />
 <!-- registry address, used for consumer to discover services -->
 <dubbo:registry address="zookeeper://127.0.0.1:2181" />
 <dubbo:consumer timeout="5000" />
 <!-- which service to consume? -->
 <dubbo:reference id="demoService"
  interface="com.unj.dubbotest.provider.DemoService" />
</beans>

新建一個main類來測試:

package com;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.unj.dubbotest.provider.DemoService;
public class Main {
 
 public static void main(String[] args) {
  
  
  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
    new String[] { "applicationConsumer.xml" });
  context.start();
  DemoService demoService = (DemoService) context.getBean("demoService"); // get
  // service
  // invocation
  // proxy
  String hello = "";
  try {
   hello = demoService.build("新浪微博:瘋狂的楊中仁");
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } // do invoke!
  System.out.println(Thread.currentThread().getName() + " " + hello);
 }
 
}

打印信息以下:

 log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
main 你好 名稱是 ------------- >>>> 新浪微博:瘋狂的楊中仁

在看一下服務器端打印的信息

 

這樣就是dubbo 基於zookeeper。是客戶端的 web尚未測試。 http,ws 也會在這幾天寫出來。

下文將介紹基於web容器的。

我想共享一些準備好的jar出來,可是沒找到地方,看csdn 可是容量小。求方案。

相關文章
相關標籤/搜索