dubbo服务运行方式
1.使用servlet容器运行(tomcat、Jetty等)---不可取
增加复杂性(端口、管理),浪费资源
2.自建main方法来运行(spring容器)---不建议,本地测试可用
dubbo的高级特性没用上,自己写的类可能有缺陷
3.使用dubbo框架提供的Main方法类来运行(spring容器)---建议使用
框架本身提供(com.alibaba.dubbo.container.Main)
可实现优雅关机(ShutdownHook)
注意点:
spring-context.xml
<import resource="classpath:spring/spring-xxx.xml">
优雅关机
服务提供方:不接受新请求,检查线程池是否有线程在运行,如果有则等待执行完成,除非超时,强制关闭
服务消费方:不在发起新的调用请求,检测有没有请求的响应没有返回,如果有,等待返回,除非超时,强制关闭
设置优雅停机超时时间,默认10秒
<dubbo:application ...>
<dubbo:paraneter key="shutdown.timeout" value="60000">
</dubbo:application>
如果使用kill -9 PID 强杀进程,dubbo是不会优雅关机的,只有使用kill PID才会优雅关机。
1.构建edu-service-user项目的依赖maven install
edu-common-parent maven install
edu-common maven install
edu-common-config maven install
edu-common-core maven install
edu-facade-user maven install
edu-service-user maven install
2.服务容器(com.alibaba.dubbo.container.Main)是一个Main方法,会自动加载META-INF/spring目录下的所有spring配置。
3.保留edu-service-user.jar及他的依赖lib文件夹
java -jar edu-service-user.jar &
查看dubbo服务控制台
1.使用servlet容器运行(tomcat、Jetty等)---不可取
增加复杂性(端口、管理),浪费资源
2.自建main方法来运行(spring容器)---不建议,本地测试可用
dubbo的高级特性没用上,自己写的类可能有缺陷
3.使用dubbo框架提供的Main方法类来运行(spring容器)---建议使用
框架本身提供(com.alibaba.dubbo.container.Main)
可实现优雅关机(ShutdownHook)
注意点:
spring-context.xml
<import resource="classpath:spring/spring-xxx.xml">
优雅关机
服务提供方:不接受新请求,检查线程池是否有线程在运行,如果有则等待执行完成,除非超时,强制关闭
服务消费方:不在发起新的调用请求,检测有没有请求的响应没有返回,如果有,等待返回,除非超时,强制关闭
设置优雅停机超时时间,默认10秒
<dubbo:application ...>
<dubbo:paraneter key="shutdown.timeout" value="60000">
</dubbo:application>
如果使用kill -9 PID 强杀进程,dubbo是不会优雅关机的,只有使用kill PID才会优雅关机。
1.构建edu-service-user项目的依赖maven install
edu-common-parent maven install
edu-common maven install
edu-common-config maven install
edu-common-core maven install
edu-facade-user maven install
edu-service-user maven install
2.服务容器(com.alibaba.dubbo.container.Main)是一个Main方法,会自动加载META-INF/spring目录下的所有spring配置。
edu-service-user的pom.xml
<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>
<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>
3.保留edu-service-user.jar及他的依赖lib文件夹
java -jar edu-service-user.jar &
查看dubbo服务控制台