使用maven构建dubbo服务可执行jar包
使用maven构建dubbo服务可执行jar包
- 一、dubbo服务启动方式分析
- 1、使用Servlet容器运行(Tomcat、Jetty等)----不可取
- 2、自建Main方法运行(Spring容器) ----不建议(本地调试可用)
- 3、Dubbo框架提供Main方法类运行(Spring容器)----推荐使用
- 二、修改spring-context.xml
- 三、修改服务pom.xml文件
- 四、打包
- 4.1 右击edu-common-parent 项目的pom.xml run as-->maven install
- 4.2 右击edu-facade-user 项目的pom.xml run as-->maven install
- 4.3 右击edu-service-user 项目的pom.xml run as-->maven install
- 五、运行
- 六、查看结果
- 备注
一、dubbo服务启动方式分析
1、使用Servlet容器运行(Tomcat、Jetty等)----不可取
缺点:增加复杂性(端口、管理)
tomcat/jetty等占用端口,dubbo服务也需要端口
浪费资源(内存):单独启动tomcat,jetty占用内存大
2、自建Main方法运行(Spring容器) ----不建议(本地调试可用)
缺点: Dobbo本身提供的高级特性没用上,自已编写启动类可能会有缺陷
3、Dubbo框架提供Main方法类运行(Spring容器)----推荐使用
优点:框架本身提供(com.alibaba.dubbo.container.Main)
可实现优雅关机 dubbo.shutdown.hook
消费者:停止时,不再发送新的请求,所有新的调用在客户端发生报错。然后检查有没有请求响应没有返回,若有等待返回。除非超时,则强制关闭。
生产者:停止时,先标记为不接收新请求,新请求过来时报错,让消费者尝试其他机器。然后检测线程池中,是否有其他线程正在运行,如果有等待线程执行完毕。除非超时,则强制关闭。
二、修改spring-context.xml
<import resource="spring-mybatis.xml" />
<import resource="dubbo-provider.xml" />
改为
<import resource="classpath:spring/spring-mybatis.xml" />
<import resource="classpath:spring/dubbo-provider.xml" />
三、修改服务pom.xml文件
在pom.xml 中加入build
<build>
<finalName>edu-service-user</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>
<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>
四、打包
打包的时候,要根据项目依赖,逐层打包。
最终提供服务的项目为edu-service-user
他所依赖edu-facade-user、edu-common-parent
所以要先将edu-common-parent和edu-facade-user 打包到本地资源库
~~windows–>preferences–>maven–>uesrsettings
4.1 右击edu-common-parent 项目的pom.xml run as–>maven install
4.2 右击edu-facade-user 项目的pom.xml run as–>maven install
4.3 右击edu-service-user 项目的pom.xml run as–>maven install
打包完成 查看target包,生成lib和edu-service-user.jar 成功
五、运行
找到工作空间edu-service-user 项目的 target 将lib和edu-service-user.jar 复制到C:\usertest下,cmd进入。
输入命令 java -jar edu-service-user.jar & (启动之前不要忘记启动zookeper)
六、查看结果
备注
安装dubbo管控台链接:https://blog.csdn.net/han_xiaoxue/article/details/87921126
安装zookeper链接:https://blog.csdn.net/han_xiaoxue/article/details/86747509
此次应用项目链接:https://download.csdn.net/download/han_xiaoxue/10957427
项目介绍:https://blog.csdn.net/han_xiaoxue/article/details/87281795