日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dubbo之——将Dubbo服务打包成Jar包

發布時間:2024/9/27 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dubbo之——将Dubbo服务打包成Jar包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

服務器: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包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。