我的项目目前正在Tomcat 7上运行。我应该升级到Tomcat 8吗?这样做的优点和缺点是什么? tomcat 8在性能,内存利用率方面更好吗?
答案 0 :(得分:25)
由于你的项目已经在tomcat 7上运行,我建议保持现状一段时间。关于tomcat 8性能改进的数据不多。在互联网上报告了一些问题,这对于任何新版本的产品都是常见的。
Tomcat 8在并发环境中具有更好的性能。
根据我对tomcat产品的经验,除非您拥有资源非常密集的应用程序,否则很可能升级不会产生任何重大性能。升级前请阅读以下链接
Java 1.7 ==>第一个重要的变化是,Tomcat 8现在需要Java 7或更高版本才能运行,因此如果要从早期的Tomcat版本迁移,则应该升级到Java 7
QWidget
服务器连接器
就服务器连接器而言,默认的HTTP和AJP连接器实现已从Java阻塞IO实现(BIO)切换到Java非阻塞IO实现(NIO)。可能仍然使用较旧的BIO,但使用非阻塞IO的Servlet 3.1和WebSocket 1.0功能将回退到阻塞IO,这可能会导致意外的应用程序行为。
网络应用资源
作为配置一部分并表示Web应用程序可用的所有资源的Resources元素已经过修订。现在它包括类,JAR文件,HTML,JSP以及有助于Web应用程序的任何其他文件。提供了实现以使用目录,JAR文件和WAR作为这些资源的来源,并且可以扩展资源实现以支持以其他形式存储的文件,例如在数据库或版本化存储库中。
远程调试
使用jpda选项启动Tomcat 8以启用远程调试时,Tomcat 8默认侦听localhost:8000。早期版本听取了*:8000。如果需要,可以通过在例如setenv。[bat | sh]中设置JPDA_ADDRESS环境变量来覆盖此默认值。
API中的更改
虽然Tomcat 8内部API与Tomcat 7广泛兼容,但在细节层面上有许多变化,它们不是二进制兼容的。与Tomcat内部交互的自定义组件的开发人员应该查看相关API的JavaDoc。
特别值得注意的是:
Manager,Loader和Resources已从Container转移到Context,因为Context是唯一使用它们的地方。
Mapper已从连接器移至服务,因为Mapper对于给定服务的所有连接器都是相同的。
正如我们所说,有一个新的Resources实现将Aliases,VirtualLoader,VirtualDirContext,JAR资源和外部存储库合并到一个框架中,而不是为每个功能单独构建一个框架。
提供有关tomcat 8更改的更多信息的一些链接在下面给出
http://people.apache.org/~markt/presentations/2013-09-Apache-Tomcat8.pdf
答案 1 :(得分:7)
以下是如何了解自己何时升级。您可以在任何版本的Tomcat上使用它,现在或将来,它不仅涵盖从Tomcat 7升级到Tomcat 8。
当主要版本发生更改时,对Tomcat 的大多数更改是对构建特定版本的servlet,JSP和JDK规范的升级。如果您不需要适用于您的应用程序的新规范,那么您使用的版本不会被归档" (Tomcat 7在撰写本文时未归档),您可能不需要升级。 http://tomcat.apache.org/whichversion.html介绍了如何进行选择。
在实际情况中,您的选择也可能受到其他因素的影响,例如您的生产发行版中的包管理器是否支持您想要的版本。 或者相反,如果您的发行版只有特定版本的Tomcat,您可能会升级,因为它可以节省大量时间。
请记住,新功能也意味着新bug的潜在可能性。如果您没有使用新Tomcat版本的规范,您是否希望有机会破解?仅仅因为版本具有更高性能的潜力并不意味着它在您独特的部署环境中不会崩溃。如果您能负担得起,这里的最佳答案是在负载均衡器后面部署两个版本,以防新的版本无效。
也就是说,软件总是有所改进。我建议您阅读发行说明,了解您选择的各种版本的主要版本,以便根据您自己的情况选择最佳版本。例如,https://tomcat.apache.org/tomcat-8.0-doc/RELEASE-NOTES.txt涵盖8.0版本。
选择主要版本后,通常需要使用最新版本,因为错误会随着时间的推移而得到修复。
答案 2 :(得分:3)
请参阅下面的tomcat 8的新主要功能。如果您需要,这将有助于决定是否迁移。
Tomcat 8.0版本与Java EE 7规范一致。它支持:
Tomcat 8可以使用Apache Portable Runtime提供卓越的可扩展性,性能以及与本机服务器技术的更好集成。
就服务器连接器而言,默认的HTTP和AJP连接器实现已从Java阻塞IO实现(BIO)切换到Java非阻塞IO实现(NIO)
另请注意,Tomcat 8需要Java 7或更高版本才能运行,因此只有在项目中至少使用Java 7时才能进行迁移。