1. 程式人生 > >基於XML搭建Dubbo項目

基於XML搭建Dubbo項目

[] lap void .get pro set www. protocol proto

(1)、新建一個普通Maven項目,用於存放一些公共服務接口及公共的Bean等。

技術分享圖片

公共Bean:

 1 package cn.coreqi.entities;
 2 
 3 import java.io.Serializable;
 4 
 5 public class User implements Serializable {
 6     private Integer id;
 7     private String userName;
 8     private String passWord;
 9     private Integer enabled;
10 
11     public
User() { 12 } 13 14 public User(Integer id, String userName, String passWord, Integer enabled) { 15 this.id = id; 16 this.userName = userName; 17 this.passWord = passWord; 18 this.enabled = enabled; 19 } 20 21 public Integer getId() { 22 return
id; 23 } 24 25 public void setId(Integer id) { 26 this.id = id; 27 } 28 29 public String getUserName() { 30 return userName; 31 } 32 33 public void setUserName(String userName) { 34 this.userName = userName; 35 } 36 37 public String getPassWord() {
38 return passWord; 39 } 40 41 public void setPassWord(String passWord) { 42 this.passWord = passWord; 43 } 44 45 public Integer getEnabled() { 46 return enabled; 47 } 48 49 public void setEnabled(Integer enabled) { 50 this.enabled = enabled; 51 } 52 53 @Override 54 public String toString() { 55 return "User{" + 56 "id=" + id + 57 ", userName=‘" + userName + ‘\‘‘ + 58 ", passWord=‘" + passWord + ‘\‘‘ + 59 ", enabled=" + enabled + 60 ‘}‘; 61 } 62 }

公共服務接口:

 1 package cn.coreqi.service;
 2 
 3 import cn.coreqi.entities.User;
 4 
 5 import java.util.List;
 6 
 7 public interface UserService {
 8     public void addUser(User user);
 9     public void delById(Integer id);
10     public void modifyUser(User user);
11     public User getById(Integer id);
12     public List<User> getList();
13 }

(2)、新建一個普通Maven項目,用作與服務提供者

  1)、導入相關依賴

  

 1     <dependencies>
 2         <dependency>
 3             <groupId>cn.coreqi</groupId>
 4             <artifactId>DubboXmlApi</artifactId>
 5             <version>1.0-SNAPSHOT</version>
 6         </dependency>
 7         <dependency>
 8             <groupId>com.alibaba</groupId>
 9             <artifactId>dubbo</artifactId>
10             <version>2.6.2</version>
11         </dependency>
12 
13         <!--我這裏使用zookeeper作為dubbo的註冊中心-->
14         <!--dubbo2.6以前的版本使用zkclient操作zookeeper-->
15         <!--dubbo2.6及以後的版本使用curator操作zookeeper-->
16         <!--根據dubbo的版本二選其一-->
17 
18         <dependency>
19             <groupId>org.apache.curator</groupId>
20             <artifactId>curator-framework</artifactId>
21             <version>2.12.0</version>
22         </dependency>
23 
24         <!--<dependency>-->
25             <!--<groupId>com.101tec</groupId>-->
26             <!--<artifactId>zkclient</artifactId>-->
27             <!--<version>0.11</version>-->
28         <!--</dependency>-->
29 
30     </dependencies>

  2)、編寫服務提供者配置文件,新建provider.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
 4        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">
 5     <!--1、指定當前服務/應用的名字(同樣的服務名字相同,不要和其它的服務同名)-->
 6     <dubbo:application name="user-provider"/>
 7 
 8     <!--2、指定註冊中心的位置(註冊中心不同,服務地址的寫法不同)-->
 9     <!--<dubbo:registry address="redis://192.168.205.128:6379"/>-->
10     <dubbo:registry address="zookeeper://192.168.205.128:2181"/>
11 
12     <!--3、指定通信規則(通信協議&通信端口)-->
13     <dubbo:protocol name="dubbo" port="20880"/>
14 
15     <!--4、聲明需要暴露的服務接口,ref屬性要指向容器中的接口實現對象-->
16     <dubbo:service ref="userService" interface="cn.coreqi.service.UserService"/>
17 
18     <bean id="userService" class="cn.coreqi.service.impl.UserServiceImpl"/>
19 
20 </beans>

  3)、啟動服務提供者

 1 package cn.coreqi;
 2 
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 import java.io.IOException;
 6 
 7 public class MainApplication {
 8     public static void main(String[] args) throws IOException {
 9         ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("provider.xml");
10         ioc.start();
11         System.in.read();
12     }
13 }

(3)、新建一個普通Maven項目,用作與服務消費者

  1)、導入相關依賴(和服務提供者相同,此處略)

  2)、編寫服務消費者配置文件,新建consumer.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
 4        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">
 5 
 6     <!--1、消費者應用名-->
 7     <dubbo:application name="user-consumer"/>
 8 
 9     <!--2、指定註冊中心的位置-->
10     <dubbo:registry address="zookeeper://192.168.205.128:2181"/>
11 
12     <!--3、聲明需要調用的遠程服務接口,生成遠程服務代理,可以和本地Bean一樣使用-->
13     <dubbo:reference id="userService" interface="cn.coreqi.service.UserService"/>
14 </beans>

  3)、測試服務消費者

 1 package cn.coreqi;
 2 
 3 import cn.coreqi.entities.User;
 4 import cn.coreqi.service.UserService;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 
 7 public class MainApplication {
 8     public static void main(String[] args) {
 9         ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("consumer.xml");
10         ioc.start();
11         UserService userService = (UserService) ioc.getBean("userService");
12         User user = userService.getById(1);
13         System.out.println(user.toString());
14     }
15 }

基於XML搭建Dubbo項目