J'ai utilisé WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat et quelques autres au cours des 10 dernières années. Donc, si j'envisageais un nouveau projet, je me poserais d'abord quelques questions. Une chose que je ne remettrais plus en question, c'est que je refuserais catégoriquement d'utiliser les JSP à moins d'être torturé jusqu'à ce que je pleure pour ma maman.
Dois-je être compatible / déployer sur un produit spécifique en raison du mandat de quelqu'un? N'y a-t-il aucun moyen de les ignorer ou de les convaincre du contraire? Si oui, voici votre réponse.
Dois-je utiliser des EJB? Vraiment? Évitez-les si possible - ils ne sont vraiment nécessaires que pour les très grands systèmes de classe entreprise. Rappelez-vous que ce ne sont que des outils, et des outils importants (quelqu'un peut-il dire "Golden Sledgehammer"?). Ils sont largement surutilisés, alors demandez-vous vraiment si vous en avez besoin. Si vous en avez besoin, cela supprime plusieurs de vos options, y compris ma préférée, Jetty.
Devez-vous utiliser l'une des autres technologies J2EE majeures telles que JMS, ESB, etc.? Si tel est le cas, et vous ne pouvez vraiment pas vous en passer, vous êtes de nouveau contraint à un conteneur J2EE à part entière. Réfléchissez attentivement et étudiez avant de vous engager dans le BPM, par exemple, et évitez AquaLogic BPM à (presque) tout prix - c'est moche à l'extrême.
Si vous devez vraiment utiliser un conteneur J2EE à part entière, envisagez d'abord l'open source car il est plus robuste, mieux pris en charge et plus rentable. Ils ont une plus grande base de clients et une interaction de support plus ouverte, ils ont donc tendance à obtenir de meilleures solutions plus rapidement. Cependant, Resin est immature et je l'éviterais par rapport à GlassFish ou JBoss - j'ai trouvé problématique de déployer et de supporter. Je préférerais JBoss en raison de sa clientèle plus large, de sa maturité, etc. GlassFish est plus difficile à intégrer dans un processus de construction / déploiement automatisé, mais il peut être plus agréable pour certaines de ses fonctionnalités spécifiques (si vous en avez besoin).
Ai-je une raison particulière pour avoir besoin d'Apache? Puis penchez-vous vers Tomcat, peut-être plus quelque chose.
Puis-je me contenter de servlets uniquement? Ensuite, j'utiliserais Jetty - c'est la solution la plus légère, la plus rapide, la plus simple et la plus flexible. Si je suis contre la possibilité d'utiliser Jetty, je remettrais en question toutes mes hypothèses sur le pourquoi. YAGNI s'applique.
Le mieux est d'utiliser StringTemplate / WebStringTemplate sur Jetty: une solution propre, robuste, rapide et maintenable sans frais de licence, une solide réputation et un support solide, etc. C'est là que je commence aujourd'hui.
La plupart des applications / systèmes choisissent de nombreuses fonctionnalités J2EE sophistiquées alors qu'elles n'ont vraiment besoin que de servlets et de JDBC avec une architecture / conception décente. Demandez pourquoi vous pensez avoir besoin de plus.
Parmi les conteneurs à part entière, j'éviterais WebLogic et WebSphere à moins que vous ne preniez en charge un site Web public MAJEUR (le site Web de mon employeur actuel est déployé sur WebLogic et il obtient onze + millions de visites par mois, d'autres ont été comparables). La véritable prétention à la renommée de WebLogic est son clustering relativement facile, mais évite ses fonctionnalités propriétaires de verrouillage du fournisseur à (presque) tout prix. WebSphere est simplement un cauchemar que j'éviterais littéralement à tout prix - je refuse de faire des projets impliquant WebSphere après en avoir fait quelques-uns dans le passé. Aucun des deux produits ne vaut les frais de licence massifs, à moins que vous n'ayez vraiment un besoin particulier qui entraîne l'utilisation d'une fonctionnalité propriétaire. En une décennie en tant qu'architecte / ingénieur senior pour de nombreuses entreprises Fortune 500, je n'ai pas encore vu un tel besoin. D'autre part,
Même pour les sites Web publics très volumineux et à fort trafic, les produits propriétaires sont toujours discutables. Je préfère dépenser plusieurs millions de dollars par an de frais de licence sur du bon matériel et du temps de qualité avec une poignée de très bons consultants pour aborder une solution d'évolutivité simple. Les millions supplémentaires par an pourraient ensuite être utilisés pour produire quelque chose qui mérite d'être vendu sur ce joli site Web ...
EDIT: une autre pièce à considérer ...
J'ai récemment rencontré Terracotta . Je repense tout et cherche à le déployer prochainement dans un système important. En particulier, Terracotta fait le clustering mieux que toute autre chose, je ne recommanderais donc PLUS WebLogic pour son clustering.