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)
这个地方,我之做第三种的案例
生成的打包文件中,lib和 xx.jar是我们想要的东西
jar包里面的数据类容
这个文件MANIFEST.MF是java的编译的规范,里面定义了依赖的jar包和主函数的入口,我们可以看到主函数的入口是 阿里巴巴所推荐的Main函数
class/META-INF/MANIFEST.MF
最后看到了,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启动成功了
查看管控台,发现服务已经注册成功了
相关文章推荐
- 【dubbo】服务运行的三种方式
- 解决dubbo注册zookepper服务IP乱入问题的三种方式
- 【dubbo】dubbo服务注册三种方式
- dubbo服务的运行方式
- Dubbo服务的运行方式(使用maven构建dubbo可执行的jar包)
- dubbo服务的三种启动方式
- 【dubbo】服务提供者运行的三种方式
- dubbo服务的运行方式(2)
- Dubbo分布式服务治理(二)——Dubbo服务运行方式&&监控中心安装(Linux)
- 解决dubbo注册zookepper服务IP乱入问题的三种方式
- 解决dubbo注册zookepper服务IP乱入问题的三种方式
- linux中apache服务的三种不同访问方式
- Windows下Nginx以服务的方式运行
- AngularJS 服务层的三种创建方式(provider,factory,service)
- [转] 使用maven运行java main的三种方式
- linux运行命令的三种方式
- Hive 运行三种方式之 本地mysql
- hive 运行三种方式 之 remote metastore service
- centos6.x下让redis以服务方式运行
- php-fpm 三种运行方式 ondemand static dynamic