使用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

相關文章
相關標籤/搜索