是否可以将 tomee 与较新版本的 tomcat 一起使用?

如何解决是否可以将 tomee 与较新版本的 tomcat 一起使用?

我正在维护基于 Tomee 构建的旧服务器。 Tomee 版本比 tomcat 版本晚了几个月。我们需要在我的公司遵守严格的安全政策,即使是最新的 Tomee 版本也因为存在未修补的安全问题而提高安全标志。

有没有办法使用 tomee 及其所有托管依赖项,但要覆盖 tomcat 版本以进行部署?

部署环境是通过 docker 实现的,所以理想情况下,我只需在 dockerfile 中添加几行即可拉取更新的 tomcat 并覆盖 tomee 使用的那个。这听起来很简单还是有什么技巧?

解决方法

基本上,您需要遵守以下约定:

  • Tomcat 10.0.x -> TomEE 9.0.X (EE 9)
  • Tomcat 9.0.x -> TomEE 8.0.x (EE 8)
  • Tomcat 8.0.x -> TomEE 7.x.x (EE 7)

在 Tomcat 主要版本之间切换不容易。在相应的 TomEE 版本中修补次要的 Tomcat 版本更新 - 但是 - 是可能的。

但是,有时需要替换 Tomcat 发行版中的某些类以从头开始构建完整的 TomEE 发行版。您可以在 related Maven build 文件中查看详细信息。此外,其他一些文件和属性也是“引导”的。相关内容包含在 Installer.java 和相关的 web.xml 中。

如果我需要修补 Tomcat 的版本并且发布周期对于我的需求来说太慢,我会走以下路径:

  1. 查看最新的发布标签
  2. 在父POM中修改Tomcat的版本
  3. 从头开始构建 mvn clean install -Dskip.tests=true(需要 Java 8 + Maven)
  4. targettomee/apache-tomee/ 文件夹中获取最新的 TAR.GZ / ZIP。
  5. 将其放入我的容器中。 1.) 到 4.) 可以在单独的 docker 构建镜像/容器中进行,然后转移到目标容器构建。

替代方案

您还可以使用嵌入式 TomEE Web 应用程序将 Tomcat“升级”为 TomEE。 但是,有一个已知的限制:如果您的 webapp 在“tomee” webapp 之前启动,则集成必须对笨重的 webapp 进行单独的取消部署/重新部署。此外,需要一些“魔法”来将 tomee webapp 的内容加载到 Tomcat 服务器类加载器中。 From current mailing list discussions,此网络应用程序将在不久的将来停用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?