您的位置:首页 > 其它

Dubbo之服务运行的三种方式-yellowcong

2017-10-15 21:09 309 查看
Dubbo服务运行

1、使用Servlet容器运行(Tomcat、Jetty等) -不可用

缺点:增加复杂性(端口、管理)

浪费资源(内存)

需要占用多个端口和内存,这种方式是不可取的

2、自己建立Main方法类运行(Srping容器) 本地调试用,本地调试的方式是很重要的,在本地测试中,必须掌握。

缺点:Dobbo本省提供的高级特性没用上,自己的启动类可能有缺陷

案例查看:Dubbo之入门案例-yellowcong

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

优点:框架本身提供(com.alibaba.dubbo.container.Main),可是现优雅关机(ShutdownHook)

这个地方,我之做第三种的案例

环境搭建

在配置文件中,需要注意我们配置的spring.xml文件,需要打包到META-INF/spring目录下,这个是dubbo规范 ,需要这么做

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>

<groupId>yellowcong</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>dubbo-provider</name>
<url>http://maven.apache.org</url>

<!-- 配置国内比较快的 阿里云的Maven仓库 -->
<repositories>
<repository>
<id>aliyunmaven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
<!-- zkclient 客户端 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

<!-- Junit 测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<finalName>dubbo-provider</finalName>
<!-- 配置文件的打包操作 -->
<resources>
<resource>
<targetPath>${project.build.directory}/classes</targetPath>
<directory>src/main/resources</directory>
<!-- 将 xml和properties文件都打包到build目录下的 classes目录下 -->
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
<!-- 将Spring 的配置文件单独打包到META-INF目录下 -->
<!-- 自动加载META-INF/spring目录下的所有Spring配置。 配置:(配在java命令-D参数或者dubbo.properties中)
dubbo.spring.config=classpath*:META-INF/spring/*.xml 配置spring配置加载位置 -->
<resource>
<targetPath>${project.build.directory}/classes/META-INF/spring</targetPath>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>spring-provider.xml</include>
</includes>
</resource>
</resources>

<!-- 解决Maven在Eclipse内执行的执行了一系列的生命周期引起冲突 -->
<pluginManagement>
<plugins>
<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>
<version>2.9</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<type>jar</type>
<incluedTypes>jar</incluedTypes>
<useUniqueVersions>false</useUniqueVersions>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>


打包服务

mvn clean

mvn install


生成的打包文件中,lib和 xx.jar是我们想要的东西



将lib和jar拷贝到服务器

目录项目下,有jar和lib依赖包



jar包里面的数据类容



这个文件MANIFEST.MF是java的编译的规范,里面定义了依赖的jar包和主函数的入口,我们可以看到主函数的入口是 阿里巴巴所推荐的Main函数

class/META-INF/MANIFEST.MF

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: yellowcong
Class-Path: . lib/dubbo-2.5.6.jar lib/spring-context-4.3.10.RELEASE.ja
r lib/spring-aop-4.3.10.RELEASE.jar lib/spring-core-4.3.10.RELEASE.ja
r lib/commons-logging-1.2.jar lib/spring-expression-4.3.10.RELEASE.ja
r lib/spring-beans-4.3.10.RELEASE.jar lib/spring-web-4.3.10.RELEASE.j
ar lib/javassist-3.20.0-GA.jar lib/netty-3.2.5.Final.jar lib/zkclient
-0.1.jar lib/zookeeper-3.3.3.jar lib/jline-0.9.94.jar lib/log4j-1.2.1
4.jar
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_102
Main-Class: com.alibaba.dubbo.container.Main


启动dubbo服务のjar包

//启动服务
java -jar dubbo-provider.jar




最后看到了,dubbo启动成功了



查看管控台,发现服务已经注册成功了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: