将 Spring Boot 2.0 与 Tomcat 7.0.82 结合使用

2024-04-18

我有一个使用 Spring Boot 2.0.0.RC2 的项目。我需要使用 Tomcat 7.0.82 的传统部署将其部署到客户环境。 我已经成功构建了一场可以通过配置成功部署的战争web.xml以 Spring 应用程序的典型方式(使用 DispatcherServlet)而不是使用SpringBootServletInitializer.

我还希望有一种使用嵌入式 Tomcat 容器在本地环境上启动应用程序的快速方法,只需运行应用程序类中的 main 方法即可@SpringBootApplication注解。如果我使用默认的 Tomcat 版本 (8.5.28),它可以正常工作。但是,我想也在 7.0.82 版本中启动嵌入式容器。这对我来说很重要还有另一个原因——我正在使用 SpringBootTest,如果这些测试在与客户环境完全相同的容器上运行,那就太好了。不幸的是,我无法使用 Spring Boot 父 POM 并覆盖tomcat.version财产。

我试过了@SpringBootApplication(exclude = ServletWebServerFactoryAutoConfiguration.class) create TomcatServletWebServerFactory手动豆

@Bean
public ServletWebServerFactory tomcatServletWebServerFactory() {
    return new TomcatServletWebServerFactory();
}

并显式添加 tomcat 7.0.82 依赖项pom.xml(${tomcat.版本} = 7.0.82):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-annotations-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-el</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-websocket</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-annotations-api</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-util</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-el</artifactId>
    <version>${tomcat.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-websocket</artifactId>
    <version>${tomcat.version}</version>
</dependency>

但我仍然得到java.lang.NoClassDefFoundError: org/apache/tomcat/util/scan/StandardJarScanFilter error.

请问有什么办法可以满足我的要求吗?


春季启动2: Tomcat 最低支持版本为 8.5

参考:https://dzone.com/articles/spring-boot-20-new-features-infrastruct-changes https://dzone.com/articles/spring-boot-20-new-features-infrastructure-changes

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Spring Boot 2.0 与 Tomcat 7.0.82 结合使用 的相关文章

随机推荐

  • Eclipse 无法识别 Android 上的“R.id...”

    有什么想法为什么 Eclipse 有时会失败并且无法识别几秒钟前执行的代码吗 下面代码中的 R 下面有红色波浪线 而 5 分钟前还没有 而且我没有更改任何代码 这种情况在 Eclipse 中经常发生 通常我将其关闭并重新启动 一切顺利 这次
  • 在 ansible 角色中引用 defaults/main.yml 中的变量

    我的角色设置如下 角色 测试 任务 main yml name Generate people files template src test j2 dest tmp item name cfg loop people 角色 测试 模板 t
  • 使用 Servlet 和 JSP 验证数字

    我在学习 Web 开发的同时正在开发一个小型 Servlet 和 JSP 应用程序 我有一个关于 jsp 和 servlet 之间的验证和传递值的问题 我有一个 啤酒 类 具有 评级 属性 双精度类型 加载 edit jsp 的 servl
  • Codeigniter - 返回视图作为数据不起作用[重复]

    这个问题在这里已经有答案了 我在 CodeIgniter 2 0 2 中将视图作为数据返回时遇到问题 我不确定此版本的 CI 中是否提供此功能 这可能是问题所在 但我希望不是这样 因为目前无法选择升级 我们运行两个两个网站 其中一个我们使用
  • 如何只选择表格中的几列

    我有一个包含大约 1000 列的表 当我使用 Select from Table 它返回表的整个记录 但我只想要有限的记录列 col1 col2 col3 col4 col 5 col1000
  • boost::asio 将套接字转换为安全套接字

    我正在用 C 为 Minecraft 游戏编写一个服务器 客户端通过普通套接字向服务器发送初始握手数据包 然后 服务器将 RSA 密钥发送回游戏 并且从该点开始的所有套接字通信都将使用发送到客户端的 RSA 密钥进行 AES 加密 我有一个
  • 如何在 OpenShift 上安装 Nginx

    虽然我跟着https blog openshift com lightweight http serving using nginx on openshift https blog openshift com lightweight htt
  • 如何沿着简单的路径移动相机

    如何沿着简单的路径 由顶点 点数组创建 移动相机 我需要自动移动它 而不是像第一人称射击游戏那样通过键盘 鼠标事件来移动它 找了这个例子 http trijs org examples webgl geometry extrude spli
  • 如何“重写”现有的 vim 键绑定?

    I want to assign CTRL L to go the next tab tabnext I placed it at vimrc nmap
  • 如何在C中将UTC时间转换为本地时间?

    这是一个简单的问题 但解决方案似乎远非简单 我想知道如何从 UTC 转换为本地时间 我正在寻找一种标准的 C 解决方案 并且或多或少保证可以在任何位置的任何计算机上工作 我已仔细阅读以下链接 但在那里找不到解决方案 在C中将包含本地时间的字
  • 使 K 不同(基数) google OR-TOOLS

    我想知道 google or tools 中是否存在 Solver AllDifferent x 的泛化 允许指定我允许的不同元素的数量 因此 如果 len x 4 则 AllDifferent x 意味着 len set x 4 但是 如
  • 如何让 js2-mode 在 Emacs 中使用空格而不是制表符?

    我在用js2 mode http code google com p js2 mode 在 Emacs 中编辑 Javascript 但我似乎无法让它停止使用制表符而不是空格进行缩进 我的其他模式工作正常 只是遇到 js2 问题 你有 se
  • HtmlAgilityPack获取Title和meta

    我尝试练习 HtmlAgilityPack 但我遇到了一些与此相关的问题 这是我编码的内容 但我无法正确获取网页的标题和描述 如果有人能启发我纠正我的错误 public static void Main string args string
  • 在 R 中测试多个相同的列

    有没有一种简单的方法来测试身份multiple列 例如 通过这个输入 data data table one c 1 2 3 4 two c 7 8 9 10 three c 1 2 3 4 four c 1 2 3 4 有什么东西可以返回
  • 如何向 HPA 提供外部指标?

    问题设置 假设我有 2 个 pod A 和 B 我希望能够根据任意来源的任意数量动态扩展 pod A 假设 pod B 是这样一个源 例如 它可以拥有一个带有端点的 HTTP 服务器 该端点在请求时以 pod A 所需的副本数量进行响应 或
  • 如何使用 LiveData 和 ViewModel 发布改进 API 调用请求方法

    我是 android 和 java 的初学者 我在使用mvvm架构登录时遇到问题 并在android studio中用JAVA语言进行改造 我的代码如下所示 我的代码如下所示 API接口 FormUrlEncoded POST login
  • 从简单的 JSON 字符串加载 D3.js 数据

    图库中的大多数示例都会从 TSV 文件加载数据 如何将以下内容转换为使用本地 json 变量而不是 TSV 数据 d3 tsv data tsv function error data var myEntitiesJson getEntit
  • SQL Server:将 GROUP BY 的结果拆分为单独的列

    我有一个 SQL Server 2008 R2 数据库 其中包含大约 5 亿行数据 目前看起来像这样 ID Eventtype 201 1 201 3 201 4 201 1 201 1 664 1 664 0 664 1 664 3 我似
  • 在没有朋友的情况下给予基类受保护的访问

    我先解释一下我的情况 我有一个基类 它自动实现一种引用计数 它允许我包装 C 风格init and free 库调用引用计数 API template
  • 将 Spring Boot 2.0 与 Tomcat 7.0.82 结合使用

    我有一个使用 Spring Boot 2 0 0 RC2 的项目 我需要使用 Tomcat 7 0 82 的传统部署将其部署到客户环境 我已经成功构建了一场可以通过配置成功部署的战争web xml以 Spring 应用程序的典型方式 使用