dubbo教程系列2
快速启动
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
服务提供者
定义服务接口: (该接口需单独打包,在服务提供方和消费方共享)
DemoService.java
package com.alibaba.dubbo.demo;public interface DemoService {String sayHello(String name);}
在服务提供方实现接口:(对服务消费方隐藏实现)
DemoServiceImpl.java
package com.alibaba.dubbo.demo.provider;import com.alibaba.dubbo.demo.DemoService;public class DemoServiceImpl implements DemoService {public String sayHello(String name) {return "Hello " + name;}}
用Spring配置声明暴露服务:
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.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="hello-world-app" /><!-- 使用multicast广播注册中心暴露服务地址 --><dubbo:registry address="multicast://224.5.6.7:1234" /><!-- 用dubbo协议在20880端口暴露服务 --><dubbo:protocol name="dubbo" port="20880" /><!-- 声明需要暴露的服务接口 --><dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" /><!-- 和本地bean一样实现服务 --><bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl" /></beans>
加载Spring配置:
Provider.java
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Provider {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"http://10.20.160.198/wiki/display/dubbo/provider.xml"});context.start();System.in.read(); // 按任意键退出}}
服务消费者
通过Spring配置引用远程服务:
consumer.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="consumer-of-helloworld-app" /><!-- 使用multicast广播注册中心暴露发现服务地址 --><dubbo:registry address="multicast://224.5.6.7:1234" /><!-- 生成远程服务代理,可以和本地bean一样使用demoService --><dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" /></beans>
加载Spring配置,并调用远程服务:(也可以使用IoC注入)
Consumer.java
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.dubbo.demo.DemoService;public class Consumer {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"http://10.20.160.198/wiki/display/dubbo/consumer.xml"});context.start();DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理String hello = demoService.sayHello("world"); // 执行远程方法System.out.println( hello ); // 显示调用结果}}
dubbo教程系列2相关推荐
- python平稳性检验_时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)...
时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python) 发布时间:2019-01-10 00:02, 浏览次数:620 , 标签: Python 导读: 本文介绍了数据平稳 ...
- PowerDesigner教程系列(总)
目标: 本文主要介绍PowerDesigner中概念数据模型 CDM的基本概念. 一.概念数据模型概述 数据模型是现实世界中数据特征的抽象.数据模型应该满足三个方面的要求: 1)能够比较真实地模拟现实 ...
- 【冰极峰教程系列之二】:牢不可破的九宫格布局
原创:冰极峰 转载请注明出处 时间:2009年6月22日 8:40:16 冰极峰教程系列之一:九宫格基本布局 冰极峰教程系列之二:牢不可破的九宫格布局 冰极峰教程系列之三:三层分离的完美九宫格 冰极峰 ...
- 智能合约语言 Solidity 教程系列9 - 错误处理
这是Solidity教程系列文章第9篇介绍Solidity 错误处理. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文 ...
- 在ASP.NET 2.0中操作数据教程系列
在ASP.NET 2.0中操作数据教程系列 Scott Mitchell最近完成了为 www.asp.net 网站撰写的<在ASP.NET 2.0中操作数据 (Working with Data ...
- ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡
为什么80%的码农都做不了架构师?>>> ttlsa教程系列之MySQL ---- MySQL/Galera集群-多主高可用性负载均衡 Percona和MariaDB发布版本中 ...
- eeglab教程系列(15)-绘制独立成分ERP贡献
要完成该操作,必须保证已加载数据和电极位置数据,同时还要对数据进行提取epoch,并对数据进行ICA处理,操作如下: 加载数据文件:eeglab教程系列(2)-加载.显示数据 加载位置文件:eegla ...
- eeglab教程系列(14)-Working with ICA Components
在本案例前,先要进行进行ICA数据分解 操作: Tools > Run ICA,具体操作参照eeglab教程系列(12)-使用ICA分解数据的第三步. 1.绘制component spectra ...
- eeglab教程系列(13)-学习和删除ICA组件
研究组件属性的操作:Tools > Reject data using ICA > Reject components by map.操作过程如下: 出现如下界面后,点击"OK& ...
- eeglab教程系列(12)-使用ICA分解数据
ICA分解数据 第一步:导入数据eeglab教程系列(2)-加载.显示数据 第二步:根据教程eeglab教程系列(3)-绘制脑电头皮图中导入位置信息. 做完上两步操作后,可以进行ICA数据分解. 第三 ...
最新文章
- BCH到底该采用哪种交易排序规则?
- wenbao与windows命令
- NTU 课程笔记:CV6422 样本分布
- 基于FTP的Nordic nRF51822 OTA 教程一之修改boot区大小
- php.ini 相对路径,php中zend相对路径问题
- 学习 protobuf(一)—— ubuntu 下 protobuf 2.6.1 的安装
- nagios报错汇总
- php原生好还是tp好_webapp/H5封装,混开APP,没有原生APP好?事实是这样的吗?
- 一文理解设计模式--单例模式(Singleton)
- 20190820 On Java8 第十章 接口
- php开发类库,php类库_PHP开发中常用类库
- 把几个任务分配到几个设备上的代码
- 虚拟麦克风音频输入_Audio Precision 全新声学/音频分析软件可减少测试时间
- 龙芯2F笔记本安装gentoo系统
- 当前上下文中不存在名称 ViewBag
- redis----------基本命令使用
- 在 AWS上域名备案流程和文件
- win10 搭建PHP + Apache + MySQL运行环境
- Notepad++搜索结果窗找不见了
- 前端js实现表格数据的上移下移