使用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标签java

 <buiild>
</build>linux

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

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

Spring Container
自动加载META-INF/spring目录下的全部Spring配置。
配置:(配在java命令-D参数或者dubbo.properties中)
dubbo.spring.config=classpath*:META-INF/spring/*.xml ----配置spring配置加载位置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/springapache

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

具体能够参考博客: 打包插件的使用app

相关文章
相关标签/搜索