Выбор сервера приложений с открытым исходным кодом для Java EE

Я знаю, что это может быть повторяющаяся тема, но я прочитал много статей, и у меня все еще есть сомнения. Кроме того, я хотел бы услышать более свежие мнения об этом.

Основные требования к моему серверу приложений: гибкая настройка, поддержка чрезвычайно большого числа одновременно работающих пользователей. Это будет система для индустрии мобильной связи, поэтому она также должна иметь высокую доступность.

Я собираюсь разработать приложение Java EE, и серверы приложений с открытым исходным кодом - мой единственный вариант. Я использовал GlassFish для очень маленького проекта, и он мне очень понравился.

5 ответов

Мои нынешние мысли:

  • Маленький, быстрый для начала и простой: Jetty
  • Большая и надежная и очень большая база знаний пользователей: Tomcat
  • Опять больше, больше возможностей, хорошая поддержка предприятия, медленный запуск: JBoss

Все могут поддерживать большие пользовательские базы, и все будут хорошо выполнять 95% случаев использования.

Я бы начал по умолчанию сверху и переместился бы вниз по списку, поскольку ваша ситуация / требования усложняются, например, сколько вам нужно поддержки Java EE

Кроме того, если вы не используете какие-либо пользовательские функции, изменение на более позднем этапе должно быть относительно простым.

Это основано исключительно на моем личном опыте и немного упрощенно - об этом можно писать книги!

Если вы ищете сервер Java EE, у вас в основном есть два варианта: GlassFish или JBoss (у Geronimo или Jonas слишком маленькие сообщества, и я не знаю о серьезных ссылках на них - что не означает, что нет любой - я бы их не выбрал). Обе являются серьезными платформами, поддерживают кластеризацию и HA и используются для создания крупномасштабных кластеров и предлагают коммерческую поддержку, если это имеет значение.

Теперь краткий обзор различных версий:

  • JBoss AS 5.1: сертифицирован Java EE 5. Поддерживает HA, кластеризацию, поставляется с консолью администратора, если вы не знакомы с XML (но пока не поддерживает настройку кластера через консоль)
  • GlassFish v2.1: сертифицирован Java EE 5. Поддерживает HA, кластеризацию, лучшую консоль администратора, чем JBoss 5.1 (особенно для настройки кластера, если это имеет значение), отличный инструмент CLI.
  • GlassFish v3: сертифицирован Java EE 6. Очень новый, не поддерживает кластеризацию, централизованное администрирование. Версия 3.0.1 будет выпущена в ближайшее время.
  • JBoss AS 6.0: сертифицирован Java EE 6. Еще не достиг общей доступности. Пока ничего не могу сказать об этом, M2 не может быть представителем окончательной версии.
  • GlassFish v3.1: сертифицирован Java EE 6. Будет добавлено централизованное администрирование / кластеры, высокая доступность / репликация состояний и многое другое. Будет выпущен в этом году. Смотрите официальную дорожную карту.

В конце концов, если ваш проект не будет запущен в производство до 2011 года, я бы рассмотрел Java EE 6. Если нет, то перейдите на сервер Java EE 5. В любом случае, не основывайте свой выбор только на мнениях в сети. Загрузите оба сервера, настройте кластеры по крайней мере из четырех узлов на двух компьютерах (это минимум, используйте больший кластер, если это возможно), запустите тестирование с представительным подтверждением концепции вашего приложения. И не стесняйтесь привлекать людей из JBoss и Oracle, я уверен, что они будут рады помочь доказать, что их решение является лучшим:)

Рекомендации

Что касается JBoss, взгляните на выступление Бела Баня " Большие кластеры" в JBoss (pdf) на JBoss World 2009. Также проверьте сессии на JBoss World 2010. Что касается GlassFish, взгляните на их истории, а точнее на Telco. Свяжитесь с Sun/Oracle и RedHat для получения дополнительной информации.

Если вам действительно нужна Java EE (строго говоря), тогда JBoss - хороший вариант. Если вам не нужна настоящая Java EE, то вам будет полезно использовать Tomcat. SpringSource также предоставляет корпоративную версию Tomcat с поддержкой tc Server, которая будет хорошим вариантом, если вам не нужна настоящая Java EE.

Если вы говорите о полной лодке Java EE, то о Glassfish.

GFv2.1 безупречен, GFv3 слишком молод, чтобы сказать, но предлагает новую Java EE 6.

Активно развивается, бесплатная и коммерческая поддержка, хорошие форумы. Oracle опубликовал эту дорожную карту для этого.

Он прост в использовании, прост в настройке, хорошо организован. Отличная консоль.

Действительно хорошо документированные, огромное количество дополнительных документов и статей от людей, работающих над различными его аспектами (Metro, Grizzly, JAX-RS, NetBeans и т. Д.)

NetBeans + Glassfish - это безболезненное решение для начала работы.

Предлагает кластеризацию и всевозможные варианты управления.

Я действительно рекомендую пойти с GlassFish. Помимо вашего знакомства, он использует сетевую инфраструктуру NIO ( Grizzly), которая поддерживает очень большое количество одновременных подключений.

В первую очередь мы используем JBoss, и я могу сказать, что JBoss5 также может поддерживать довольно большое количество соединений (насколько я знаю, он также использует разъем на основе NIO).

Существует также контейнер EJB под названием Resin, который является полу-открытым исходным кодом (в основном они имеют версию с открытым исходным кодом и проприетарную версию). Люди говорят, что у него отличная производительность, но у меня нет шанса продолжить расследование.

Последнее, что я хочу сказать, вы уверены, что хотите использовать контейнер JavaEE EJB? Мы фактически начали с контейнера JavaEE EJB, но из-за нашего требования к производительности и т. Д. Мы сейчас пытаемся перейти на Tomcat+Spring. EJB имеет ограничение на модель потоков и т. Д., Что может стать нежелательным ограничением, если у вас есть клиенты, отличные от веб-браузеров...

До JavaEE5 у вас был только этот "TimerService" для выполнения периодических задач и JMS для выполнения асинхронных операций, что очень тяжело и может сильно раздражать.

Другие вопросы по тегам