使用Maven构建dubbo服务可执行的jar包

1.使用Servlet 容器运行    ---不可取
 缺点:增加复杂性  浪费资源
原因:
tomcat 运行需要端口, 一个tomcat 跑多个服务,也需要配置端口,是一个问题, 增加管理的复杂性, 本身要多Servlet容器进行配置, 内存溢出之类的
浪费资源:什么程序不部署,单启动tomcat 就要消耗内存
实现:
      做成一个web工程 ,web.xml ,启动之后会在zk上注册服务
2. 自建main 方法来运行(Spring 容器)-- 不建议 (本地调试可用)
  缺点: Dubbo 本身提供的高级性能没用上, 自己编写的启动类可能会有缺陷
   原因: 自己写一个main 方法类,进行启动,本地开发,很方便, 但是不推荐生产使用,本地调试可以用, dubbo很多高级特性没用上。
3. 使用Dubb框架提供的main 方法来运行    (spring容器)--建议使用
   优点:框架本身提供 com.alibaba.dubbo.container.Main
   可实现优雅关机(ShutDownHook)
优雅关机, linux 命令 kill  -9命令会强制杀掉, 很多业务运行,现在申请关机, 业务逻辑还没执行完, 但是强制杀掉,会导致业务逻辑还没有处理完, 优雅关机,先不接受请求,检查线程是否运行,等待线程执行完,再进行关闭,可以实现不会立即关机, 详情查看官方文档
如何使用Maven进行构建dubbo服务可执行jar包:
首选:
    是pom.xml 中build标签

 <buiild>
</build>

<groupId>cpcn.payment</groupId>  
<artifactId>Paymet</artifactId>  
<packaging>jar</packaging>  
<version>1.0.0.01-SNAPSHOT</version>  
<name>Payment</name> 

主要看一下build里面的配置:

Spring Container
自动加载META-INF/spring目录下的所有Spring配置。
配置:(配在java命令-D参数或者dubbo.properties中)
dubbo.spring.config=classpath*:META-INF/spring/*.xml ----配置spring配置加载位置

<!--MAVEN打包duboo可执行jar begin -->  
<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>  
<!--MAVEN打包duboo可执行jar end -->

默认加载META-INF/spring

    需要将配置文件拷贝到指定目录下,

具体可以参考博客: 打包插件的使用

 

 

 

 

转载于:https://my.oschina.net/LucasZhu/blog/1558587

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值