服务器:192.168.1.121(mydubbo-server)

一、Dubbo服务的运行方式

1、使用Servlet容器运行(Tomcat、Jetty等)—-不可取 缺点:增加复杂性(端口、管理)
tomcat/jetty等占用端口,dubbo服务也需要端口
浪费资源(内存):单独启动tomcat,jetty占用内存大
2、自建Main方法类来运行(spring容器) —-不建议(本地调试可用)
缺点: Dobbo本身提供的高级特性没用上
自已编写启动类可能会有缺陷
3、使用Dubbo框架提供的Main方法类来运行(Spring容器)—-建议使用 优点:框架本身提供(com.alibaba.dubbo.container.Main)
可实现优雅关机(ShutdownHook)
注意点

spring-context.xml
<import resource="classpath:spring/xxx.xml" />

官方:服务容器的加载内容可以扩展,内置了spring, jetty, log4j等加载,可通过Container扩展点进行扩展
Dubbo是通过JDK的ShutdownHook来完成优雅停机的,所以如果用户使用”kill -9 PID”等强制关闭指令,是不会执行优雅停机的,只有通过”kill PID”时,才会执行。
原理:
服务提供方停止时,先标记为不接收新请求,新请求过来时直接报错,让客户端重试其它机器。 然后,检测线程池中的线程是否正在运行,如果有,等待所有线程执行完成,除非超时,则强制关闭。
服务消费方停止时,不再发起新的调用请求,所有新的调用在客户端即报错。然后,检测有没有请求的响应还没有返回,等待响应返回,除非超时,则强制关闭。

二、Maven构建Dubbo服务可执行Jar包的配置

<!--MAVEN打包duboo可执行jar begin -->
<build><finalName>mydubbo-server</finalName><resources><resource><targetPath>${project.build.directory}/classes</targetPath><directory>src/main/resources</directory><filtering>true</filtering><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource><!-- 结合com.alibaba.dubbo.container.Main --><resource><targetPath>${project.build.directory}/classes/META-INF/spring</targetPath><directory>src/main/resources/spring</directory><filtering>true</filtering><includes><include>spring-context.xml</include></includes></resource></resources><pluginManagement><plugins><!-- 解决Maven插件在Eclipse内执行了一系列的生命周期引起冲突 --><plugin><groupId>org.eclipse.m2e</groupId><artifactId>lifecycle-mapping</artifactId><version>1.0.0</version><configuration><lifecycleMappingMetadata><pluginExecutions><pluginExecution><pluginExecutionFilter><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><versionRange>[2.0,)</versionRange> <goals><goal>copy-dependencies</goal></goals></pluginExecutionFilter><action><ignore /></action></pluginExecution></pluginExecutions></lifecycleMappingMetadata></configuration></plugin></plugins></pluginManagement><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><useUniqueVersions>false</useUniqueVersions><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin></plugins>
</build>
<!--MAVEN打包duboo可执行jar end -->
用Maven将工程打成jar包后,进入工程的target目录后,将mydubbo-server.jar和lib目录拷贝到指定的目录下,命令行运行java -jar mydubbo-server.jar就可以运行dubbo服务了。(注:lib目录下的所有jar包是mydubbo-server.jar的依赖jar)

Dubbo之——将Dubbo服务打包成Jar包相关推荐

  1. 将Spring Boot项目打包成jar包war包

    任务一:将Spring Boot项目打包成jar包 1.在pom.xml文件中添加依赖 2.通过cmd命令行来进行打包jar包(首先进入项目的目录中) 3.进入项目中的target目录下查看包 4.使 ...

  2. linux上jar包无法识别本地文件格式,解决使用maven将项目打包成jar包后运行在linux系统中无法读取jar包中文件的问题...

    哈哈,之前计划的每周至少更新一个博客的计划又因为各种原因都泡汤了.看来坚持真得是一件挺让人头疼的问题,无论如何,从这周开始接下来每周一定要至少更新一个技术博客,欢迎大家监督! 好,言归正传.之前前几周 ...

  3. springboot打包成jar包后找不到xml,找不到主类的解决方法

    springboot打包成jar包后找不到xml,找不到主类的解决方法 参考文章: (1)springboot打包成jar包后找不到xml,找不到主类的解决方法 (2)https://www.cnbl ...

  4. [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目

    (1)项目导入JAR包: 1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面. 2.右键点击项目,Bulid Path->Configure Build Path 3.在设置Libr ...

  5. java打包拆包_[Java] Java 打包成jar包 和 解压jar包

    解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...

  6. 在IDEA中将SpringBoot项目打包成jar包的方法 不要用 在上面有可以用的

    在IDEA中将SpringBoot项目打包成jar包的方法 2018年03月07日 10:43:52 叶叶叶叶大爷 阅读数 71375 版权声明: https://blog.csdn.net/qq_3 ...

  7. linux java jar打包_【Java】Java程序打包成jar包在Linux上运行

    当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...

  8. idea中将java项目中的单个类打包成jar包

    文章目录 打包jar包 导入jar包使用 JAR文件的全称是Java Archive File,即Java档案文件.JAR文件是一种压缩文件,与常见的ZIP压缩文件兼容,被称为JAR包.JAR文件与z ...

  9. eclipse中简单实现自己的工具类打包成jar包并在项目中使用

    在现实开发中我们经常会自己写工具方便别人使用,所以就要将我们写好的工具打包成jar包,给别人调用 一.首先,编写一个类MyFristJar.java,代码如下: package com.zl.myja ...

最新文章

  1. win 64位系统安装带有c编写的python模块出现ValueError: [u'path']解决
  2. abovedisplayskip无效_latex减少图片和图片解释文字之间的距离、调整公式与正文间距离,调整空白大小:...
  3. 依赖ConstraintLayout报错,Could not find *****,Failed to resolve:*****
  4. python一个富翁试图与陌生人做一笔生意_VB实验报告一
  5. SAP UI5 group function调试
  6. nodejs 30行代码 爬豆瓣电影数据
  7. 新版 Android 已支持 FIDO2 标准,免密登录应用或网站
  8. 利用python生成一个导出数据库的bat脚本文件
  9. opencvpython教程百度云资源_Python+OpenCV图像处理入门,视频教程下载
  10. Python花式编程案例集锦(9):sorted()函数中消失的cmp参数
  11. CentOS7开机进入emergency mode
  12. Spring搭建本地源码调试环境
  13. SSIS数据转换器及字符转换器使用
  14. 腾讯云-语音指定模板-电话告警通知
  15. 基于SSM超越宠物医院诊治系统
  16. IIS Express 7.5 directory browsing 启用目录浏览
  17. 苹果编程新纪元 之 Swift
  18. 政策解读|2023法定节假日安排发布了,HR需要跟进的三件事
  19. 国内 WhatsApp 能用吗?WhatsApp对外贸企业的重要性?
  20. 论文阅读训练(13)

热门文章

  1. python远程桌面控制_手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
  2. Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法
  3. Python学习笔记--程序控制结构
  4. JavaScript实现完整的ComplexNumber复数类(附完整源码)
  5. wxWidgets:wxJoystickEvent类用法
  6. wxWidgets:wxDynamicLibrary类用法
  7. boost::system::error_category相关的测试程序
  8. boost::math模块非有限环回的基本测试
  9. boost::hana::make_type用法的测试程序
  10. boost::hana::eval用法的测试程序