За последние 10 с лишним лет я использовал WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat и некоторые другие. Итак, если бы я рассматривал новый проект, я бы сначала задал себе несколько вопросов. Одна вещь, которую я больше не сомневаюсь, заключается в том, что я категорически отказываюсь использовать JSP, если меня не будут пытать, пока я не заплачу за свою маму.
Должен ли я быть совместимым / развертываться с определенным продуктом из-за чьего-либо мандата? Нет ли способа игнорировать их или убедить их в обратном? Если так, то есть твой ответ.
Должен ли я использовать EJB? В самом деле? Избегайте их, если это вообще возможно - они действительно нужны только для очень больших систем корпоративного класса. Помните, что они всего лишь инструменты, и при этом большие (кто-нибудь может сказать «Золотая кувалда»?). Они сильно перегружены, так что действительно, действительно вопрос, нужны ли они вам. Если они вам нужны, тогда это удалит несколько ваших вариантов, включая мой любимый Jetty.
Вам нужно использовать какие-либо другие основные технологии J2EE, такие как JMS, ESB и т. Д.? Если это так, и вы действительно не можете обойтись без этого, то вы снова ограничены полноценным контейнером J2EE. Тщательно продумайте и исследуйте, прежде чем приступить к BPM, например, и избегайте AquaLogic BPM при (почти) любых затратах - это безобразно до крайности.
Если вам действительно необходимо использовать полноценный J2EE-контейнер, сначала рассмотрите возможность использования открытого исходного кода, поскольку он более надежен, лучше поддерживается и более рентабелен. У них большая клиентская база и более открытое взаимодействие со службой поддержки, поэтому они стремятся быстрее находить лучшие исправления. Тем не менее, Resin является незрелым, и я бы избегал его по сравнению с GlassFish или JBoss - я нашел его проблематичным для развертывания и поддержки. Я бы предпочел JBoss из-за его более широкой клиентской базы, зрелости и т. Д. GlassFish сложнее включить в автоматизированный процесс сборки / развертывания, но он может быть лучше для некоторых его специфических функций (если они вам нужны).
У меня есть особая причина, чтобы нуждаться в Apache? Затем наклонитесь к Tomcat, возможно, плюс что-то.
Могу ли я обойтись только с сервлетами? Тогда я бы использовал Jetty - это самое легкое, быстрое, простое и гибкое решение. Если бы я опирался на возможность пользоваться Jetty, я бы поставил под сомнение все свои предположения о том, почему. ЯГНИ применяется.
Лучше всего использовать StringTemplate / WebStringTemplate на Jetty: чистое, надежное, быстрое и удобное в обслуживании решение без лицензионных сборов, солидной репутации и поддержки и т. Д. Именно здесь я начинаю в настоящее время.
Большинство приложений / систем выбирают множество необычных функций J2EE, когда все, что им действительно нужно, это сервлеты и JDBC с некоторой приличной архитектурой / дизайном. Вопрос, почему вы думаете, что вам нужно больше.
Из полноценных контейнеров я бы избегал WebLogic и WebSphere, если вы не поддерживаете общедоступный веб-сайт MAJOR (веб-сайт моего нынешнего работодателя развернут на WebLogic, и его посещает одиннадцать + миллионов обращений в месяц, другие были сопоставимы). Реальная претензия WebLogic на славу - это их относительно простая кластеризация, но избегайте их фирменных функций привязки к поставщикам практически (почти) любой ценой. WebSphere - это просто кошмар, которого я бы избежал буквально любой ценой - я отказываюсь делать проекты с участием WebSphere после того, как сделал пару в прошлом. Ни один из этих продуктов не стоит огромных лицензионных сборов, если только у вас действительно нет особой потребности, которая стимулирует использование проприетарной функции. За десять лет работы старшим архитектором / инженером во многих компаниях из списка Fortune 500 я еще не видел такой необходимости. С другой стороны,
Даже для действительно больших публичных веб-сайтов с высоким трафиком проприетарные продукты все еще сомнительны. Я бы предпочел тратить эти многомиллионные доллары в год на лицензионные сборы на какое-то хорошее оборудование и некоторое время, затрачиваемое кучкой действительно хороших консультантов, для решения простого масштабируемого решения. Дополнительные миллионы в год могут быть использованы для производства чего-то достойного продажи на этом прекрасном сайте ...
РЕДАКТИРОВАТЬ: еще один кусок, чтобы рассмотреть ...
Я недавно столкнулся с терракотой . Я переосмысливаю все и надеюсь развернуть его в значительной системе в ближайшее время. В частности, Terracotta делает кластеризацию лучше, чем что-либо еще, поэтому я бы НИКОГДА не рекомендовал WebLogic для ее кластеризации.
Термин «сервер приложений» неоднозначен. С GlassFish v3 вы можете начать с малого, скажем, с традиционного веб-контейнера, и развиваться (используя OSGi и простую функциональность «добавить контейнер»), чтобы добавлять все, что вам нужно: JPA, JAX-RS, EJB, JTA, JMS, ESB и т. д. И все же это тот же продукт, тот же интерфейс администратора и т. д. Является ли это для вас сервером приложений? -Алексис (Солнце)
источник
Первый вопрос, который я обычно задаю себе: «Могу ли я сделать это с Tomcat?». Если ответ отрицательный, потому что мне нужен JMS или JTA, я прибегаю к серверу приложений.
Я использовал WebLogic 8 около 3 лет назад, довольный простотой использования WebLogic и моделью лицензирования / стоимости. Мы использовали его для двух проектов: один был веб-сервисом, а другой - порталом. Ни в одном из этих проектов у нас не было проблем с WebLogic или WebLogic Portal.
Последние два года я работал с WebSphere. Каждый раз, когда я вел переговоры с IBM, это всегда заканчивалось в два раза дороже, чем эквивалент WebLogic, но корпоративная политика диктовала необходимость использования WebSphere. Я обнаружил, что кривая обучения в WebSphere значительно круче, чем в WebLogic, и наш жизненный цикл сборки / развертывания / тестирования был настолько трудоемким, что мы использовали Tomcat в среде разработки. Но самая большая проблема, с которой я столкнулся в WebSphere, заключалась в том, что мы столкнулись с ошибкой, которая вынуждала нас перейти на следующий выпуск патча только для того, чтобы столкнуться с новой проблемой разбора web.xml. Потребовалось 48 часов, чтобы проработать все это.
На данный момент я использую JBoss. Около 3 месяцев назад я собирался начать свой новый проект с Tomcat и Jetspeed 2, но я заметил, что Jetspeed 2 кажется немного застойным, и JBoss Portal 2.7.0 был только что выпущен с поддержкой JSR 286 / Portlet 2.0. Я попробовал JBoss и нашел, что его очень легко настроить и администрировать. Цикл сборки / развертывания / тестирования очень быстрый, и мне редко приходится перезагружать сервер, если я где-то не изменил XML-файл Spring.
источник
Я использую jBoss в течение 3-4 лет.
Аргументы для jBoss:
Аргументы против jBoss:
источник
Оформить заказ GlassFish 3.1! Версия 3.1, построенная на модульном ядре GlassFish v3 на основе Java EE 6, обеспечивает кластеризацию, централизованное администрирование и высокую доступность.
Обратитесь к http://blogs.oracle.com/nazrul/entry/glassfish_3_1 для получения дополнительной информации.
источник
Еще один момент, который здесь не обсуждался, это производительность. Если это вызывает озабоченность из-за типа услуги или количества пользователей, то применимо следующее:
Обратите внимание, что G-WAN опирается только на JVM: он не использует никаких других контейнеров (если не указано явно), поэтому вы можете зарезервировать его для критически важных частей ваших веб-приложений.
Поскольку G-WAN поддерживает другие языки (C, C ++, C #, D, Objective-C), вы можете даже обрабатывать некоторые части приложений в необработанном C, сохраняя Java для других задач.
источник
Я мог бы включить предпочитаемую ОС в качестве критерия принятия решения. Это должно облегчить поддержку, если вы используете одного и того же поставщика для ОС и сервера приложений. Если у вас уже есть отношения с одним или обоими поставщиками, подумайте, хорошо ли с ними иметь дело.
С технической точки зрения я бы выбрал GlassFish, потому что он поддерживает более поздние инновации. Я не думаю, что JBoss плох в любом случае, это просто не так актуально.
Большая часть моего опыта связана с WebLogic, но я использовал JBoss и GlassFish. Я только что выпустил новый сайт для полного стека Sun с открытым исходным кодом (OpenSolaris, GlassFish, MySQL), и это был отличный опыт, с небольшими разочарованиями.
источник
Я до сих пор считаю, что WebLogic - лучший сервер приложений Java EE на рынке. Я думаю, что это того стоит, если вы можете позволить себе эти лицензионные сборы.
Я был удивлен, увидев, как далеко вы можете пойти, объединив Tomcat, OpenEJB и ActiveMQ. Мне кажется, это недорогая альтернатива.
Я бы также посмотрел на Spring dm Server. Он основан на Tomcat, но я думаю, что часть OSGi, в которую они добавили, может быть повсюду в любом месте. Если это сделано с тем же качеством, что и среда Spring, это будет очень хорошо.
источник
Альтернатива: вообще не использовать appserver.
Проверять, выписываться http://www.atomikos.com/Publications/J2eeWithoutApplicationServer .
Для веб-проектов используйте легкий веб-контейнер, если это необходимо, в сочетании с чем-то вроде Wicket, чтобы избежать сложности JSP / JSF или распорок.
HTH Парень
источник