Eu usei WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat e alguns outros nos últimos 10 anos. Portanto, se eu estivesse pensando em um novo projeto, me perguntaria primeiro algumas perguntas. Uma coisa que eu não questionaria mais é que eu me recusaria a usar JSPs, a menos que eu fosse torturada até chorar pela minha mãe.
Preciso ser compatível / implantar em um produto específico por causa do mandato de alguém? Não há como ignorá-los ou convencê-los do contrário? Se sim, aí está sua resposta.
Eu tenho que usar EJBs? Realmente? Evite-os, se possível - eles são realmente necessários apenas para sistemas corporativos muito grandes. Lembre-se de que eles são apenas ferramentas, e grandes ferramentas (alguém pode dizer "Marreta Dourada"?). Eles são muito usados, de modo que realmente questionam se você precisa deles. Se você precisar deles, isso removerá várias de suas opções, incluindo o meu favorito, Jetty.
Você precisa usar alguma das outras principais tecnologias J2EE, como JMS, ESB, etc? Nesse caso, e você realmente não pode prescindir, estará novamente restrito a um contêiner J2EE completo. Pense e investigue cuidadosamente antes de se comprometer com o BPM, por exemplo, e evite o AquaLogic BPM a (quase) todos os custos - é feio ao extremo.
Se você realmente deve usar um contêiner J2EE completo, considere o código-fonte primeiro porque é mais robusto, melhor suportado e mais econômico. Eles têm uma base maior de clientes e uma interação de suporte mais aberta, portanto, tendem a obter melhores correções mais rapidamente. No entanto, a resina é imatura e eu a evitaria em relação ao GlassFish ou JBoss - achei problemático implantar e dar suporte. Eu preferiria o JBoss por causa de sua ampla base de clientes, maturidade, etc. O GlassFish é mais difícil de incorporar em um processo automatizado de criação / implantação, mas pode ser mais agradável para alguns de seus recursos específicos (se você precisar).
Tenho um motivo especial para precisar do Apache? Então incline-se para o Tomcat, talvez mais alguma coisa.
Posso me contentar com apenas servlets? Então eu usaria o Jetty - é a solução mais leve, rápida, fácil e flexível. Se eu me inclino a não poder usar o Jetty, questionaria todas as minhas suposições sobre o porquê. YAGNI se aplica.
O melhor é usar o StringTemplate / WebStringTemplate no Jetty: uma solução limpa, robusta, rápida e sustentável, sem taxas de licenciamento, reputação e suporte sólidos, etc. É aí que começo hoje.
A maioria dos aplicativos / sistemas escolhe muitos recursos sofisticados do J2EE quando tudo o que eles realmente precisam é de servlets e JDBC com uma arquitetura / design decente. Pergunta por que você acha que precisa de mais.
Dos contêineres completos, eu evitaria o WebLogic e o WebSphere, a menos que você suporte um site público MAJOR (o site do meu empregador atual é implementado no WebLogic e recebe onze milhões de acessos por mês, outros são comparáveis). A verdadeira reivindicação da fama do WebLogic é seu agrupamento relativamente fácil, mas evita os recursos proprietários de bloqueio de fornecedor a (quase) todo o custo. O WebSphere é simplesmente um pesadelo que eu evitaria literalmente a todo custo - eu me recuso a fazer projetos envolvendo o WebSphere depois de ter feito alguns no passado. Nenhum dos produtos vale as enormes taxas de licenciamento, a menos que você realmente tenha uma necessidade especial que incentive o uso de um recurso proprietário. Em uma década como arquiteto / engenheiro sênior de muitas empresas da Fortune 500, ainda não vi essa necessidade. Por outro lado,
Mesmo para sites públicos grandes e de alto tráfego, os produtos proprietários ainda são questionáveis. Prefiro gastar esses milhões de dólares por ano em taxas de licenciamento em um bom hardware e um tempo de qualidade de um punhado de bons consultores para resolver uma solução simples de escalabilidade. Os milhões extras por ano poderiam então ser usados para produzir algo digno de vender naquele belo site ...
EDIT: outra peça a considerar ...
Encontrei recentemente terracota . Estou repensando tudo e pretendo implantá-lo em um sistema significativo em breve. Em particular, a Terracotta faz o cluster melhor do que qualquer outra coisa, então eu não recomendaria mais o WebLogic por seu cluster.