Dubbo项目搭建

来源:互联网 发布:阿里办公软件 编辑:程序博客网 时间:2024/06/05 19:07

       本节我们演示下dubbo项目的搭建,服务端和客户端进行远程通信,通过zookeeper进行注册的实现。

      项目结构图

  

Dubbo-client客户端

Dubbo-host 宿主服务

Dubbo-model实体Model

Dubbo-service服务

Dubbo-service-impl服务实现

项目分为5个模块,客户端使用的时候只需把接口Dubbo-service和Dubbo-model给客户端,进行远程调用

model

model层需要实现序列化接口Serializable

package com.dubbo.model;import java.io.Serializable;public class ProductModel implements Serializable {//产品名称private String name;//产品编码private String code;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}}
dubbo-service

package com.dubbo.service;import java.util.List;import com.dubbo.model.ProductModel;public interface ProductService {public  List<ProductModel> GetAllProcuct();}

dubbo-service-impl

package com.dubbo.service.impl;import java.util.ArrayList;import java.util.List;import com.dubbo.model.ProductModel;import com.dubbo.service.ProductService;public class ProductServiceImpl implements ProductService  {public List<ProductModel> GetAllProcuct() {// TODO Auto-generated method stubList<ProductModel> list=new ArrayList<ProductModel>();ProductModel  model1=new ProductModel();model1.setCode("001");model1.setName("可口可乐");list.add(model1);ProductModel  model2=new ProductModel();model2.setCode("002");model2.setName("百事可乐");list.add(model2);ProductModel  model3=new ProductModel();model3.setCode("003");model3.setName("非常可乐");list.add(model3);return list;}}

宿主host

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="productService" class="com.dubbo.service.impl.ProductServiceImpl" />          <!-- 提供方应用信息,用于计算依赖关系 -->     <dubbo:application name="provider"  />     <dubbo:monitor protocol= "registry" />   <!-- 使用zookeeper注册中心暴露服务地址 -->     <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183" />         <!-- <dubbo:registry address="zookeeper://127.0.0.1:2181" />    -->   <!-- 用dubbo协议在20880端口暴露服务 -->     <dubbo:protocol name="dubbo" port="20880" />      <!-- 声明需要暴露的服务接口 -->    <dubbo:service interface="com.dubbo.service.ProductService" ref="productService" />      </beans>  

package com.dubbo.host;import java.io.IOException;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Hello world! * */public class App {    public static void main( String[] args )    {        ClassPathXmlApplicationContext  context =new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});          context.start();          System.out.println( "dubbol服务启动" );        try {System.in.read();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}        System.out.println("关闭服务");        context.close();    }}

cllient

<?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          ">             <!-- 提供方应用信息,用于计算依赖关系 -->     <dubbo:application name="consumer"  />       <!-- 使用zookeeper注册中心暴露服务地址 -->     <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183" />        <!--  <dubbo:registry address="zookeeper://127.0.0.1:2181" />   -->       <!--   <dubbo:monitor protocol= "registry" /> -->  <dubbo:reference id="productService"         interface="com.dubbo.service.ProductService" />      </beans>  

package com.dubbo.client;import java.util.List;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.dubbo.model.ProductModel;import com.dubbo.service.ProductService;/** * Hello world! * */public class App {    public static void main( String[] args )    {             ClassPathXmlApplicationContext  context =new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});          context.start();               ProductService service = (ProductService) context.getBean("productService"); //             List<ProductModel> list =service.GetAllProcuct();         for(ProductModel model:list)         {         System.out.println(model.getCode()+"--"+model.getName());                  }        System.out.println( "dubbo调用完成!" );    }}

代码下载

http://download.csdn.net/detail/zx13525079024/9601687


0 0
原创粉丝点击