你如何比较Apache Tomcat和Glassfish作为生产服务器?

我有一个基于J2EE的系统,目前在Apache Tomcat上运行。 我们正在讨论将生产服务器迁移到Glassfish服务器。

有人可以分享他们两人的经验吗?

这是一个相当古老的比较 。 因此,每个服务器的能力无疑有所改善。

编辑:这是当前的比较。

虽然两者都足够稳定的生产使用。 这真的要归功于功能。

他们没有真正的可比性。

Apache Tomcat不是J2EE服务器。 这只是一个Web应用程序的Servlet容器。 而已。 如果您需要J2EE API实现,则必须从别处获取这些实现。 例如,使用使用Tomcat作为容器的Apache Geronimo服务器,或者使用Glassfish的JAR文件。

Glassfish是一个完整的Java应用服务器,为JPA,EJB等API提供实现。 Glassfish包含一个由Tomcat最初使用的Servlet引擎,但他们改进了它(不知道究竟是什么)。 更近期的glassfish服务器使用另一个使用grizzly容器,它使用NIO API进行输入/输出,并且扩展得相当好。 据我所知,Glassfish Servlet Engine是更高性能的。 在这里,我发现了一个很好的基准(虽然有点老):

http://weblogs.java.net/blog/sdo/archive/2007/05/how_to_test_con.html

最大的问题是:为什么? 你认为你需要Glassfish将通过Tomcat或Jetty提供给你什么? 管理实用程序?

除了基本的servlet容器之外,大多数东西都可以轻松地插入。

所以虽然Glassfish现在状况良好,但“仅仅因为”并没有意义。 我建立的大多数生产服务都是在普通的旧servlet容器上,没有使用特定于实现的特性。

这可能有点过时,甚至有点偏见,但是它来自Oracle。 你可以跳到Glass Fish和Tom Cat的比较部分

http://java.sun.com/developer/technicalArticles/glassfish/GFandMySQL_Part1.html