1. 程式人生 > >Maven+Spring+Dubbo學習筆記

Maven+Spring+Dubbo學習筆記

學習參考文件  http://dubbo.io/User+Guide-zh.htm 

本案例使用maven建立,關於如何建立可以參考我另一篇部落格  http://blog.csdn.net/a_piaoyouareminemine/article/details/49925289

準備工具:eclipse-jee-luna-SR2-win32-x86_64,apache-maven-3.3.3-bin,zookeeper-3.4.5,dubbo-monitor-simple-2.5.3

下載連結:http://pan.baidu.com/s/1bn5GLFh

1.建立maven專案,大概目錄如下:

2.建立一個介面DemoService,和一個實現類DemoServiceImpl

<pre name="code" class="java">import com.dubbo.client.model.User;


public interface DemoService {
	
    public void sayHello();
    
    public User add(String username);
    
}
public class DemoServiceImpl implements DemoService {


	public void sayHello() {
		System.out.println("hello world!");
	}


	public User add(String username) {
		User user = new User();
		user.setId(1);
		user.setName(username);
		user.setPassword("123");
		return user;
	}
}


3.新增LuncherProvider服務提供類和 LuncherConsumer服務消費類
<pre name="code" class="java">public class LuncherProvider  {
	public static void main(String[] args) throws InterruptedException{
		LuncherProvider luncher=new LuncherProvider();
		luncher.start();
		Thread.sleep(1000*60*10);
	}
	
	void start(){
		String configLocation="classpath:conf/dubbo-server.xml";
		ApplicationContext context =new  ClassPathXmlApplicationContext(configLocation);
		String [] names=context.getBeanDefinitionNames();
		System.out.print("Beans:");
		for (String string : names)
			System.out.print(string+",");
		System.out.println();
	}
}
public class LuncherConsumer  {
	public static void main(String[] args) throws InterruptedException{
		LuncherConsumer luncher=new LuncherConsumer();
		luncher.start();
	}
	
	
	void start(){
		String configLocation="classpath:conf/spring-dubbo.xml";
		ApplicationContext context =new  ClassPathXmlApplicationContext(configLocation);
		DemoService ds=(DemoService) context.getBean("userService");
		String [] names=context.getBeanDefinitionNames();
		System.out.print("Beans:");
		for (String string : names) {
			System.out.print(string);
			System.out.print(",");
		}
		System.out.println();
		
		User user = new User();
		user.setName("test1");


		System.out.println(ds.add("werwer"));
	}
}


4.新增一個實體類,控制檯demo可以不用model類

<pre name="code" class="java">/**
 * 使用者表
 * @author wanghaiyang
 * 2015年11月19日
 */
public class User {


	private int id;
	private String name;
	private String password;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}


5.配置pom.xml 專案所以來的jar包

<pre name="code" class="html"><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.dubbo.demo</groupId>
	<artifactId>TestDubbo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<name>TestDubbo</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<spring.version>3.2.4.RELEASE</spring.version>
		<slf4j.version>1.6.6</slf4j.version>
		<log4j.version>1.2.9</log4j.version>
	</properties>

	<dependencies>
		 <dependency> 
		 <groupId>junit</groupId> 
		 <artifactId>junit</artifactId> 
		<version>3.8.1</version> 
		<scope>test</scope> 
		</dependency>

		<!-- spring核心包 -->
		<!-- springframe start -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- springframe end -->

	<dependency>
		    <groupId>org.apache.zookeeper</groupId>
		    <artifactId>zookeeper</artifactId>
		    <version>3.4.6</version>
		</dependency>
		 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.18.1-GA</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.netty</groupId>
            <artifactId>netty</artifactId>
            <version>3.2.9.Final</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.4</version>
        </dependency>
        
        <!-- 日誌檔案管理包 -->
		<!-- log start -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
        
	</dependencies>


</project>


6.配置dubbo-provider.xml
<pre name="code" class="html"><?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">
	<!-- Application name -->
	<dubbo:application name="springmvc" />

	<!-- <dubbo:registry address="zookeeper://127.0.0.1:2181" /> -->
	<dubbo:registry protocol="zookeeper" address="192.168.0.1:2181" />
	<!--  <dubbo:monitor address="127.0.0.1:9090" /> --> 

	<dubbo:protocol name="dubbo" port="20880" />
	 <bean id="userService" class="com.dubbo.example.DemoServiceImpl"></bean> 
	<dubbo:service interface="com.dubbo.example.DemoService" ref="userService" />
</beans>   


7.配置dubbo-consumer.xml
<pre name="code" class="html"><?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">         
<!-- Application name -->      
<dubbo:application name="TestDubbo"  />         
<!-- registry address, used for service to register itself -->      
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />        
<!-- expose this service through dubbo protocol, through port 20880 -->  

<dubbo:monitor address = "127.0.0.1:9090" />
 
<dubbo:protocol name="dubbo" port="20880" />    
     
<dubbo:reference id="userService" interface="com.dubbo.client.service.UserService" url="127.0.0.1:2181"/> 
</beans>   


8.上面的檔案基本上就是這個專案的大概了,啟動的時候先把zookeeper和dubbo-monitor啟起來,雙擊bin目錄下的zkServer.cmd即可,然後啟動dubbo-monitor-simple-2.5.3在bin目錄下的start.bat 雙擊,monitor配置檔案裡的jetty埠號需要改下,如果建立的是web專案釋出到tomcat下會有埠衝突,所以修改下dubbo.jetty.port=9090

9.再就是啟動先服務LuncherProvider 然後啟動LuncherConsumer ,都是main方法。

10.可以在瀏覽器輸入localhost:9090檢視服務呼叫情況



11.附上專案下載連結 http://download.csdn.net/detail/a_piaoyouareminemine/9296383




相關推薦

Maven+Spring+Dubbo學習筆記

學習參考文件  http://dubbo.io/User+Guide-zh.htm  本案例使用maven建立,關於如何建立可以參考我另一篇部落格  http://blog.csdn.net/a_piaoyouareminemine/article/details/499

Spring Boot學習筆記之一:傳統maven項目與采用spring boot項目區別

bubuko xml文件 分享 lda ring info 插件 eclips web 項目結構區別 傳統的maven構建的項目結構如下: 用maven構建的采用springboot項目結構如下: 二者結構一致,區別如下:傳統項目如果需要打成war包,需要在WEB-IN

Spring Boot學習筆記(二)——整合MySQL及dubbo

目錄 L 3.Spring Boot整合MySQL 一、使用JDBCTemplate引入MySQL 1.新增spring boot jdbc資料來源配置 2.引入maven依賴(jdbc、connector、druid) 二、整合mybatis 1.單資料來源mybati

Spring MVC學習筆記

實現 world use 裏的 rate lang 復制 urn bean 一、SpringMVC基礎入門,創建一個HelloWorld程序 1.首先,導入SpringMVC需要的jar包。 2.添加Web.xml配置文件中關於SpringMVC的配置 <

dubbo學習筆記

變化 頁面開發 love 分布式服務 keyword link ide 開發 容量 一、Dubbo 創造者對於Dubbo的價值與意義作出過精辟的見解 1、單一應用架構 網站流量很小,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本 此時,用於簡化增刪改查工作量的

Spring-mvc學習筆記

odin bundle click 客戶端請求 object body axu 匹配 多個 一、SpringMVC基礎入門,創建一個HelloWorld程序 1.首先,導入SpringMVC需要的jar包。 2.添加Web.xml配置文件中關於SpringMVC的配置

我的第一個spring boot程序(spring boot 學習筆記之二)

獲取json 了解 訪問 static 依賴 過程 public 獲取數據 gap 第一個spring boot程序 寫在前面:鑒於spring註解以及springMVC的配置有大量細節和知識點,在學習理解之後,我們將直接進入spring boot的學習,在後續學習中用到註

Spring Boot學習筆記

end 應用程序 maven構建 筆記 項目依賴 新建 輸入 需要 文本 1.不需要任何特殊工具集成,可以使用任何IDE或文本編輯器。 2.Spring Boot CLI是一個命令行工具。 3.使用Maven構建一個基於Spring Boot 的Web應用程序。   1)打

Spring Boot 學習筆記(二)

imp family framework ima pri spa cal bin ges 新建Srping Boot 項目 以下是項目結構 由於Srping Boot內置Tomcat,所以不需要配置Tomcat就可以直接運行。 HelloWorldAppli

Java框架spring Boot學習筆記(八):Spring相關概念

擴展 靜態 輕量級 想要 spring配置 核心 使用 oot 調用方法 Spring是開源、輕量級、一站式框架。 Spring核心主要兩部分 aop:面向切面編程,擴展功能不是修改源代碼實現 ioc:控制反轉,比如一個類,在類裏面有方法(不是靜態的方法),想要調用類

Java框架spring Boot學習筆記(十四):log4j介紹

inf alt 技術分享 images 使用 image 詳細 配置文件 -128 功能 日誌功能,通過log4j可以看到程序運行過程的詳細信息。 使用 導入log4j的jar包 復制log4j的配置文件,復制到src下面         3.設置日誌級別    

Spring Boot學習筆記-配置devtools實現熱部署

原理 enc cnblogs 配置文件 target res 快的 pen cache 寫在前面   Spring為開發者提供了一個名為spring-boot-devtools的模塊來使Spring Boot應用支持熱部署,提高開發者的開發效率,無需手動重啟Spring

spring框架學習筆記4:SpringAOP實現原理

odin 就是 sets 使用 point 攔截 ceo oca ssl AOP AOP(Aspect Oriented Programming),即面向切面編程,可以說是OOP(Object Oriented Programming,面向對象編程)的補充和完善。OOP引入

Spring Cloud學習筆記 【篇一:分布式配置中心 Spring Colud Config】

16px gin war imp web項目 tps conf name request 一、簡介 Spring Cloud Config提供了在分布式系統的外部配置的客戶端支持。通過配置服務(Config Server)來為所有的環境和應用提供外部配置的集中管理。這些概念

Spring 註解學習筆記

list tty ping mode source sse mage 告訴 profile 聲明Bean的註解: @Component : 組件,沒有明確的角色 @Service : 在業務邏輯層(service層)使用 @Repository : 在數據訪問層(

1、spring-boot學習筆記(一)簡單入門

ava project nal run plugin mailto 5.4 安全 class a 一、新建普通Maven工程 pom.xml <parent> <groupId>org.springframework.boot</gr

Spring框架學習筆記(二)

約束 存在 基礎 核心 但是 註解 文件的 分享 strong 上接Spring框架學習筆記(一) IOC和DI區別 (1)IOC: 控制反轉,把對象創建交給spring進行配置 (2)DI: 依賴註入,向類裏面的屬性中設置值 (3)關系:依賴註入不能單獨存在,需要在i

Spring Cloud學習筆記-003

開發 spring pre 學習筆記 bubuko lse 參數 穩定 觸發 Spring Cloud學習筆記-003 服務提供者:向註冊中心註冊服務 1. 新建maven工程,骨架選擇quickstart,工程名稱:demo-member 2. 加入相關依賴

Spring Cloud學習筆記-004

服務 微服務架構 裏的 url 文件 啟動 spa 實現 ron 高可用註冊中心   在微服務架構這樣的分布式環境中,需要充分考慮發生故障的情況,所以在生產環境中必須對各個組件進行高可用部署,對於微服務如此,對於服務註冊中心也一樣。如果一直使用單節點的服務註冊中心