首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在springboot中,我不能排除嵌入式tomcat

在Spring Boot中,如果你不能排除嵌入式Tomcat,可能是由于以下几个原因导致的:

基础概念

Spring Boot默认使用嵌入式Tomcat作为服务器。嵌入式服务器意味着服务器的代码被打包在你的应用程序中,而不是作为一个单独的进程运行。

相关优势

  1. 简化部署:无需单独安装和配置服务器。
  2. 快速启动:应用程序可以直接运行,无需额外的服务器启动步骤。
  3. 一致性:开发和生产环境使用相同的服务器配置。

类型

Spring Boot支持多种嵌入式服务器,包括Tomcat、Jetty和Undertow。

应用场景

  • 微服务架构:每个服务可以独立部署和运行。
  • 快速原型开发:快速搭建和测试应用程序。
  • 容器化部署:与Docker等容器技术结合使用。

常见问题及解决方法

1. 无法排除嵌入式Tomcat

如果你在尝试排除嵌入式Tomcat时遇到问题,可以按照以下步骤进行检查和解决:

检查pom.xmlbuild.gradle

确保你在项目的构建文件中正确配置了排除Tomcat的依赖。

Maven (pom.xml):

代码语言:txt
复制
<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>

Gradle (build.gradle):

代码语言:txt
复制
configurations {
    compile.exclude module: 'spring-boot-starter-tomcat'
}
添加其他嵌入式服务器依赖

如果你想使用Jetty或Undertow替代Tomcat,需要添加相应的依赖。

Jetty:

代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

Undertow:

代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
检查Spring Boot版本

确保你使用的Spring Boot版本支持你所做的更改。有时版本不兼容可能导致配置无效。

清理和重建项目

有时缓存问题可能导致配置不生效。尝试清理和重建项目:

Maven:

代码语言:txt
复制
mvn clean install

Gradle:

代码语言:txt
复制
./gradlew clean build

示例代码

以下是一个完整的Spring Boot项目示例,使用Jetty替代Tomcat:

pom.xml:

代码语言:txt
复制
<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>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <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>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

src/main/java/com/example/demo/DemoApplication.java:

代码语言:txt
复制
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

通过以上步骤和示例代码,你应该能够成功排除嵌入式Tomcat并使用其他服务器。如果问题仍然存在,请检查日志和配置文件,确保所有设置正确无误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Tomcat在SpringBoot中是如何启动的?

前言 我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序打成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看...SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat的设计。...getTomcatWebServer(tomcat); } 根据上面的代码,我们发现其主要做了两件事情,第一件事就是把Connnctor(我们称之为连接器)对象添加到Tomcat中,第二件事就是...我看看他们的注释是怎么说的。...发布应用启动完成事件 而启动Tomcat就是在第7步中“刷新上下文”;Tomcat的启动主要是初始化2个核心组件,连接器(Connector)和容器(Container),一个Tomcat实例就是一个Server

1.5K30

Tomcat在SpringBoot中是如何启动的

包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat...getTomcatWebServer(tomcat); } 根据上面的代码,我们发现其主要做了两件事情,第一件事就是把Connnctor(我们称之为连接器)对象添加到Tomcat中,第二件事就是configureEngine...我看看他们的注释是怎么说的。...另外我们根据setConnector源码可以知道,连接器(Connector)是设置在service下的,而且是可以设置多个连接器(Connector)。...输出banner 创建上下文 预处理上下文 刷新上下文 再刷新上下文 发布应用已经启动事件 发布应用启动完成事件 而启动Tomcat就是在第7步中“刷新上下文”;Tomcat的启动主要是初始化2个核心组件

1.6K20
  • Tomcat在SpringBoot中是如何启动的?

    jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat...中,第二件事就是configureEngine,这连接器我们勉强能理解(不理解后面会述说),那这个Engine是什么呢?...我看看他们的注释是怎么说的。...另外我们根据setConnector源码可以知道,连接器(Connector)是设置在service下的,而且是可以设置多个连接器(Connector)。...发布应用启动完成事件 而启动Tomcat就是在第7步中“刷新上下文”;Tomcat的启动主要是初始化2个核心组件,连接器(Connector)和容器(Container),一个Tomcat实例就是一个Server

    1.3K50

    为什么我在容器中不能 kill 1 号进程?

    而容器中也是由init进程直接或间接创建了Namespace中的其他进程。 linux信号 而为什么不能在容器中kill 1号进程呢?进程在收到信号后,就会去做相应的处理。...在没有别的参数时这个信号类型默认为SIGTERM,是可以被捕获的 SIGKILL(9) Linux 里两个特权信号之一,不能被忽略也不能被捕获。进程一旦收到 SIGKILL就要退出。...为什么在容器中不能kill 1号进程? 对于不同的程序,结果是不同的。把c程序作为1号进程就无法在容器中杀死,而go程序作为1号进程却可以。...在 Linux 中,kill 命令调用了 kill() 系统调用(内核的调用接口)而进入到了内核函数 sys_kill()。...0000000000004000 [root@043f4f717cb5 /]# kill 1 # docker ps CONTAINER ID IMAGE COMMAND CREATED 重点总结 “为什么我在容器中不能

    26510

    京东四面:说说Tomcat 在 SpringBoot 中是如何启动的!

    前言 我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序达成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看...SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat的设计,关于spring方面小编也整理了一套spring全家桶学习笔记,分享给正在阅读的朋友!...我看看他们的注释是怎么说的。...发布应用启动完成事件 而启动Tomcat就是在第7步中“刷新上下文”;Tomcat的启动主要是初始化2个核心组件,连接器(Connector)和容器(Container),一个Tomcat实例就是一个Server...本期文章通过SpringBoot的启动来窥探了Tomcat的内部结构,喜欢小编今日的分享,记得关注我点赞哟,感谢支持!重要的事情说三遍,转发+转发+转发,一定要记得转发 关注哦!!!

    33900

    重学SpringBoot系列之嵌入式容器的配置与应用

    重学SpringBoot系列之嵌入式容器的配置与应用 嵌入式容器的运行参数配置 调整SpringBoot应用容器的参数两种配置方法 配置文件方式 常用配置参数 tomcat性能优化核心参数 自定义配置类方式...Reactor NIO多线程模型 切换为 Jetty Server 切换到undertow 嵌入式容器详细参考文章 打war包部署到外置tomcat容器 修改打包方式 排除内置tomcat的依赖 新增加一个类继承...---- 替换掉tomcat SpringBoot默认是使用tomcat作为默认的应用容器。如果需要把tomcat替换为jetty或者undertow,需要先把tomcat相关的jar包排除出去。...文件刚开始的位置,如下: ---- 排除内置tomcat的依赖 我们使用外置的tomcat,自然要将内置的嵌入式tomcat的相关jar排除。...jsp静态资源引用也必须是:/boot-launch/image/xxxx.png,不能是/image/xxxx.png JSP的war包中,webjars的资源使用方式不再被支持

    1.7K10

    SpringBoot----嵌入式Servelt容器

    嵌入式Servelt容器 SpringBoot默认使用tomcat作为嵌入式的Servlet容器 定制和修改Servelt容器的相关配置 1.修改和Server有关的配置,去找对应绑定的类(ServerProperties...切换其他嵌入式Servlet容器 默认支持tomcat(默认使用),jetty和undertow 如何切换 嵌入式Servlet自动配置原理 嵌入式Servlet容器工厂启动原理 SpringBoot...Servlet容器 默认支持tomcat(默认使用),jetty和undertow ---- 如何切换 SpringBoot默认使用的是Tomcat作为嵌入式的Servlet容器:引入web模块默认就是使用嵌入式的... 如果想切换为其他类型的嵌入式Servlet容器,则需要先将嵌入式的Tomcat容器排除,再添加相应Servlet容器的依赖,比如想切换为Jetty...Servlet自动配置原理 如果我们在配置文件中修改Servlet的相关属性,与该配置文件绑定的ServerProperties也同样是一个定制器,因此后置处理器会也会调用,然后完成属性赋值 SpringBoot

    60720

    Spring Boot辅助功能之内嵌服务器【Tom Cat】

    我们不能这么想,我们得这么思考问题:   TomCat服务器是不是拿Java源写的?是,它里面用了很多jar包,   那既然是用java源写的,那java源是靠什么运行?对象。...现在spring容器中有一个TomCat对象,你现在要运行的东西,需要到TomCat对象里面去运行。   这就是为什么我们的程序中,没有装TomCat服务器,还能启动起来带TomCat的原因。...2.3.1 排除TomCat 在Maven中一个排除依赖的设定,不熟悉的小伙伴可以看我操作一下。...我们现在启动一下程序,看它还有没有带TomCat。   效果显而易见,TomCat已经被我们排除了。 2.3.2 换一个服务器   现在TomCat已经排除了,那我们就换一个服务器用用,怎么换呢?...注:在SpringBoot中默认支持3框Web服务器:tomcat(默认) ,jetty,undertow。   我们这里就以jetty为例。

    1.2K10

    配置嵌入式Servlet容器

    SpringBoot默认是用的是Tomcat作为嵌入式的Servlet容器; 问题?...能不能支持其他的Servlet容器; 3)、替换为其它嵌入式Servlet容器 默认支持 Tomcat(默认使用); Jetty Undertow 4)、嵌入式Servlet容器自动配置原理; EmbeddedServletContainerAutoConfiguration...什么时候获取嵌入式的Servlet容器并启动Tomcat; 获取嵌入式的Servlet容器工厂: 1)、SpringBoot应用启动运行run方法 2)、refreshContext(context);...SpringBoot刷新IOC容器(创建IODC容器对象,并初始化容器,创建容器中的每一个组件);如果是web应用创建AnnotationConfigEmbeddedWebApplicationContext...容器; 先启动嵌入式的Servlet容器,再将ioc容器中剩下没有创建出的对象获取处出来; IOC容器启动创建嵌入式Servlet容器;

    63830

    SpringBoot解决内、外tomcat部署兼容问题

    前言: 我们在使用springBoot开发的过程中出于方便,都会选择使用本地类Application中的main方法启动服务,即可实现本地的调试,十分的方便。...但在线上环境需要放入外部的tomcat部署,这时候你会发现如果不做任何的处理是无法在外部tomcat启动的。 ? 那么如何才能让springBoot项目才能在外部tomcat部署呢?...-- 移除嵌入式tomcat插件 --> org.springframework.boot...而还有些项目中既没有排除web包下的tomcat,又同时导入了spring-boot-starter-tomcat,同样也能实现本地main方法,和外部tomcat的部署,这又是怎么回事呢?...后,有没有web下的tomcat已经无所谓了,所以你排不排除它都没关系了。

    2.9K20

    深度解析SpringBoot内嵌Web容器

    前言 今天分享一个SpringBoot的内嵌Web容器,在SpringBoot还没有出现时,我们使用Java开发了Web项目,需要将其部署到Tomcat下面,需要配置很多xml文件,SpringBoot...Tomcat Spring Boot 默认使用 Tomcat 作为嵌入式 Web 容器。Tomcat 作为一个流行的 Web 容器,容易能够理解、配置和管理。...使用 因为SpringBoot默认的是Tomcat作为Web容器,如果我们需要使用使用其他Web容器,那么需要排除Tomcat容器,再引入其他容器,Tomcat容器位于spring-boot-starter-web...在已启动的服务器上调用此方法无效。,比如Tomcat的就没有在start()方法中启动服务器,具体我们等会会看。...最后启动Tomcat容器是在TomcatWebServer中,在TomcatWebServer的构造函数中调用initialize(),在initialize()中我们看是this.tomcat.start

    1.3K10

    SpringBoot同时可以处理多少请求?

    Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:SpringBoot同时可以处理多少个请求...Tomcat 支持众多的企业级特性,如 SSL、连接池等,适合运行大型的、复杂的企业级应用。它的稳定性和成熟度经过了多年的企业级应用验证,因此在很多企业中作为首选的 Web 容器。...它的设计理念在于提供一个模块化、可嵌入式的解决方案,易于集成到现有的系统中,同时也适合微服务架构。...我们继续在 spring-configuration-metadata.json 文件中,搜索“server.tomcat.accept-count”(Tomcat 最大等待数),搜索结果如下图所示:...当然,这两个值是可以在 Spring Boot 配置文件中修改的,如下配置所示:yaml复制代码server: tomcat: max-connections: 2000 # 最大连接数

    17210

    解决SpringBoot多模块发布时99%的问题?SpringBoot发布的8个原则和4个问题的解决方案

    如果使用的是 SpringBoot 多模块的项目,在发布的时候可能遇到各种各样的问题。...SpringBoot 多模块发布的 8 大原则 1 在发布模块打包,而不是父模块上打包 比如,以下项目目录: 如果要发布 api 就直接在它的模块上打包,而不是在父模块上打包。...packaging> 3 发布模块打包类型设置为 war 格式 在发布的模块 pom.xml 中设置: war 4 排除内置 tomcat 在发布的模块 pom.xml...答:不影响,配置的 server.port 会被覆盖,以 tomcat 本身的端口号为准,tomcat 端口号在 tomcat/config/server.xml  文件中配置。...问题三:不能找到 SpringBoot 运行的 main 类,怎么办?

    1.4K30

    京东面试:SpringBoot同时可以处理多少请求?

    Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:SpringBoot同时可以处理多少个请求...Tomcat 支持众多的企业级特性,如 SSL、连接池等,适合运行大型的、复杂的企业级应用。它的稳定性和成熟度经过了多年的企业级应用验证,因此在很多企业中作为首选的 Web 容器。...它的设计理念在于提供一个模块化、可嵌入式的解决方案,易于集成到现有的系统中,同时也适合微服务架构。...我们继续在 spring-configuration-metadata.json 文件中,搜索“server.tomcat.accept-count”(Tomcat 最大等待数),搜索结果如下图所示:...当然,这两个值是可以在 Spring Boot 配置文件中修改的,如下配置所示: server: tomcat: max-connections: 2000 # 最大连接数 accept-count

    9100

    微服务架构Day05-SpringBoot之Servlet

    旧版 配置嵌入式Servlet容器 SpringBoot默认使用Tomcat作为嵌入式Servlet容器 如何定制和修改Servlet容器相关配置 1.在配置文件中定制和修改Servlet容器有关的配置...通用的servlet容器配置 server.xx= 通用的Tomcat配置 server.tomcat.xx= 2.编写一个嵌入式Servlet容器定制器来修改Servlet容器的配置 在SpringBoot...:后置处理器,在bean初始化(创建完对象,还没有赋值)时执行初始化工作 步骤: 1.SpringBoot根据导入的依赖情况,给容器中添加相应的嵌入式容器工厂 2.容器中某个组件要创建对象时,便会调用后置处理器...,只要是嵌入式Servlet容器工厂,后置处理器就会工作. 3.后置处理器从容器中获取所有嵌入式容器处理器定制器,调用嵌入式容器处理器定制器中的方法对嵌入式容器处理器进行配置 嵌入式Servlet容器启动原理...,Tomcat嵌入式Servlet容器工厂创建对象,后置处理器就获取所有定制器来定制Tomcat嵌入式Servlet容器的配置 7.使用Tomcat嵌入式Servlet容器工厂获取嵌入式servlet

    40610

    京东面试:SpringBoot同时可以处理多少请求?

    Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:SpringBoot同时可以处理多少个请求...Tomcat 支持众多的企业级特性,如 SSL、连接池等,适合运行大型的、复杂的企业级应用。它的稳定性和成熟度经过了多年的企业级应用验证,因此在很多企业中作为首选的 Web 容器。...它的设计理念在于提供一个模块化、可嵌入式的解决方案,易于集成到现有的系统中,同时也适合微服务架构。...我们继续在 spring-configuration-metadata.json 文件中,搜索“server.tomcat.accept-count”(Tomcat 最大等待数),搜索结果如下图所示:...当然,这两个值是可以在 Spring Boot 配置文件中修改的,如下配置所示: server: tomcat: max-connections: 2000 # 最大连接数 accept-count

    12400
    领券