打包jar
- pom文件中设置打包类型为jar
<packaging>war</packaging>
-
运行jar:java -jar eureka-server-1.0.0.jar --server.port=8080
-
启动shell脚本:
打包成war
- pom文件中设置打包类型为war
<groupId>com.site</groupId>
<artifactId>mapcharts</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
- 在启动类中添加ServletInitializer
@SpringBootApplication
public class MountainApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MountainApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MountainApplication.class, args);
}
}
由于我们采用web3.0 规范,是没有web.xml 的,而此类的作用与web.xml相同
- 去除默认打包的Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
spring-boot-starter-tomcat 是原来被传递过来的依赖,默认会打到包里,所以我们再次引入此依赖,并指定依赖范围为provided,这样tomcat 相关的jar就不会打包到war 里了.
- 运行package 打包命令生成war包
生成后将war 包放入tomcat,启动tomcat,测试完成的功能是否可以使用
注意:
- spring boot最低支持的servlet版本是3.0,但tomcat6的servlet版本是2.5,tomcat7以上版本支持servlet3.0,所以打包war需要部署在Tomcat7及以上版本中。
- spring boot 打包是把Tomcat默认打包进war中,所以在打war时需要把默认的
spring-boot-starter-tomcat
排除。
SpringBoot 部署jar和Tomcat方式对比
- jar包方式部署可以直接启动项目,方便、快捷、但是只能单个启动或写脚本启动
- war包Tomcat方式部署,可以一个Tomcat管理多个项目
Servlet2 和 Servlet3规范
Servlet2规范
- servlet2.5特性介绍:支持annotations
- 项目目录必须要有WEB-INF、web.xml等文件夹和文件
- 在web.xml中配置servlet、filter、listener,以web.xml为java web项目的统一入口
Servlet3规范
- 项目中可以不需要WEB-INF、web.xml等文件夹和文件,在没有web.xml文件的情况下,通过注解实现servlet、filter、listener的声明,例如:@WebServlet,@WebListener,@WebFilter,当使用注解时,容器自动进行扫描。
- 关于一些异步请求的改动
- 关于ServletContainerInitializer的使用