dubbo官方提供了三种注册方式。分别是:
1、利用main方法进行服务注册
2、利用tomcat容器
3、利用dubbo官方提提供的com.alibaba.dubbo.container.Main方法
三种方式各有利弊。这篇文章以一个简单的例子来简单的介绍一下这三种注册方式,在看这篇博客前,相信已经熟悉dubbo+zk的架构和项目中成员的组成了。

Main方法

这种方式需要在项目中新建一个类来专门执行main方法,去加载配置文件。所以这种方式更加适合开发阶段的使用,方便开发人员进行单元测试。
public class Provider {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });context.start();System.out.println("启动成功");System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟}
}

web容器

这种方式不需要添加任何多余的类或方法,只需要将provider注册服务的配置文件放在web.xml中加载到web容器中即可。
这种方式服务注册的配置文件是支持中文格式的。
但是这种方式增加了tomcat的耦合性,web容器是用来运行web程序的,还需要分出额外的精力去管理dubbo服务注册,
造成管理压力。同时对内存的占用也会加大,影响程序性能。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="appication" version="2.5"><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
</web-app>

利用maven生成jar包通过Java-jar命令注册服务

这种方式可以将需要注册的服务单独放在服务器上进行管理。方便,有利于分布式应用的管理。利于分布式应用服务的扩展。
1、pom文件的配置
<build><resources><resource>
<!--生成的classes文件的路径,此文件夹中包含运行时的所有文件,可以不配置-->        <targetPath>${project.build.directory}/classes</targetPath><directory>src/main/resources</directory><filtering>true</filtering><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource><resource><targetPath>${project.build.directory}/classes/META-INF/spring</targetPath><directory>src/main/resources/spring</directory><filtering>true</filtering><includes><include>applicationContext.xml</include></includes></resource></resources><!--下面的必须配置--><plugins><!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><classesDirectory>target/classes/</classesDirectory>
<archive><manifest><mainClass>com.alibaba.dubbo.container.Main</mainClass><!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 --><useUniqueVersions>false</useUniqueVersions><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest><manifestEntries><Class-Path>.</Class-Path></manifestEntries></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><type>jar</type><includeTypes>jar</includeTypes><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin></plugins></build>
2、创建服务注册时相应的文件夹
这个是必须要建的,可能是默认生成的路径,如果配置resource后,targetPath也是这个

3、利用maven进行打包
install到本地后,会在target中生成:lib和你要打的jar包

生成的target目录下的情况:

classes是在直接执行com.alibaba.dubbo.container.Main方法时运行时所需要的所有文件.class文件和xml.4、错误
在target目录下,通过java -jar 命令执行时报错;

原因:在配置文件中存在中文导致的。注释中的中文也是不可以的。将中文注释删掉后,执行成功!


查看效果:

最后,利用这三种注册方式的就都完成了。
还想让大家看的一个效果;

发现同一个ip的同一个端口注册一次就不允许二次注册服务了。这个端口号也是我们自定义的来管理我们的分布式服务的!

【dubbo】dubbo服务注册三种方式相关推荐

  1. k8s-(七)暴露服务的三种方式

    上一篇博客总结的项目怎么部署到k8s上运行,但是运行pod ip是docker网桥的IP地址段进行分配的,通常是一个虚拟的二层网络,外部网络并没有办法访问,并且,pod ip是随时会变的,不是固定的, ...

  2. windows系统启动tomcat服务的三种方式

    1.双击执行tomcat/bin目录下的startup.bat文件,会自动显示一个命令行窗口(关闭窗口,服务会停止),不推荐此方法,会严重影响系统访问速度. 2.将tomcat以服务的形式安装,然后在 ...

  3. window10进入“服务”的三种方式

    1.命令行查找进入(最简单直接,推荐使用) 2.从"管理"进入 3.从控制面板进入

  4. 安卓获取打气筒服务的三种方式

  5. SpringBoot系列:9. 分布式系统,Dubbo,Zookeeper服务注册与发现

    前言 本章主要对分布式系统,RPC的实现方式和Zookeeper实现做一个详细的概述并通过实战代码加深对他们的了解. 1. 分布式 什么是分布式系统? :"分布式系统是若干独立计算机的集合, ...

  6. 为 Angular service 注册 provider 的三种方式

    对于要用到的任何服务(service),你必须至少注册一个提供者(provider).服务可以在自己的元数据中把自己注册为提供者,这样可以让自己随处可用.或者,你也可以为特定的模块或组件注册提供者. ...

  7. Windows注册服务的几种方式

    原文地址:Windows注册服务的几种方式 - BIGTREE 方式一:使用Windows自带的sc命令 1.使用管理员权限打开cmd窗口 2.注册服务命令: sc create 服务名 binpat ...

  8. Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  9. Linux中设置服务自启动的三种方式(转)

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

最新文章

  1. 《C++代码设计与重用》——1.2 重用的神话
  2. 电脑无线网络显示红叉_不能播放视频怎么办?小编教你电脑不能播放视频如何解决...
  3. csp php,CSP学习笔记(持续学习更新)
  4. 一个视觉交互设计失败的案例
  5. 编程之美 set 17 拈游戏分析 (2)
  6. 数据结构与算法(C语言) | 栈和队列——栈(自己做过测试)
  7. java robot 控制 不用用户 界面_编写一个基于Java Robot类的屏幕捕获工具
  8. Scala入门到精通——第二十三节 高级类型 (二)
  9. 最难啃的《深度学习》圣经花书,居然新出版了视频课!
  10. C# UdpClient使用Receive和BeginReceive接收消息时的不同写法
  11. java8 interface_Java8新特性:函数式接口@FunctionalInterface使用说明
  12. 字符串(strlen)
  13. go标准库的学习-net
  14. 阿里巴巴常用的 12 个后端开发工具,建议你快快收藏!
  15. css横排文字光影效果_css实现发光文字,以及一点点js特效
  16. 实现 EC20 4G模块PPP拨号上网
  17. 时空恋旅人 豆瓣影评
  18. 失落城堡手游获取服务器信息99,失落城堡手游更新情况介绍 游戏更新大全
  19. 不同语言编程能整合到一起吗_台达DVPPLC编程技巧大全(105讲)第三讲
  20. C++Primer PLus 第五版读书笔记

热门文章

  1. Ubuntu 搭建PPTP服务器
  2. Ijkplayer直播App卡顿问题分析
  3. java dom解析xml字符串_dom4j解析xml字符串实例
  4. Windows 安装 JDK-11
  5. ajax 跨域请求post请求,ajax POST跨域请求完美解决
  6. 强化学习——day13 马尔科夫决策过程MDP
  7. Java AES256加密解密实现
  8. 高德地图JSAPI的使用注意项
  9. 《点睛:ActionScript3.0游戏互动编程》——2.3 使用斜角滤镜模拟Photoshop的斜面样式...
  10. 狼少女 辛希雅游戏评价