In meinem Fall betrachten wir einen einfachen REST-Dienst, der mit Spring Boot erstellt und konfiguriert wurde. Dieser Dienst kommuniziert mit einer Datenbank (z. B. Postgres).
Was ist ein Unterschied zwischen:
.jar
-Datei und führen Sie sie auf meinem öffentlichen Remote-Host über java -jar myservice.jar
? oder
.war
file und stellen Sie es auf Tomcat / Jetty bereit? Die erste Option scheint viel einfacher zu sein, du musst nur ein .jar
ausführen. Als zweite Option müssen Sie eine Tomcat-Instanz erstellen, sie ausführen und dann eine .war
-Datei bereitstellen.
Gibt es einen anderen Unterschied? Irgendwelche Vor- und Nachteile beider Methoden?
Packen Sie es in die .war-Datei und stellen Sie es auf Tomcat / Jetty bereit?
Tun Sie dies nicht, wenn es überhaupt möglich ist. Grund : Mit embedded tomcat (oder einem anderen Server) ist es viel einfacher, eine Micro-Services-Architektur zu erstellen.
Wie Josh Long einmal in einem seiner Vorträge im Frühjahr sagte IO “make Jar, not War”
Wenn Sie andererseits eine vorhandene Infrastruktur mit Servlet-Containern haben und bereits mehrere application.wars in diesen Servlet-Containern ausgeführt werden, müssen Sie lediglich Ihre Anwendung als WAR-Datei und Hand packen Es geht um ein Release-Team (oder vielmehr, Sie sind gezwungen, einfach die vorhandene Infrastruktur wiederzuverwenden), dann ist es eine andere Geschichte ... Aber die Techworld bewegt sich bereits weg von dieser Praxis.
Im Sinne von Microservices möchte ich Sie im Sinne von Springboots dazu ermutigen, einen eingebetteten Server zu verwenden und eine ausführbare JAR-Datei zu erstellen, anstatt die herkömmliche Bereitstellung zu verwenden.
Wenn Sie Ihre Anwendung docken, haben Sie zwei Möglichkeiten, Ihren Tomcat in Ihr Artefakt zu packen (Docker-Image, nicht das Jar, es ist nur ein Zwischenprodukt).
ODER
Trotzdem würde ich jeden Tag mit der ersten Option gehen, weil das den Entwicklungsprozess viel einfacher macht (und das heißt, ein Onboarding eines neuen Entwicklers wird so einfach wie ein Kinderspiel).
Wie auf der Produktseite beschrieben, enthalten diese Jars den Servlet-Container und starten ihn direkt.
Betten Sie Tomcat, Jetty oder Undertow direkt ein (Sie müssen keine WAR-Dateien bereitstellen)
Wenn Sie beabsichtigen, Ihre Anwendung auf einem Host zu betreiben, mit nichts anderem daneben (docker?), könnte das eine gute Möglichkeit sein. Wenn Ihr Host andere Apps enthält, wäre der Ansatz zum Bereitstellen von Kriegen interessanter Servlet-Container nur einmal auf Ihrem Host.
Tags und Links java jetty tomcat spring-boot