За последние 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 для ее кластеризации.