dubbo的main方法启动
2017-12-07 19:32
344 查看
想到一个问题:公司项目是dubbo实现服务治理的,启动dubbo是通过自带的main方法,这个方式
要求spring配置文件存放至
classpath*:META-INF/spring/*.xml路径底下。那么我们公司的是如何实现的,好像并没有将spring配置文件放在META-INF中呀。。。
怎么回事???
原来是在pom.xml里面配置的,可以将配置文件拷贝到META-INF/spring/下
网友的一篇解释(感谢,侵删):
http://blog.csdn.net/u013168445/article/details/71194666
------------------------------------------------------------------------------------------------------------------------------------------
1:使用tomcat、jetty等servlet容器运行
2:自己写一个Main方法运行
3:使用dubbo框架提供的Main方法运行
前面两种有一定的局限性,很多缺点,具体就不一一列举,有兴趣的同学可以研究一下,今天就给大家讲如何实现第三种方式
优点:由框架本身提供,可实现优雅关机
按照dubbo官网解说,要使得Main能正确的启用Spring容器,要求spring配置文件存放至
classpath*:META-INF/spring/*.xml路径底下
dubbo官方网址 http://dubbo.io/User+Guide-zh.htm
项目是maven项目,框架是spring+mybatis+dubbo
[java] view
plain copy
<span style="font-size:18px;"><build>
<!--jar包名称-->
<finalName>asset-server</finalName>
<resources>
<!--recources文件夹下的所有文件都打进jar包-->
<resource>
<targetPath>${project.build.directory}/classes</targetPath>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
<!-- 上文有说过,由于我的applicationContext.xml文件不是在META-INF下,这一段代码的作用就是将 applicationContext.xml文件拷贝到META-INF目录下-->
<resource>
<targetPath>${project.build.directory}/classes/META-INF/spring</targetPath>
<directory>src/main/resources/spring</directory>
<filtering>true</filtering>
<includes>
<include>applicationContext.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></span>
要求spring配置文件存放至
classpath*:META-INF/spring/*.xml路径底下。那么我们公司的是如何实现的,好像并没有将spring配置文件放在META-INF中呀。。。
怎么回事???
原来是在pom.xml里面配置的,可以将配置文件拷贝到META-INF/spring/下
网友的一篇解释(感谢,侵删):
http://blog.csdn.net/u013168445/article/details/71194666
------------------------------------------------------------------------------------------------------------------------------------------
一:运行spring容器的方式有三种
1:使用tomcat、jetty等servlet容器运行2:自己写一个Main方法运行
3:使用dubbo框架提供的Main方法运行
前面两种有一定的局限性,很多缺点,具体就不一一列举,有兴趣的同学可以研究一下,今天就给大家讲如何实现第三种方式
二:Main配置详讲
优点:由框架本身提供,可实现优雅关机
spring路径存放路径
按照dubbo官网解说,要使得Main能正确的启用Spring容器,要求spring配置文件存放至classpath*:META-INF/spring/*.xml路径底下
dubbo官方网址 http://dubbo.io/User+Guide-zh.htm
项目结构
项目是maven项目,框架是spring+mybatis+dubbo
maven配置
[java] viewplain copy
<span style="font-size:18px;"><build>
<!--jar包名称-->
<finalName>asset-server</finalName>
<resources>
<!--recources文件夹下的所有文件都打进jar包-->
<resource>
<targetPath>${project.build.directory}/classes</targetPath>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
<!-- 上文有说过,由于我的applicationContext.xml文件不是在META-INF下,这一段代码的作用就是将 applicationContext.xml文件拷贝到META-INF目录下-->
<resource>
<targetPath>${project.build.directory}/classes/META-INF/spring</targetPath>
<directory>src/main/resources/spring</directory>
<filtering>true</filtering>
<includes>
<include>applicationContext.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></span>
相关文章推荐
- maven打jar包(结合了dubbo)的main方法启动
- 【dubbo源码解读系列】之二 dubbo代码启动入口解析(自定义main方法)
- 使用dubbo的main方法启动服务
- log4j的main方法打和web的tomcate启动打印方法文件名日志相同,路径不同并非没有打日志,而是在别的路径下
- 用bat启动java main方法(转载)
- Maven打包,并获取依赖的jar包 ,设置main方法启动
- 自定义类于Main方法中实现对WPF应用程序的启动
- Main方法启动 tomcat启动 乱码问题
- Enerprise Solution Main 启动方法源代码
- SpringBoot学习(三),两种启动方式-以main方法启动和在tomcat里启动
- flume1.7源码编译及main方法启动
- Intellij IDEA 的maven多模块中其中一个模块下的main方法启动报 错误:找不到或无法加载主类xxx.xxx.xxx
- java中main方法启动的是一个进程还是一个线程
- 图书馆仿真的第二次重构--只包含一层逻辑的for循环的方法与只有启动作用的main方法
- dubbo框架中Main方法运行spring容器
- Maven打包,并设置main方法启动
- BAT启动执行JAVA JAR文件中的MAIN方法的两种方式
- liunx上启动dubbo的monitor一直在starting...........................解决方法
- java.lang.OutOfMemoryError:Java heap space解决方法(项目中直接运行main方法,做案例,没有启动tomcat的情况)
- 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况