dubbo入门学习 五 provider端的编写
1. 新建Maven Project, 里面只有接口(dubbo-service)
1.1 为什么这么做?
RPC框架,不希望Consumer知道具体实现.如果实现类和接口在同一个项目中,Consumer依赖这个项目时,就会知道实现类具体实现.
2. 新建Maven Project, 写接口的实现类(dubbo-service-impl)
3. 在duboo-service-impl中配置pom.xml
3.1 依赖接口
3.2 依赖dubbo,去掉老版本spring
3.3 依赖新版本spring
3.4 依赖zookeeper客户端工具zkClient
此次采用的是老的dubbo,配置的时候需要配置spring,且在配置dubbo时需要配置<exclusions>标签,去除掉依赖的spring2.5.3版本,从新配置新的spring版本。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dubbo.bjsxt</groupId>
<artifactId>dubbo-service-impl</artifactId>
<version>0.0.1-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>com.dubbo.demo</groupId>
<artifactId>dubbo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- <dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency> -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<!-- zkclient 当provider向zookeeper注册中心注册时,使用的工具就在这个jar包中 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency> </dependencies>
</project>
从2017年九月开始,dubbo的维护开始又apache接受,现在可以使用dubbo的2.6+以上的版面,这些版本不在是依赖spring的2.5.3
如下图
4. 新建实现类,并实现接口方法.
5. 新建配置文件applicationContext-dubbo.xml,并配置
5.1 <dubbo:application/> 给provider起名,在monitor或管理工具中区别是哪个provider
5.2 <dubbo:registry/> 配置注册中心
5.2.1 address:注册中心的ip和端口
5.2.2 protocol使用哪种注册中心
5.3 <dubbo:protocol/> 配置协议
5.3.1 name 使用什么协议
5.3.2 port: consumer invoke provider时的端口号
5.4 <dubbo:service/> 注册接口
5.4.1 ref 引用接口实现类<bean>的id值
<?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:context="http://www.springframework.org/schema/context"
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://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 给当前的provider 起名字,因为provider都是需要被注册或者监控中心知道 -->
<dubbo:application name="dubbo-service"/> <!-- 配置注册中心,2181是注册中心的端口 ,protocol代表使用的注册中心是zookeeper-->
<dubbo:registry address="192.168.153.128:2181" protocol="zookeeper"> </dubbo:registry>
<!-- 配置端口,代表当前的provider占用当前计算机的端口 ,name的属性表示才采用的协议是dubbo协议-->
<dubbo:protocol name="dubbo" port="2880">
</dubbo:protocol>
<!-- 注册功能 -->
<dubbo:service interface="com.bjsxt.service.DemoService" ref="demoServiceImpl"></dubbo:service>
<!-- 注册实现类 -->
<bean id="demoServiceImpl" class="com.bjsxt.service.impl.DemoServiceImpl"></bean> <!-- <dubbo:annotation package="com.bjsxt.service.imple"/> --> <!-- https://mvnrepository.com/artifact/com.101tec/zkclient --> </beans>
6. 启动容器
6.1 通过spring方式启动
6.1.1 applicationContext-dubbo.xml位置没有要求
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-dubbo.xml");
ac.start();
System.out.println("启动成功");
System.in.read();
6.2 使用dubbo提供的方式启动(推荐使用这种方式)
6.2.1 要求applicationContext-dubbo.xml必须放入类路径下/META-INF/spring/*.xml(在做实验时,返现dubbo配置文件只能放在src/main/resources下)
package com.bjsxt.test; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.alibaba.dubbo.container.Main; public class Demo {
public static void main(String[] args) {
ClassPathXmlApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext-dubbo.xml");
/*ac.start();
System.out.println("启动成功");*/ //官方推荐
//配置文件放在src/main/resources/META-INF/spring/目录下
Main.main(args);
}
}
dubbo入门学习 五 provider端的编写的更多相关文章
- dubbo入门学习(五)-----dubbo的高可用
zookeeper宕机与dubbo直连 现象 zookeeper注册中心宕机,还可以消费dubbo暴露的服务. 原因 健壮性 l 监控中心宕掉不影响使用,只是丢失部分采样数据 l 数据库宕掉后,注册中 ...
- dubbo入门学习笔记之入门demo(基于普通maven项目)
注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...
- dubbo入门学习笔记之环境准备
粗略的学完springcloud后由于公司的项目有用到一点dubbo,刚好手头上又有dubbo的学习资料,于是趁机相对系统的学了下duboo框架,今天开始记录下我的所学所悟;说来惭愧,今年之前,作为一 ...
- SCARA——OpenGL入门学习五六(三维变换、动画)
OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...
- dubbo 学习笔记 -- provider端
服务端的配置文件: provider.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...
- Dubbo 入门学习笔记
项目结构 模块介绍: DubboAPI ----API接口 DubboConsumer ----消费者 DubboProvider ----生产者 DubboAPI Service 提供的接口 ...
- dubbo入门学习(一)-----分布式基础理论、架构发展以及rpc、dubbo核心概念
一.分布式基础理论 1.什么是分布式系统? <分布式系统原理与范型>定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed ...
- dubbo入门学习(二)-----dubbo hello world
一.dubbo hello world入门示例 1.提出需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在需要创建两个服务模块进行测试: 模块 功能 订单服务web模块 创 ...
- C语言程序设计入门学习五步曲(转发)
笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手.发生这种现象的原因有三个: 一.所谓的看懂听明白,只是很肤浅的 ...
随机推荐
- Jmeter之数据库性能测试
公司的**产品急待上线,但查询订单操作响应很慢,为了准确定位问题,特对几个大数据查询语句进行性能测试. 环境介绍:数据库用的MYSQL,采用分布式布置,本次单压测一台数据库服务器,查询待支付订单.待消 ...
- ReactiveX 学习笔记(27)使用 RxJS + Vue.js 进行 GUI 编程
课题 程序界面由3个文本编辑框和1个文本标签组成. 要求文本标签实时显示3个文本编辑框所输入的数字之和. 文本编辑框输入的不是合法数字时,将其值视为0. 3个文本编辑框的初值分别为1,2,3. 创建工 ...
- jquery通过AJAX从后台获取信息并显示在表格上的类
前一阵我写了:<jquery通过AJAX从后台获取信息并显示在表格上,并支持行选中.>现在,我把他们处理了一下,不需要每次写代码了: 具体代码如下: //获取数据并显示数据表格 funct ...
- mybatis sql in not in的使用
xml配置 <select id="SelectAllByNotsampleNo" resultMap="BaseResultMap" parameter ...
- python flask 解决中文乱码
response = make_response(output_string)response.headers['Content-Type'] = 'text/plain;charset=UTF-8' ...
- R语言-图形辅助
1.画底纹格子 grid()函数 > plot(rnorm(100)) > grid() #画底纹格子 > grid(nx=NA, ny=8, #画水平底纹,横坐标无分隔,纵坐 ...
- 微信小程序创建一个新项目
1. 新建一个文件夹. 2. 打开微信小程序开发工具,导入新建文件夹:然后输入创建的appId:会自动生成一个project.config.json,打开这个文件,会看到appid这个字段. 3.可以 ...
- UniRX简述
UniRX:是一个Unit3D的编程框架,专注于解决异步逻辑,使得异步逻辑的实现更加简单优雅. 例如:实现“只处理第一次鼠标点击事件”: Observable.EveryUpdate() .Where ...
- ASP.NET网站不能在VS中调试
点击VS2010工具栏中绿色的小箭头运行网站没问题,按说运行后,应该处于正在运行状态,这个小箭头会变成灰色.但是没有变化,仍然是绿色的小箭头.所以设置断点根本没有截获.任务栏右下角显示的Develop ...
- Win10系统总是提示"在商店中查找应用"的关闭方法
Win10系统总是提示"在商店中查找应用"该怎么关闭?win10中打开文件的时候总是提示在商店中查找应用,但是自己的电脑中有程序可以打开这个文件,不需要去商店中下载,该怎么取消这个 ...