Dubbo基础篇_03_简单的Dubbo提供者provider与消费者consumer

原创 2016年03月25日 12:38:43

一、提供方Provider

1.接口

public interface DemoService {

	String sayHello(String name);

	public List getUsers();

}

2.实现类

public class DemoServiceImpl implements DemoService {

	public String sayHello(String name) {
		return "Hello " + name;
	}

	public List getUsers() {
		List list = new ArrayList();
		User u1 = new User();
		u1.setName("jack");
		u1.setAge(20);
		u1.setSex("m");

		User u2 = new User();
		u2.setName("tom");
		u2.setAge(21);
		u2.setSex("m");

		User u3 = new User();
		u3.setName("rose");
		u3.setAge(19);
		u3.setSex("w");

		list.add(u1);
		list.add(u2);
		list.add(u3);
		return list;
	}
}
3.model类

/**
 * 实现序列化
 * @author Administrator
 *
 */
public class User implements Serializable {
	private static final long serialVersionUID = 1L;
	private int age;
	private String name;
	private String sex;

	public User() {
		super();
	}

	public User(int age, String name, String sex) {
		super();
		this.age = age;
		this.name = name;
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

}
4.applicationContenxt.xml配置

注意:提供方需要指定端口,不同提供方需要使用不同端口,不然会有端口冲突,使用的端口需要在防火墙iptables中配置允许通过

消费方不用指定端口

<?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="demo_provider" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<dubbo:registry address="zookeeper://192.168.1.121:2181" />

	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880" />

	<!-- 声明需要暴露的服务接口 -->
	<dubbo:service interface="com.unj.dubbotest.provider.DemoService"
		ref="demoService" />
		
		
	<!-- 具体的实现bean,用来注入-->
	<bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />

</beans>
5.提供方Provider测试方法

public class Provider {

	public static void main(String[] args) throws Exception {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "applicationContext.xml" });
		context.start();
		System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
	}
}

运行结果:



6.在Dubbo管理控制台上查看发布的提供方



二、消费方Consume

1.引用提供方的接口

2.消费方applictionContenxt.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
        ">

	<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
	<dubbo:application name="hehe_consumer" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<dubbo:registry address="zookeeper://192.168.1.121:2181" />

	<!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
	<dubbo:reference id="demoService"
		interface="com.unj.dubbotest.provider.DemoService" />

</beans>
3.消费方调用提供方

public class Consumer {

	public static void main(String[] args) throws Exception {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "applicationContext.xml" });
		context.start();

		DemoService demoService = (DemoService) context.getBean("demoService");
		String hello = demoService.sayHello("tom");
		System.out.println(hello);

		List list = demoService.getUsers();
		if (list != null && list.size() > 0) {
			for (int i = 0; i < list.size(); i++) {
				System.out.println(list.get(i));
			}
		}
		System.in.read();
	}

}

控制台信息输出



dubbo管理控制台查看


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

14. Dubbo原理解析-集群&容错之Cluster

Dubbo作为一个分布式的服务治理框架,提供了集群部署,路由,软负载均衡及容错机制   下图描述了dubbo调用过程中的对于集群,负载等的调用关系。   Cluster 将Directory中的多个...

Dubbo高级篇_07_Dubbo服务接口的设计原则

1 、设计方式 action->facade->biz->dao 好的Dubbo服务接品设计,并非只是纯粹的接口服务化 2.接口类型 简单的数据查询接口:action.facade、dao 带业务逻辑...

Dubbo基础篇_06_Dubbo监控中心的介绍与简易监控中心的安装

Dubbo监控中心的介绍与简易监控中心的安装.

Dubbo基础篇_02_Zookeeper注册中心安装测试

Zookeeper注册中心安装测试及Dubbo管控台部署

dubbo工作原理,集群容错,负载均衡

dubbo的构架,调用关系,集群容错,负载均衡
  • hll814
  • hll814
  • 2016-03-15 00:59
  • 4175

Java集群优化——dubbo+zookeeper构建高可用分布式集群

不久前,我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容,...

Dubbo高级篇_01_消息中间件在分布式架构的作用和介绍

消息中间件的定义 Message-oriented middleware (MOM) is software infrastructure focused on sending and receivi...

两年Java开发工作经验面试总结

看面试题 正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐,如下: Java面试题全集(上) 很多基础的东西,建议先看。 各大公司Java...

Dubbo高级篇_05_Dubbo服务集群

一、环境准备 edu-provider-01(192.168.1.121) edu-provider-02(192.168.1.122) Connecting to 192.168.1.121:22...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)