簡易入門的Dubbo例項-自己建立的
使用maven工程建立
先建立介面端api,再建立服務提供端provider,最後建立服務消費端consumer
一、建立介面工程API
1、建立maven工程,選擇quickstart選項,之後groupid取名為com.excel,代表公司組織名稱,artifact取名為dubboapi,代表工程的名字:
2、建立介面和實體類
介面類定義如下:
package com.excel.dubboapi.intf;
import java.util.List;
import com.excel.dubboapi.model.Product;
public
public List<Product> listAllProducts();
public Product getProductById(int id);
}
實體類定義如下:
package com.excel.dubboapi.model;
import java.io.Serializable;
public class Product implements Serializable{
private static final long serialVersionUID = -4177152068720868250L;
private int id;
private String code;
private String name;
private String remark;
}
自行補齊gettter、setter方法。
到此完成了介面端的建立,介面類不需要依賴任何jar包。
二、建立服務提供端Provider
1、建立maven工程,選擇quickstart選項,之後groupid取名為com.excel,代表公司組織名稱,artifact取名為dubboprovider,代表工程的名字:
截圖省略。。。。仿照前面的建立過程即可。
2、修改pom.xml檔案
設定需要的jar包,pom.xml檔案內容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.excel</groupId>
<artifactId>dubboprovider</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>dubboprovider</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
</dependency>
<!-- need curator,if not,it will case exception: java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy -->
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>com.excel</groupId>
<artifactId>dubboapi</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
在provider端,必須要有dubbo、zookeeper、curator-recipes這3個jar包。
由於要實現api,則需要加入dubboapi的包,也就是前面的介面端的工程。
3、建立介面實現類
3.1在src/main/java目錄下,建立com.excel.dubboprovider.main包,用於存放啟動dubbo容器的Main函式,具體如下:
package com.excel.dubboprovider.main;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ProviderMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("classpath:prodiver-zookeeper.xml");
app.start();
System.out.println("Provider Server Started!");
try {
System.out.println("Input Anything will stop the Provider Server");
System.in.read();
app.close();
System.out.println("Provider Server Stoped!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.2在src/main/java目錄下,建立com.excel.dubboprovider.service.impl包,用於存放實現介面方法的實現類,具體如下:
package com.excel.dubboprovider.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.excel.dubboapi.intf.IProductService;
import com.excel.dubboapi.model.Product;
public class ProductServiceImpl implements IProductService{
public List<Product> listAllProducts() {
List<Product> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Product product = new Product();
product.setId(100+i);
product.setCode("P"+i);
product.setName("Product"+i);
product.setRemark("Remark Product"+i);
list.add(product);
}
return list;
}
public Product getProductById(int id) {
Product product = new Product();
product.setId(100+id);
product.setCode("P"+id);
product.setName("Product"+id);
product.setRemark("Remark Product"+id);
return product;
}
}
4、設定dubbo的配置
4.1在src/main/resources目錄下,建立prodiver-zookeeper.xml,用於設定dubbo的服務提供端的配置資訊,具體如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- provider's application name, used for tracing dependency relationship -->
<dubbo:application name="dubboprovider" />
<!-- use zookeeper registry center to export service -->
<dubbo:registry protocol="zookeeper" address="10.4.2.206:2181"/>
<!-- service implementation, as same as regular local bean -->
<bean id="demoService" class="com.excel.dubboprovider.service.impl.ProductServiceImpl"/>
<!-- declare the service interface to be exported -->
<dubbo:service interface="com.excel.dubboapi.intf.IProductService" ref="demoService"/>
</beans>
期間可能需要調整一下JDK的編譯版本,這裡使用了jdk8.
到這裡,就完成了服務提供端Provider的開發。
在啟動服務提供端Provider之前,需要先啟動zookeeper服務,即在D:\zookeeper-3.4.13\bin目錄下,雙擊zkServer.cmd檔案執行。如果還沒有zookeeper,請先自行下載並解壓。
在ProviderMain類,點選右鍵開始執行即可,得出控制檯的資訊如下:
不要關閉,讓它保持啟動狀態。
此時再到zookeeper的客戶端看服務是否註冊上去。
到D:\zookeeper-3.4.13\bin目錄下,雙擊zkCli.cmd檔案執行,然後輸入ls /,得出介面如下:
再輸入ls /dubbo,得出如下介面:
可以看到我們的介面已經存在了,說明啟動成功了。
三、建立消費服務端Consumer
1、建立maven工程,選擇quickstart選項,之後groupid取名為com.excel,代表公司組織名稱,artifact取名為dubboconsumer,代表工程的名字:
截圖省略。。。。仿照前面的建立過程即可。
2、修改pom.xml檔案
設定需要的jar包,pom.xml檔案內容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.excel</groupId>
<artifactId>consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>consumer</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
<!-- need curator,if not,it will case exception: java.lang.NoClassDefFoundError:
org/apache/curator/RetryPolicy -->
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>com.excel</groupId>
<artifactId>dubboapi</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
3、建立介面實現類
3.1在src/main/java目錄下,建立com.excel.dubboconsumer.main包,用於存放啟動dubbo容器的Main函式,具體如下:
package com.excel.consumer;
import java.util.List;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.excel.dubboapi.intf.IProductService;
import com.excel.dubboapi.model.Product;
public class ConsumerMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("classpath:consumer_zookeeper.xml");
context.start();
System.out.println("dubbo consumer start here");
IProductService customerService = (IProductService) context.getBean("consumerService");
List<Product> list = customerService.listAllProducts();
System.out.println("Dubbo consumer//Dubbo服務消費端執行");
System.out.println("=======================================================");
if (list.isEmpty()) {
System.out.println("customer list empty ");
} else {
int idx = 1;
for (Product customer : list) {
System.out.println("customer: {}"+idx);
System.out.println("customer name: {}"+ customer.getName());
System.out.println("customer code: {}"+ customer.getCode());
System.out.println("customer Remark: {}"+ customer.getRemark());
System.out.println("customer Id: {}"+ customer.getId());
System.out.println("");
idx++;
}
}
System.out.println("=======================================================");
context.close();
}
}
4、設定dubbo的配置
4.1在src/main/resources目錄下,建立consumer-zookeeper.xml,用於設定dubbo的服務消費端的配置資訊,具體如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--定義消費方應用資訊,用於計算依賴關係;在 dubbo-admin 或 dubbo-monitor 會顯示該名字,方便識別-->
<dubbo:application name="dubboConsumer" owner="programmer" organization="dubbox"/>
<!--使用 zookeeper 註冊中心暴露服務,注意要先開啟 zookeeper,配置見conf資料夾下,預設zoo.cfg-->
<dubbo:registry address="zookeeper://localhost:2181"/>
<!-- generate proxy for the remote service, then demoService can be used in the same way as the
local regular interface -->
<dubbo:reference id="consumerService" check="false" interface="com.excel.dubboapi.intf.IProductService"/>
</beans>
到此,消費端的程式碼也開發完畢。
在ConsumerMain類裡,點選右鍵,執行,可以看到執行結果,如下:
相關推薦
簡易入門的Dubbo例項-自己建立的
使用maven工程建立 先建立介面端api,再建立服務提供端provider,最後建立服務消費端consumer 一、建立介面工程API 1、建立maven工程,選擇quickstart選項,之後groupid取名為com.excel,代表公司組織名稱,arti
Maven入門實戰(一)——MVN的安裝、配置、生命週期、簡單入門例項和建立父/子工程
1 Maven簡介 Maven是Apache旗下的一個開源專案,是純Java開發的一個專案管理工具,並且只是用來管理Java專案的。 1.1 Maven的好處 1)Maven專案佔用容量小 同樣的一個專案,如果是用Maven構建的話,專案的大小要小得多。(這是由於Ma
【必看】認識Vue,Vue快速入門,Vue如何建立一個例項?Vue的生命週期,什麼是鉤子函式?
認識Vue Vue (讀音 /vjuː/,類似於 view) 是一套用於構建使用者介面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注檢視層,不僅易於上手,還便於與第三方庫或既有專案整合。另一方面,當與現代化的工具鏈以及各種支援類庫結合使
Windows10下的docker安裝與入門 (三) 建立自己的docker映象並且在容器中執行它
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。 本教程主要分以下幾點內容: ------------
pythonocc入門指導:3.建立屬於自己的主介面及對話方塊及安裝qtdesigner
已經更新的入門指導 PythonOCC入門指導:1.建立pythonocc虛擬環境 PythonOCC入門指導:2.執行一個簡單例項 PythonOCC入門指導:3.建立屬於自己的主介面及對話方塊及安裝qtdesigner pythonocc基礎使用:1.讀入iges,step,stl檔
Docker網路管理機制例項解析+建立自己Docker網路
例項解析Docker網路管理機制(bridge network,overlay network),介紹Docker預設的網路方式,並建立自己的網路橋接方式,將開發的容器新增至自己新建的網路,提高Docker網路安全和通訊. 1.給自己的docker (Dcok
JBPM4入門——6.流程例項的建立和執行
package com.test.test; import java.util.Iterator; import java.util.List; import org.jbpm.api.ProcessDefinition; import org.jbpm.api.ProcessDefinitionQuer
愛自己--建立核心自信
一件事 而是 是不是 人才 自身 吃飯 世界 大量 做什麽 一六年的年底,從上海的公司辭職,打算回濟南發展。那時正值深冬,剛到濟南就下起了大雪,拖著行李箱走在街上,無可名狀的疲憊感湧上來。匆匆四年,也就那麽過來了。 分手後的很長一段時間,生活的很難。後來漸漸調
next.js簡易入門
mkdir init nod 腳本 路由 瀏覽器 webpack 快的 基於 使用next.js,我們能像php一樣,通過js和react來創建可以服務器端渲染的應用。next.js有以下特性: 默認服務器端渲染 自動分割代碼以獲取更快的頁面載入速度 簡易的客戶端路由,基
ActiveMQ簡易入門
mqActiveMQ官方下載地址:http://activemq.apache.org/download.html 下載解壓後,執行bin目錄下activemq.bat啟動mq服務找到lib目錄並引入相關jar包Sender消息發送者類package com.ycj.activemq; import jav
[Swift4.2實際操作]九、完整例項-(3)建立和安裝開發證書、釋出證書及開發證書配置檔案、釋出證書配置檔案
本文將為你演示,如何建立開發證書和釋出證書,以及其他輔助內容。首先開啟瀏覽器,進入【蘋果開發者網站】輸入【Apple ID】和【密碼】,點選登入按鈕,進入開發者管理後臺。 點選左側的【Membership(會員關係)】,進入會員關係頁面,在會員狀態頁面,顯示了你的開發者賬號型別,組織資訊等,在此可以檢視賬
[Swift4.2實際操作]九、完整例項-(5)建立BaseViewController作為控制器的基類
本文將給專案中的所有檢視控制器,建立一份基類。該基類用來定義一些共用的屬性和方法。 首先在用來放置檢視控制器類的資料夾上點選滑鼠右鍵,開啟右鍵 選單。 選擇【New File】建立檔案選項。 在彈出的檔案模板選擇視窗中,保持預設的選項, 然後點選【Next】下一步按鈕,進入下一步設定頁面。輸入類名、父
[Swift4.2實際操作]九、完整例項-(6)建立App歡迎介面
1 import UIKit 2 3 class WelcomeViewController: BaseViewController { 4 5 override func viewDidLoad() { 6 super.viewDi
DbForge Query Builder for SQL Server入門教程:如何建立和編輯查詢
【dbForge Query Builder for SQL Server下載】 本問將說明如何在dbForge Query Builder for SQL Server中建立和編輯SQL查詢。 要建立查詢: 1. 建立伺服器連線。 2. 在“Standard” 工具欄上,單擊“Ne
Android開發入門經典例項
開發例項概述 今天帶大家做一個簡單的Android App,這個App會顯示創新工程實踐老師們的照片和資訊,不妨先看一看效果: 雖然這個App非常簡單,但是涉及到了Android開發中的一些關鍵知識,比如: 配置開發環境 App中一個螢幕的抽象:Activity
爬蟲簡易入門程式碼-爬取簡單網頁圖片
# -*- coding: utf-8 -*- """ Created on Mon Jul 9 22:12:07 2018 @author: name """ #!/usr/bin/env Python3 # -*- encodin
例項:建立一個表格,分頁顯示資料(MongoDB資料庫儲存),功能:實現增刪改查
需求:建立一個表格,分頁顯示資料,功能:實現增刪改查 效果圖: 自動建立一個專案 命令列: express mongodb-demo --view=ejs cd mongodb-demo npm install npm install mongodb --save npm sta
struts1簡單入門使用例項
1、新增相關jar包 struts.jar、 commons-logging-1.1.jar 、commons-digester.jar、commons-beanutils.jar 2、web.xml配置 <servlet>&nbs
HOOK API入門之Hook自己程式的MessageBoxW
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
PyCharm入門第一步:建立並執行第一個Python專案
步驟1:建立並執行您的第一個Python專案 在你開始之前 確保滿足以下先決條件: 您正在使PyCharmCE或Professional。 您已經安裝了Python本身。如果您使用的是macOS或Linux,那麼您的計算機已經安裝了Python。你可以從python.org獲