Как бы вы сравнили Apache Tomcat & Glassfish как производственные серверы?

У меня есть J2EE-система, работающая в настоящее время на Apache Tomcat. Мы обсуждаем, как переносить наши серверы на сервер Glassfish.

Может ли кто-нибудь поделиться своим опытом с любым из них?

Ответ 1

Здесь довольно старое сравнение. Таким образом, возможности каждого сервера, несомненно, улучшились.

Изменить: Здесь текущее сравнение.

Оба более стабильны для использования в производстве. Это действительно придет к особенностям.

Ответ 2

Они не очень сопоставимы.

Apache Tomcat не является сервером J2EE. Это просто сервлет-контейнер для веб-приложений. Больше ничего. Если вам нужны реализации J2EE API, вы должны взять их из других источников. Например, используя сервер Apache Geronimo, который использует Tomcat в качестве своего контейнера, или, взяв файлы JAR из Glassfish.

Glassfish - это полный Java Application Server с реализацией для API, таких как JPA, EJB и т.д. Glassfish содержит Servlet Engine, первоначально используемый Tomcat, но они улучшили его (не знаю, что именно). Более поздние серверы из стекла используют другой контейнер, используя grizzly, который использует NIO API для ввода/вывода и масштабируется достаточно хорошо. Насколько я знаю, Servlet Engine Glassfish более совершенен. Здесь я нашел хороший бенчмарк (он немного старый, хотя):

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

Ответ 3

Большой вопрос: почему? Как вы думаете, что вам нужно, чтобы Glassfish предоставил вам Tomcat или Jetty? Возможно, утилиты управления?

Большинство вещей, которые вы хотите за пределами основного контейнера сервлетов, легко подключаемы.

Итак, в то время как Glassfish отлично, как есть, нет смысла двигаться "только потому, что". Большинство производственных услуг, которые я построил, находятся на простых старых контейнерах сервлетов, не используя ни одну из особенностей, специфичных для реализации.