# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. dataDir=/tmp/zookeeper # the port at which the clients will connect clientPort=2181
dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest
address:zookeeper 的ip地址 後面是端口號 ,和zookeeper中配置的端口號一樣
修改完成後需要一個tomcat 打開tomcat \webapps\ROOT 目錄 ,此目錄放置的是tomcat的首頁,刪除所有的文件,將解壓後修改好的所有的dubbo-admin 裡的文件復制到 \webapps\ROOT中,
此時我們已經配置好了。現在可以啟動tomcat了 (主意:在啟動tomcat之前要先啟動zookeeper ,啟動zookeeper前面有介紹)。 啟動tomcat之後 在浏覽器輸入 http://localhost:8080 (我的是8083) 進入dubbo管控台的主頁
用戶名和密碼就是dubbo.properties 中配置的 默認的是 用戶名 :root, 密碼:root
輸入用戶名和密碼之後 進入首頁
當然現在還沒有 消費者 和 提供者 現在我們來開發 消費者 和 提供者 配置 好 zookeeper之後 搭建 maven+springmvc+dubbo環境 新建3個maven項目 1,test-dubbo-provider ,java項目,作為提供者,serviceImpl 和dao 層 2,test-public-interface ,java項目,存放公共的接口 ,servicei 是service的接口 (備注:1要依賴2, 3也要依賴2) 3,test-web-consumer,web項目,存放 Controller 和 頁面 首先我們來開發 服務的提供者也就是 test-dubbo-provider ,目錄結構為 ApplicationContent-dubbo.xml dubbo服務的配置文件(名字隨意) (待會再介紹) ApplicationContent.xml spring的配置文件 這兩個配置文件 必須要放到 MATE-INF/spring/下面 (原因後面再說) UserServiceImpl.java 借口的實現類
package com.cl.user.serviceImpl; import org.springframework.stereotype.Service; import com.cl.user.servicei.UserService; @Service("userService") public class UserServiceImpl implements UserService{ @Override public String sayHello() { System.out.println("hello world----------------------------"); return "hello world"; } }有了 實現類 還需要接口 也就是項目test-public-interface 這個項目很簡單 只需要 接口 就行了
package com.cl.user.servicei; public interface UserService { public String sayHello(); }
當然 項目 1 要 依賴 項目 2
所以在1 的 pom.xml 中 有
1 <dependency> 2 <groupId>test-web</groupId> 3 <artifactId>test-pubilc-interface</artifactId> 加入項目2依賴 4 <version>0.0.1-SNAPSHOT</version> 5 <scope>test</scope> 6 </dependency>
那麼 1 中的 UserServiceImpl 就可以實現 UserService接口
當然我們用到 dubbo 就要有dubbo的核心jar包 所以在1 的 pom.xml 中 有1 <dependency> 2 <groupId>com.alibaba</groupId> 3 <artifactId>dubbo</artifactId> 4 <version>2.5.3</version> 5 </dependency>
還要有 zookeeper的 所以在1 的 pom.xml 中 有
1 <dependency> 2 <groupId>org.apache.zookeeper</groupId> 3 <artifactId>zookeeper</artifactId> 4 <version>3.3.3</version> 5 </dependency>
下面介紹一下項目1 中 的 ApplicationContent-dubbo.xml 和 ApplicationContent.xml
ApplicationContent.xml 主要是spring的配置 不多說。1 <!-- 啟動組件掃描,排除@Controller組件,該組件由SpringMVC配置文件掃描 --> 2 <context:component-scan base-package="com.cl.user.serviceImpl"/>
ApplicationContent-dubbo.xml dubbo服務的配置
1 <!-- 提供方應用信息,用於計算依賴關系 --> 2 <dubbo:application name="hehe_provider" /> 3 <!-- 使用zookeeper注冊中心暴露服務地址 端口是zookeeper 中配置的2181--> 4 <dubbo:registry address="zookeeper://127.0.0.1:2181"/> 5 <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> --> 6 <!-- 用dubbo協議在20880端口暴露服務 --> 7 <dubbo:protocol name="dubbo" port="20880" /> 8 <!-- 具體的實現bean --> 9 <bean id="userService" class="com.cl.user.serviceImpl.UserServiceImpl" /> 10 <!-- 聲明需要暴露的服務接口 --> 11 <dubbo:service interface="com.cl.user.servicei.UserService" ref="userService" />
主意:有可能你的配置文件中不識別 <dubbo:> 去網上找解決的辦法
到這裡我們的 “提供者” 即 服務 已經開發完了,那麼如何啟動服務呢? 在項目1中有個start.java
1 package com.test; 2 3 import org.apache.log4j.PropertyConfigurator; 4 5 public class start { 6 static{ 7 PropertyConfigurator.configure("src/main/resources/log4j.properties"); 8 } 9 public static void main(String[] args) { 10 11 com.alibaba.dubbo.container.Main.main(args); 12 } 13 }
主意裡面有main方法,可以直接運行啟動了。別急!!! 之前還有個問題就是為什 ApplicationContent-dubbo.xml 和 ApplicationContent.xml 這兩個配置文件 必須要放到 /MATE-INF/spring/下面
因為 com.alibaba.dubbo.container.Main.main(args) 默認就會去加載 /MATE-INF/spring/ 下的配置文件
我們來看一下源碼
看完源碼 這下明白為什麼了吧!!!!!!!!!!!!!!!!! 啟動服務後 我們在 dubbo-admin中就能看到我們剛才開發的的 “提供者” 192.168.56.1 是本地局域網 地址 這是 “提供者” 此時還沒有“消費者” 接下來我們就要開發 “消費者”