Java Servlet部署 - 嵌入或不嵌入 - Tomcat / Jetty

时间:2011-02-18 17:00:00

标签: java tomcat deployment embedded-jetty

我有几个webapps部署到生产中。我已经使用Tomcat作为我的servlet引擎已经有10年了。我正在考虑从部署-war-into-Tomcat模型中嵌入Jetty模型。

这些Web应用程序部署在多个服务器上,其中一些是水平扩展的(使用基于nginx IP哈希的分区)。

我看到了一些优势:

  • 我可以为特定的webapp配置我的servlet引擎(而不是运行几个不同的webapps的Tomcat的通用配置)

  • 通过在同一主机上运行多个Jetty实例(配置为侦听不同的端口),可以更轻松地水平扩展我的webapp。我也可以用Tomcat做这个(我过去在同一台主机上运行过多个tomcat实例),但是我已经开始使用Debian软件包(.deb档案)进行部署,并且运行多个Tomcats并不容易这种方法。

  • 我的部署包(.deb)在构建时更“完整”,即我不必确定Tomcat实例是否配置正确。

缺点:

  • 在服务器上运行的更多servlet引擎实例意味着使用更多资源

  • 我从未使用过Jetty。我认为我的webapps中没有任何特定于Tomcat的内容,但我不确定。

我主要担心的是Jetty将使用的资源量。如果我有一个运行4个webapps的Tomcat实例,那么资源(内存/处理器)与运行四个Jetty实例的区别是什么?

这个问题可能过于开放,但我很想知道我是否忽略了某些东西,或者是否有任何人从Tomcat迁移到(嵌入式)Jetty。

3 个答案:

答案 0 :(得分:2)

我发现最容易嵌入jar文件的Web容器(它仍然是一个有效的WAR)是Winstone(http://winstone.sourceforge.net/)。

詹金斯 - http://jenkins-ci.org/ - 使用这个容器,因此经过了压力测试。请注意,它只是Servlet 2.4。

答案 1 :(得分:0)

我也习惯了Tomcat,所以在我的新项目中,我尝试使用Jetty来了解它。

在企业环境中(你有生产/测试/开发服务器)我会坚持使用Tomcat,主要是因为它可以帮助你从配置文件中分离代码(现在我正在单独设置conf文件) jar,因为当我将更改从测试移动到生产时,他们不必手动更新我将传递给sysadmin的jar。)

其他问题是看起来Jetty在很久以前就改变了所有权,寻找信息经常让我看到旧版本。

除此之外,使用Jetty与Tomcat没有什么不同;不得不通过文档运行一点来查找一切都在哪里,但结构是(我最后看到的,我没有尝试过任何太复杂的东西)或多或少像Tomcat。

答案 2 :(得分:0)

嗯,我认为没有直接答案;

我可能不完全理解“.deb”部分因为我不是debian怪人:))

我更喜欢拥有一个tomcat实例,其中包含许多配置,也就是CATALINA_HOME文件夹,您可以在其中指定正在运行的应用程序和端口,因此您可以随时单独拥有所有配置并根据需要更改tomcat实例。

另外,请看相关帖子: Jetty: To embed or not to embed?