dubbo使用例子

dubbo2.4.11源码编译 http://my.oschina.net/penngo/blog/494838

同样以两个简单的登录和注册服务为例,之前已经用thrift实现过,thrift版本的实现请参考Thrift的java和php http://my.oschina.net/penngo/blog/489311

客户端和服务器端共用接口类

登录接口类

package com.penngo.dubbo.service;

public interface LoginService {
	public User login(String name, String psw);

}

注册接口类

package com.penngo.dubbo.service;

public interface RegisterService {
	 public User createUser(String name, String psw);
}

服务器端

登录接口实现

package com.penngo.dubbo.serviceimpl;
import com.penngo.dubbo.service.LoginService;
import com.penngo.dubbo.service.User;

public class LoginServiceImpl implements LoginService{
	public User login(String name, String psw){
        User user = null;
        if(name.equals("penngo") && psw.equals("123")){
            user = new User();
            user.setId(1);
            user.setName("penngo");
        }
        return user;
    }
}

注册接口实现

package com.penngo.dubbo.serviceimpl;
import com.penngo.dubbo.service.RegisterService;
import com.penngo.dubbo.service.User;

public class RegisterServiceImpl implements RegisterService{
	 public User createUser(String name, String psw){
	        User user = new User();
	        user.setId(2);
	        user.setName(name);
	        user.setPassword(psw);
	        return user;
	    }
}

服务器端利用spring发布服务dubbo-penngo-provider.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-2.5.xsd
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="provider-penngo-app"  />
 
    <!-- 使用zookeeper广播注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!--  <dubbo:registry address="multicast://224.5.6.7:1234" />   -->
 
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 和本地bean一样实现服务 -->
	<bean id="loginService" class="com.penngo.dubbo.serviceimpl.LoginServiceImpl" />
	<bean id="registerService" class="com.penngo.dubbo.serviceimpl.RegisterServiceImpl" />

	<!-- 声明需要暴露的服务接口 -->
	<dubbo:service interface="com.penngo.dubbo.service.LoginService" ref="loginService" />
	<dubbo:service interface="com.penngo.dubbo.service.RegisterService" ref="registerService" />

</beans>

服务启动类,发布服务

package com.penngo.dubbo.server;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Server {
	public static void main(String[] args) throws Exception{
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"dubbo-penngo-provider.xml"});
        context.start();
        System.in.read(); // 按任意键退出
	}
}

客户端调用服务很简单,只需一个xml文件和一个java调用类

客户端利用spring配置可用远程服务器

<?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-2.5.xsd
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="consumer-penngo-app"  />

    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <!--   <dubbo:registry address="multicast://224.5.6.7:1234" />  -->
    
    <!-- 生成远程服务代理, -->
	<dubbo:reference id="loginService" interface="com.penngo.dubbo.service.LoginService" />
	<dubbo:reference id="registerService" interface="com.penngo.dubbo.service.RegisterService" />
</beans>

客户端调用

package com.penngo.dubbo.client;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.penngo.dubbo.service.LoginService;
import com.penngo.dubbo.service.RegisterService;
import com.penngo.dubbo.service.User;

public class Client {
	 public static void main(String[] args) throws Exception {
	        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"dubbo-penngo-consumer.xml"});
	        context.start();
	 
	        LoginService loginService = (LoginService)context.getBean("loginService"); // 获取远程服务代理
	        User user = loginService.login("penngo", "123");
	 
	        System.out.println( user.getId() + " " + user.getName()); // 显示调用结果
	        
	        RegisterService registerService = (RegisterService)context.getBean("registerService");
	        User user2 = registerService.createUser("penngo", "123");
	        System.out.println( user2.getId() + " " + user2.getName()); // 显示调用结果
	    }
}

源码稍后提供下载

时间: 2024-07-31 00:18:21

dubbo使用例子的相关文章

dubbo入门和springboot集成dubbo小例子

从零开始搭建springboot-dubbo的例子 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案 一. Dubbo的简单介绍 1. 网站架构的发展历程 网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多....... 单一应用架构(OORM) 当网站流量很小时,将所有的功能部署到一起,以减少部署节点和成本.此时,只需要使用简化增删改查的工作量,采用数据访问框架(ORM). 垂直应用架构 (MVC) 当访问量逐

dubbo+zookeeper例子

0.原理 Alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西来解决这些问题. 基本原理如图: 在我们的系统中,经常会有一些跨系统的调用,如在A系统中要调用B系统的一个服务,我们可能会使用RMI直接来进行,B系统发布一个RMI接口服务,然后A系统就来

关于dubbo的服务降级

一.dubbo降级服务     dubbo开发中,可能由于服务没有启动或者网络不通,调用中会出现RpcException,也就是远程调用失败.如果是服务启动顺序的问题,可能加工check="false"的配置可以得到很好的解决.但是,如果是服务宕掉或者并发数太高导致的RpcException该如何处理? 经过过12306抢票的人应该经常会遇到这个问题:在抢票高峰的时候,明明票还有,但是查询出来的列表却是为空的(如果没票列表也应该会呈现):等高峰过后再查询,列表又恢复正常.个人猜测应该是

160719、Spring + Dubbo + zookeeper (linux) 框架搭建

转载一篇博客,写得不错(至少我参考一下搭建成功了) 转载地址:http://my.oschina.net/wangt10/blog/522799 dubbo简介 节点角色说明: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. Monitor: 统计服务的调用次调和调用时间的监控中心. Container: 服务运行容器. 调用关系说明: 0. 服务容器负责启动,加载,运行服务提供者. 1. 服务提供者在启

面向接口设计的好处

教科书上早就告诉了我们面向接口的好处是什么.但是怎么深刻滴理解面向接口的好处呢? 在这里我举一个dubbo的例子,完完整整地告诉你面向接口有什么好处. 首先定义interface  package com.alibaba.dubbo.demo; public interface DemoService {       String sayHello(String name);   } 然后定义interace的实现 package com.alibaba.dubbo.demo.provider;

基于ZooKeeper的Dubbo注册中心的简单例子

一:安装zookeeper 系统环境 Ubuntu 14.04.2 LTS x64 IP : 192.168.1.102 下载zookeeper-3.4.6.tar.gz到目录/opt,解压 mkdir /opt/zookeeper-3.4.6/data vim /opt/zookeeper-3.4.6/conf/zoo.cfg 输入如下内容 tickTime=2000 dataDir=/opt/zookeeper-3.4.6/data clientPort=2181 然后,启动 sh /opt

Maven配置dubbo环境简单例子

环境准备: 1.zookeeper:zookeeper-3.4.6版本 2.maven:apache-maven-3.3.9版本 3.dubbo监控工具:dubbo-admin-2.5.4-SNAPSHOT 一个war包,用户查看注册中心的提供者和消费者 项目结构: dubbo-provider-test |--src/main/java 程序目录 |--com.wengen.dubbo_provider_test.service      提供者接口目录 |--DomeService.java

学习dubbo(二): 第1个例子

提供者 接口 public interface SampleService { String sayHello(String name); public List getUsers(); } 接口实现 public class SampleServiceImpl implements SampleService { public String sayHello(String name) { return "Hello " + name; } public List getUsers()

dubbo最简单的例子

1.新建两个maven项目,一个是服务器端的,一个是客户端的 2.服务器端pom.xml添加jar <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupI