Ich habe in den letzten 10 Jahren WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat und einige andere verwendet. Wenn ich also über ein neues Projekt nachdenken würde, würde ich mir zuerst ein paar Fragen stellen. Eine Sache, die ich nicht mehr in Frage stellen würde, ist, dass ich mich pauschal weigern würde, JSPs zu verwenden, es sei denn, ich wurde gefoltert, bis ich um meine Mutter weinte.
Muss ich aufgrund eines Mandats einer Person mit einem bestimmten Produkt kompatibel sein / bereitgestellt werden? Gibt es keine Möglichkeit, sie zu ignorieren oder anders zu überzeugen? Wenn ja, gibt es Ihre Antwort.
Muss ich EJBs verwenden? "Ja wirklich?" Vermeiden Sie sie, wenn es überhaupt möglich ist - sie werden wirklich nur für sehr große Systeme der Enterprise-Klasse benötigt. Denken Sie daran, dass es sich nur um Werkzeuge handelt, und zwar um große (kann jemand "Goldener Vorschlaghammer" sagen?). Sie sind stark überbeansprucht, also fragen Sie sich wirklich, ob Sie sie brauchen. Wenn Sie sie brauchen, werden dadurch einige Ihrer Optionen entfernt, einschließlich meines Favoriten Jetty.
Müssen Sie eine der anderen wichtigen J2EE-Technologien wie JMS, ESB usw. verwenden? Wenn dies der Fall ist und Sie wirklich nicht darauf verzichten können, sind Sie erneut auf einen vollständigen J2EE-Container beschränkt. Überlegen und recherchieren Sie sorgfältig, bevor Sie sich beispielsweise für BPM entscheiden, und vermeiden Sie AquaLogic BPM um (fast) jeden Preis - es ist extrem hässlich.
Wenn Sie wirklich einen vollständigen J2EE-Container verwenden müssen, sollten Sie zuerst Open Source in Betracht ziehen, da dieser robuster, besser unterstützt und kostengünstiger ist. Sie haben eine größere Kundenbasis und eine offenere Support-Interaktion, sodass sie in der Regel schneller bessere Lösungen erhalten. Resin ist jedoch unreif und ich würde es im Vergleich zu GlassFish oder JBoss vermeiden - ich fand es problematisch, es bereitzustellen und zu unterstützen. Ich würde JBoss wegen seiner breiteren Kundenbasis, Reife usw. bevorzugen. GlassFish ist schwieriger in einen automatisierten Build- / Bereitstellungsprozess zu integrieren, aber es könnte für einige seiner spezifischen Funktionen besser sein (wenn Sie sie benötigen).
Habe ich einen besonderen Grund, Apache zu brauchen? Dann beugen Sie sich zu Tomcat, vielleicht plus etwas.
Kann ich nur mit Servlets auskommen? Dann würde ich Jetty verwenden - es ist die leichteste, schnellste, einfachste und flexibelste Lösung. Wenn ich mich dagegen lehne, Jetty benutzen zu können, würde ich alle meine Annahmen in Frage stellen, warum. YAGNI gilt.
Am besten verwenden Sie StringTemplate / WebStringTemplate auf Jetty: eine saubere, robuste, schnelle und wartbare Lösung ohne Lizenzgebühren, soliden Ruf und Support usw. Hier beginne ich heutzutage.
Die meisten Anwendungen / Systeme wählen viele ausgefallene J2EE-Funktionen, wenn sie nur Servlets und JDBC mit einer anständigen Architektur / Design benötigen. Frage, warum du denkst, du brauchst mehr.
Von den vollständigen Containern würde ich WebLogic und WebSphere vermeiden, es sei denn, Sie unterstützen eine öffentliche MAJOR-Website (die Website meines aktuellen Arbeitgebers wird auf WebLogic bereitgestellt und erreicht mehr als elf Millionen Zugriffe pro Monat, andere waren vergleichbar). Der wahre Bekanntheitsgrad von WebLogic liegt in der relativ einfachen Clusterbildung. Vermeiden Sie jedoch (fast) um jeden Preis die proprietären Funktionen zur Lieferantenbindung. WebSphere ist einfach ein Albtraum, den ich buchstäblich um jeden Preis vermeiden würde - ich lehne es ab, Projekte mit WebSphere durchzuführen, nachdem ich in der Vergangenheit ein paar gemacht habe. Keines der beiden Produkte ist die massiven Lizenzgebühren wert, es sei denn, Sie haben wirklich einen besonderen Bedarf, der die Verwendung einer proprietären Funktion fördert. In einem Jahrzehnt als leitender Architekt / Ingenieur für viele Fortune 500-Unternehmen habe ich einen solchen Bedarf noch nicht erkannt. Andererseits,
Selbst für die wirklich großen, stark frequentierten öffentlichen Websites sind die proprietären Produkte immer noch fraglich. Ich würde diese Lizenzgebühren in Höhe von mehreren Millionen Dollar pro Jahr lieber für eine gute Hardware und eine gute Zeit von einer Handvoll wirklich guter Berater ausgeben, um eine einfache Skalierbarkeitslösung zu finden. Die zusätzlichen Millionen pro Jahr könnten dann verwendet werden, um etwas zu produzieren, das es wert ist, auf dieser schönen Website verkauft zu werden ...
EDIT: ein weiteres Stück zu berücksichtigen ...
Ich bin kürzlich auf Terrakotta gestoßen . Ich überdenke alles und versuche, es bald in einem bedeutenden System bereitzustellen. Insbesondere Terracotta macht Clustering besser als alles andere, daher würde ich WebLogic für sein Clustering NICHT MEHR empfehlen.