- 浏览: 623941 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (819)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (9)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢?
1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的<packaging>jar</packaging>修改为<packaging>war</packaging>形式;
2. 其次spring boot的web项目中内嵌tomcat服务器,所以如果我们想要发布war包到tomcat项目,要将spring boot中内嵌的tomcat包依赖排除,不然产生冲突,打开下面代码中的注释即可。
有一点想说的是,如果本地开发的时候依然想要使用spring boot内嵌tomcat进行调试,添加如下依赖即可:
3. spring boot发布jar包web程序的入口是main函数所在的类,使用@SpringBootApplication注解。但是如果war包发布至tomcat,需要增加 SpringBootServletInitializer 子类,并覆盖它的 configure 方法,或者直接将main函数所在的类继承 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。代码举例如下
以上就完成了spring boot项目打包war包的所有步骤,可以发布至tomcat7及其以上版本。
但是以上流程改造完spring boot打包war包发布至tomcat6版本之后,浏览器访问项目地址会给出404的错误?为什么呢,一头雾水,经过我一番查阅资料以及实验,得出以下结论,
首先spring boot支持的servlet容器如下,可以看出spring boot最低支持的servlet版本是3.0,但是tomcat6的servlet版本是2.5,这样的话上面的流程是无法支持tomcat6发布spring boot项目的,
但是又google了一番,发现已经有人在解决这个问题了,https://github.com/dsyer/spring-boot-legacy,
标题就表明了它是为了让spring boot支持servlet2.5,刚好解决我们的痛点,使用步骤如下:
1. pom.xml中添加spring-boot-legacy的依赖,
2.手动替换web.xml文件。但是在发布war包中发现metricFilter提示空指针异常,我就简单粗暴的将filter过滤了,注释如下。 所要替换的web.xml文件的未知如下 : {工程目录}/src/main/webapp/WEB-INF/web.xml
完成以上两个步骤就可以让spring boot项目支持tomcat6的部署了,解决。
思考:spring boot封装带来了便利性,同时也带来了出问题的解决复杂度,如果不了解原始的spring web开发模式,出现问题很难解决。即使我现在解决了支持tomcat6的spring boot支持问题,但是不太明白解决的原理,filter出现空指针是为什么?所以深入一些原理性的东西,学习技术的基础性的东西非常重要。大家可以明白的可以解释解释2.5支持的原理,以及filter空指针的异常原因。
http://www.cnblogs.com/weixliu/p/6432342.html
把spring-boot项目部署到tomcat容器中
https://www.cnblogs.com/a8457013/p/7687820.html
1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的<packaging>jar</packaging>修改为<packaging>war</packaging>形式;
2. 其次spring boot的web项目中内嵌tomcat服务器,所以如果我们想要发布war包到tomcat项目,要将spring boot中内嵌的tomcat包依赖排除,不然产生冲突,打开下面代码中的注释即可。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> --> </dependency>
有一点想说的是,如果本地开发的时候依然想要使用spring boot内嵌tomcat进行调试,添加如下依赖即可:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
3. spring boot发布jar包web程序的入口是main函数所在的类,使用@SpringBootApplication注解。但是如果war包发布至tomcat,需要增加 SpringBootServletInitializer 子类,并覆盖它的 configure 方法,或者直接将main函数所在的类继承 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。代码举例如下
@SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
以上就完成了spring boot项目打包war包的所有步骤,可以发布至tomcat7及其以上版本。
但是以上流程改造完spring boot打包war包发布至tomcat6版本之后,浏览器访问项目地址会给出404的错误?为什么呢,一头雾水,经过我一番查阅资料以及实验,得出以下结论,
首先spring boot支持的servlet容器如下,可以看出spring boot最低支持的servlet版本是3.0,但是tomcat6的servlet版本是2.5,这样的话上面的流程是无法支持tomcat6发布spring boot项目的,
但是又google了一番,发现已经有人在解决这个问题了,https://github.com/dsyer/spring-boot-legacy,
标题就表明了它是为了让spring boot支持servlet2.5,刚好解决我们的痛点,使用步骤如下:
1. pom.xml中添加spring-boot-legacy的依赖,
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-legacy</artifactId> <version>1.1.0.RELEASE</version> </dependency>
2.手动替换web.xml文件。但是在发布war包中发现metricFilter提示空指针异常,我就简单粗暴的将filter过滤了,注释如下。 所要替换的web.xml文件的未知如下 : {工程目录}/src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>com.example.DemoApplication</param-value> </context-param> <listener> <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class> </listener> <!-- <filter> <filter-name>metricFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>metricFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextAttribute</param-name> <param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
完成以上两个步骤就可以让spring boot项目支持tomcat6的部署了,解决。
思考:spring boot封装带来了便利性,同时也带来了出问题的解决复杂度,如果不了解原始的spring web开发模式,出现问题很难解决。即使我现在解决了支持tomcat6的spring boot支持问题,但是不太明白解决的原理,filter出现空指针是为什么?所以深入一些原理性的东西,学习技术的基础性的东西非常重要。大家可以明白的可以解释解释2.5支持的原理,以及filter空指针的异常原因。
http://www.cnblogs.com/weixliu/p/6432342.html
把spring-boot项目部署到tomcat容器中
https://www.cnblogs.com/a8457013/p/7687820.html
发表评论
-
spring-boot-configuration-processor的作用
2022-05-23 11:06 234spring-boot-configuration-proce ... -
springboot面试题
2022-04-18 10:35 184SpringBoot自动配置的原理及实现 用友Java后端社 ... -
IoTDB数据库整合MyBatis实现SpringBoot
2022-04-13 17:37 782IoTDB数据库整合MyBatis实现SpringBoot项目 ... -
SpringBoot系列教程之Redis集群环境配置
2022-02-28 00:37 250SpringBoot系列教程之Redis集群环境配置 Co ... -
spring boot增强性学习记录
2022-02-19 22:19 171spring boot增强性学习记录 SpringBoot常 ... -
StringRedisTemplate和RedisTemplate的区别和选择
2022-02-10 23:05 240StringRedisTemplate和RedisTempla ... -
SpringBoot优雅的全局异常处理
2022-01-24 23:20 604SpringBoot优雅的全局异常处理 第一种:使用@Co ... -
学习篇-springboot-SpringFactoriesLoader
2021-12-19 22:34 230springboot-SpringFactoriesLoade ... -
启动原理解析
2021-12-15 23:49 163【转】Spring Boot干货系列:(三)启动原理解析 s ... -
springBoot中线程池ThreadPoolExecutor的使用
2021-06-16 20:48 817springBoot中线程池ThreadPoolExecuto ... -
java及spring各种注解
2021-06-11 23:43 199函数式接口@FunctionalInterface的使用说明 ... -
Spring Boot 实践折腾记(五):自定义配置,扩展Spring MVC配置并使用fastjson
2019-01-07 23:47 624https://blog.csdn.net/mickjoust ... -
Spring高级话题-条件注解-@Condition
2018-02-24 14:49 576通过profile,我们可以获得不同的profile,我们可以 ... -
常规容器下SpringBootServletInitializer如何实现web.xml作用解析
2017-10-11 15:48 1425http://blog.csdn.net/songhaifen ... -
Spring Boot下使用Mybatis
2017-09-19 21:05 352http://blog.csdn.net/mickjoust/ ... -
SpringBoot读取application.properties文件
2017-08-25 16:59 1148SpringBoot读取application.propert ... -
spring-boot学习笔记之Listener
2017-08-06 17:12 1365spring-boot扩展了spring的Applicatio ... -
Spring Boot学习笔记03--深入了解SpringBoot的启动过程
2017-08-01 10:01 1561http://www.jianshu.com/p/cb5cb5 ... -
Spring Boot:定制自己的starter
2017-07-31 20:44 809http://www.jianshu.com/p/85460c ... -
springboot集成httpinvoker的客户端
2017-07-22 10:25 1398http://blog.csdn.net/geanwan/ar ...
相关推荐
Spring Boot 项目发布到 Tomcat 容器(包含发布到 Tomcat6 的方法) 在本文中,我们将详细介绍如何将 Spring Boot 项目发布到 Tomcat 容器,包括发布到 Tomcat6 的方法。 首先,需要在 pom.xml 文件中修改打包类型...
容器化部署,如Docker和Kubernetes,也是现代Spring Boot项目常见的部署方式,资料中可能包含相关指导。 总之,这份压缩包中的Spring Boot资料和项目实例是学习和提升Spring Boot技术的全面资源。通过深入学习和...
然而,有些场景下,如生产环境或需要与其他应用共享服务器时,可能需要将Spring Boot项目部署到独立的Tomcat容器中。本篇文章将详细讲解如何将Spring Boot项目部署到Tomcat。 首先,为了适应Tomcat容器,我们需要...
内嵌的 Tomcat 容器是 Spring Boot 默认的 Web 服务器,使得我们可以无需额外配置即可运行 Java Web 应用。在本篇文章中,我们将探讨如何对 Spring Boot 内嵌的 Tomcat 进行个性化配置。 首先,Spring Boot 提供了 ...
Spring Boot是Spring项目中的一个子项目,它旨在简化Spring应用的初始搭建以及开发过程。它使用了特定的方式来进行配置,使得开发者能够快速启动和运行Spring应用程序,几乎不需要什么配置就可以快速启动和运行。...
对于Web开发,Spring Boot的嵌入式Servlet容器如Tomcat和Jetty使得部署变得简单。书中会涵盖RESTful API设计、模板引擎(Thymeleaf、FreeMarker)以及WebSocket的使用。同时,你还将了解到Spring Security,它是...
- Spring Boot支持内嵌Tomcat、Jetty等Web服务器,无需额外部署,简化了开发流程。 4. **健康检查与Actuator** - Actuator提供了一组端点,用于监控和管理应用的健康状况、指标、日志等,是微服务治理的重要组件...
- **嵌入式Servlet容器:**Spring Boot内置了Tomcat、Jetty等容器,无需额外部署。 - **依赖管理:**提供了一套统一的依赖版本管理方案,避免版本冲突问题。 - **生产就绪特性:**包括健康检查、监控等功能,方便...
4. **内嵌式Servlet容器**:Spring Boot 可以内置Tomcat或Jetty等服务器,无需额外部署,极大地简化了开发和测试流程。 5. **Actuator**:提供了监控和管理应用的端点,如健康检查、指标展示、环境信息等,有助于...
这可能包括如何使用Maven或Gradle初始化项目,配置应用主类,以及如何利用Spring Boot的内嵌Servlet容器(如Tomcat)启动Web应用。 对于计算机科学的学生来说,这个压缩包可以作为毕业设计论文的参考资源,他们可以...
3. 内嵌式Servlet容器:Spring Boot支持内嵌Tomcat、Jetty或Undertow,无需额外部署WAR文件。 4. 健康检查:提供健康检查API,用于监控系统状态。 5. 配置文件:通过application.properties或application.yml进行...
Spring Boot的核心特性包括自动配置、内嵌Web服务器(如Tomcat或Jetty)、健康检查、Actuator等。自动配置是Spring Boot的一大亮点,它基于“约定优于配置”的原则,通过“spring-boot-starter”模块来引入特定功能...
Spring Boot还支持内嵌的Servlet容器,比如Tomcat、Jetty或Undertow,这意味着开发者可以不用部署到传统的WAR文件中,而是直接运行一个JAR文件,并且应用程序会启动内嵌的Servlet容器。这简化了部署过程,使得开发...
Spring Boot通过内嵌的Servlet容器(如Tomcat或Jetty)简化了Web应用的搭建,使得开发者无需额外配置即可启动HTTP服务器。此外,Spring Boot提供了一种“约定优于配置”的原则,减少了大量XML配置文件的需求,转而...
3. **内嵌式服务器**:Spring Boot 可以内嵌 Tomcat 或 Jetty 服务器,这意味着你可以直接运行一个 Jar 包,而无需部署到外部容器。 4. **健康检查与 Actuator**:Spring Boot Actuator 提供了一套监控和管理应用的...
然而,Spring Boot在现有Spring框架的基础上构建,通过自动化配置和内置的Servlet容器,如Tomcat和Jetty,极大地减少了这些工作。 Spring Boot的核心优势在于它的简洁性和高效性。首先,它可以独立运行,无需打成...
1. 自动配置:Spring Boot根据类路径中的依赖自动配置Spring容器,例如,如果你引入了`spring-boot-starter-web`模块,那么它将自动配置Tomcat服务器和Spring MVC。 2. 嵌入式服务器:Spring Boot支持内嵌Tomcat、...
2. **内嵌服务器(Embedded Servers)**:Spring Boot支持内嵌Tomcat、Jetty或Undertow服务器,这样可以直接运行打包后的jar文件,而无需额外部署到外部容器,大大提高了开发效率。 3. **自动配置(Auto ...
2. **内嵌式Servlet容器**:Spring Boot默认提供了内嵌的Tomcat服务器,可以避免打包成war部署的麻烦,直接运行jar文件即可启动应用。 3. **起步依赖**:Spring Boot提供了一系列的起步依赖,如spring-boot-starter-...