spring-boot - Gradle - 如何防止 tomcat-embed-el 从 WEB-INF/lib 中“带走”
问题描述
我的目标: 我正在尝试在 WebSphere ND 8.5.5.15 中安装 Spring-boot v2.1.7.RELEASE Web 服务,该服务在 localhost/tomcat 上运行良好。
奇怪的是有几次我可以启动应用程序(安装后 - 我不确定,我不知道如何),但大多数时候(在我重试或更改一些东西之后),我可以' t 让应用程序在 WebSphere 中启动,我试图理解为什么。
所以现在,我想做的是: 我需要从运行时排除嵌入式 tomcat,这可以通过在 build.gradle 中添加这一行来轻松完成:
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
我在这里理解-第 4 步,它也在删除与 EL 相关的类,所以我把它带回来了:
implementation 'org.springframework.boot:spring-boot-starter-validation'
但是现在,它不是“让课程回来”,我不明白为什么。在 WebSphere 中安装后,包含javax.el.E LManager.class 的 tomcat-embed-el-9.0.22.jar将登陆../WEB-INF/lib-provided。我期望它在../WEB-INF/lib
我有一个“解决方案”,就是在 build.gradle 中添加一个 this:
implementation 'org.apache.tomcat.embed:tomcat-embed-el:9.0.24'
它正在工作,但我怀疑这是“正确”的方法,因为在我解决它之后,我开始遇到其他休眠问题,这是意料之外的,因为我已经在上面的链接中执行了第 3 步。
PS我使用的gradle版本是5.5:
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-bin.zip
我也尝试使用 5.6,但一样。
解决方案
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-core'
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-websocket'
is the correct approach.
The hibernate issue was a separate issue.
推荐阅读
- git - Git如何查找或添加.gitignore
- gunicorn - gunicorn 重启后不启动
- java - 从 azure Key vault 按值获取秘密名称
- ios - Tipsi 条纹不适用于 iOS 和 React Native
- angular - 角度输入应仅接受数字,但第一个数字不应为零
- php - 按与 Laravel 集合 whereHas() 的相关性排序
- php - PHP函数成功但未收到邮件
- aws-databricks - databricks 笔记本读取 databricks 作业统计信息并将其写入雪花表
- javascript - React Hook 无效用法
- cassandra - 将 DataStax DSE sstable 转换为 csv / 大表导出