- 浏览: 632706 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 242spring-boot-configuration-proce ... -
springboot面试题
2022-04-18 10:35 185SpringBoot自动配置的原理及实现 用友Java后端社 ... -
IoTDB数据库整合MyBatis实现SpringBoot
2022-04-13 17:37 810IoTDB数据库整合MyBatis实现SpringBoot项目 ... -
SpringBoot系列教程之Redis集群环境配置
2022-02-28 00:37 257SpringBoot系列教程之Redis集群环境配置 Co ... -
spring boot增强性学习记录
2022-02-19 22:19 177spring boot增强性学习记录 SpringBoot常 ... -
StringRedisTemplate和RedisTemplate的区别和选择
2022-02-10 23:05 258StringRedisTemplate和RedisTempla ... -
SpringBoot优雅的全局异常处理
2022-01-24 23:20 609SpringBoot优雅的全局异常处理 第一种:使用@Co ... -
学习篇-springboot-SpringFactoriesLoader
2021-12-19 22:34 233springboot-SpringFactoriesLoade ... -
启动原理解析
2021-12-15 23:49 167【转】Spring Boot干货系列:(三)启动原理解析 s ... -
springBoot中线程池ThreadPoolExecutor的使用
2021-06-16 20:48 823springBoot中线程池ThreadPoolExecuto ... -
java及spring各种注解
2021-06-11 23:43 200函数式接口@FunctionalInterface的使用说明 ... -
Spring Boot 实践折腾记(五):自定义配置,扩展Spring MVC配置并使用fastjson
2019-01-07 23:47 629https://blog.csdn.net/mickjoust ... -
Spring高级话题-条件注解-@Condition
2018-02-24 14:49 581通过profile,我们可以获得不同的profile,我们可以 ... -
常规容器下SpringBootServletInitializer如何实现web.xml作用解析
2017-10-11 15:48 1429http://blog.csdn.net/songhaifen ... -
Spring Boot下使用Mybatis
2017-09-19 21:05 362http://blog.csdn.net/mickjoust/ ... -
SpringBoot读取application.properties文件
2017-08-25 16:59 1152SpringBoot读取application.propert ... -
spring-boot学习笔记之Listener
2017-08-06 17:12 1370spring-boot扩展了spring的Applicatio ... -
Spring Boot学习笔记03--深入了解SpringBoot的启动过程
2017-08-01 10:01 1569http://www.jianshu.com/p/cb5cb5 ... -
Spring Boot:定制自己的starter
2017-07-31 20:44 813http://www.jianshu.com/p/85460c ... -
springboot集成httpinvoker的客户端
2017-07-22 10:25 1403http://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容器,我们需要...
TomcatEmbeddedServletContainerFactory是Spring Boot中用于创建Tomcat内嵌容器的工厂类。在该类中,getEmbeddedServletContainer方法用于创建一个Tomcat实例,并将其作为内嵌容器返回。 四、getSelfInitializer...
内嵌的 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**:提供了监控和管理应用的端点,如健康检查、指标展示、环境信息等,有助于...
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”模块来引入特定功能...
这可能包括如何使用Maven或Gradle初始化项目,配置应用主类,以及如何利用Spring Boot的内嵌Servlet容器(如Tomcat)启动Web应用。 对于计算机科学的学生来说,这个压缩包可以作为毕业设计论文的参考资源,他们可以...
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 ...