Dubbo服务的运行方式(使用maven构建dubbo可执行的jar包)

来源:互联网 发布:ug10.0编程视频教程 编辑:程序博客网 时间:2024/05/21 09:26

1.使用Servlet容器运行(Tomcat Jetty等)—–不建议

缺点:增加复杂性(端口,管理) 浪费资源(内存)

2.自建Main方法来执行(Spring容器) —不建议(仅限本地调试)

缺点:Dubbo本身的高级特性没用上 启动类可能会有缺陷
public class DubboProvider {    private static final Log log = LogFactory.getLog(DubboProvider.class);    public static void main(String[] args) {        try {            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");            context.start();        } catch (Exception e) {            log.error("== DubboProvider context start error:",e);        }        synchronized (DubboProvider.class) {            while (true) {                try {                    DubboProvider.class.wait();                } catch (InterruptedException e) {                    log.error("== synchronized error:",e);                }            }        }    }}

3.用Dubbo框架提供的Main方法类来运行(Spring容器) –建议使用

优点:框架本身提供 可优雅的实现关闭

1 在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>

执行maven install生成jar包

在生成的jar包目录下 执行 java -jar source.jar 即可启动dubbo服务

阅读全文
0 0
原创粉丝点击