Es scheint einen aktuellen Trend im Java-Bereich zu geben, sich von der Bereitstellung von Java-Webanwendungen in einem Java-Servlet-Container (oder Anwendungsserver) in Form einer War-Datei (oder einer Ear-Datei) zu entfernen und stattdessen die Anwendung als ausführbares JAR mit zu verpacken Ein eingebetteter Servlet / HTTP-Server wie Jetty. Und das meine ich umso mehr, als neuere Frameworks Einfluss darauf haben, wie neue Anwendungen entwickelt und bereitgestellt werden, anstatt wie Anwendungen an Endbenutzer geliefert werden (weil ich zum Beispiel verstehe, warum Jenkins einen eingebetteten Container verwendet, der sehr einfach zu greifen und zu verwenden ist ). Beispiele für Frameworks, die die ausführbare JAR-Option verwenden: Dropwizard , Spring Boot und Play (es wird nicht auf einem Servlet-Container ausgeführt, aber der HTTP-Server ist eingebettet).
Meine Frage ist, aus einer Umgebung, in der wir unsere (bis zu diesem Zeitpunkt hauptsächlich Struts2) Anwendungen auf einem einzelnen Tomcat-Anwendungsserver bereitgestellt haben, welche Änderungen, Best Practices oder Überlegungen erforderlich sind, wenn wir einen Embedded-Container-Ansatz verwenden möchten ? Derzeit haben wir ungefähr 10 selbst entwickelte Anwendungen, die auf einem einzelnen Tomcat-Server ausgeführt werden. Für diese kleinen Anwendungen ist die Möglichkeit, Ressourcen gemeinsam zu nutzen und auf einem Server verwaltet zu werden, hilfreich. Unsere Anwendungen sollen nicht an Endbenutzer verteilt werden, um sie in ihrer Umgebung auszuführen. Sollte sich dieser Ansatz jedoch ändern, wenn wir uns für die Nutzung eines neueren Java-Frameworks entscheiden? Wird die Umstellung auf ausführbare Jars durch die zunehmende Verwendung von Cloud-Bereitstellungen (z. B. Heroku) vorangetrieben?
Wenn Sie Erfahrung mit der Verwaltung mehrerer Anwendungen im Play-Stil der Bereitstellung im Vergleich zur herkömmlichen Bereitstellung von Kriegsdateien auf einem einzelnen Anwendungsserver haben, teilen Sie uns bitte Ihre Erkenntnisse mit.