我最近继承了一个运行 Tomcat 7.0.68 的系统,并发现 Tomcat 7 将于 2021 年 3 月终止使用。我还了解到 Tomcat 8.0 似乎已被 Tomcat 8.5 和 9.0 取代,这让我感到困惑。哪个是推荐的升级候选?两者之间有什么优缺点吗?我目前正在运行 Java 1.8.0_74,但在我们的整个基础设施中都在使用 Java 8 的更高版本。我们正在运行的 Web 应用程序是 THREDDS v4.6.10。任何建议或建议都将不胜感激。
答案1
Tomcat 8.5 和 9.0 之间没有太大区别:前者最初是 Tomcat 9.0 的第一个预发布版本的分支。由于 Java EE Servlet API 的重大变化来自版本 3.0(由 Tomcat 7.0 支持),因此我预计迁移到较新的 Tomcat 版本不会出现任何重大问题。
我会选择 Tomcat 9.0,因为它是“您所需要的最后一个版本”,这意味着 Tomcat 10.0 将使用二进制不兼容的标准 Jakara EE Servlet 5.0(基本上他们将软件包从 重命名javax.servlet
为jakarta.servlet
),所以我认为 Tomcat 9.0 将会存在很长一段时间。
迁移期间需要注意以下几点:
- 首先设置一个测试服务器,比如以意想不到的方式中断,
- 继续使用 Java SE 8.0,因为它将至少支持到 2026 年 5 月而且由于新版本缺少许多 Java EE API(您的应用程序可能依赖这些 API,最明显的是 JAXB),
- 如果你使用容器管理的连接池,Tomcat 7.0 使用
commons-dbcp
,而 Tomcat 8.0+ 使用commons-dbcp2
,因此你可能需要调整连接池参数,
您没有提到运行 Tomcat 的系统。如果您使用 Windows,我见过许多客户错误地安装了 32 位 Java(这是您在 Google 上找到的第一个结果),这会将可用内存限制在 2 GiB 左右。
答案2
为了闭合循环,我们决定使用 Tomcat 9.0.31 和 Java 11.0.16,尽管不可否认的是,链中最薄弱的环节是 THREDDS 应用程序本身,现已升级到 5.4 版本。