Stellen Sie eine Spring Boot WAR auf einem Tomcat-Server bereit

Stellen Sie eine Spring Boot WAR auf einem Tomcat-Server bereit

1. Einführung

Spring Boot ist einconvention over configuration-Framework, mit dem wir ein produktionsfertiges Setup eines Spring-Projekts einrichten können, undTomcat ist einer der beliebtesten Java-Servlet-Container.

Standardmäßig erstellt Spring Boot eine eigenständige Java-Anwendung, die als Desktop-Anwendung ausgeführt oder als Systemdienst konfiguriert werden kann. In einigen Umgebungen können wir jedoch keinen neuen Dienst installieren oder die Anwendung nicht manuell ausführen.

Im Gegensatz zu eigenständigen Anwendungen wird Tomcat als Dienst installiert, der mehrere Anwendungen innerhalb desselben Anwendungsprozesses verwalten kann, ohne dass für jede Anwendung ein spezifisches Setup erforderlich ist.

In diesem Handbuch erstellen wir eine einfache Spring Boot-Anwendung und passen sie an die Arbeit in Tomcat an.

2. Einrichten einer Spring Boot-Anwendung

Wir werden eine einfache Spring Boot-Webanwendung mit einer der verfügbaren Starter-Vorlagen einrichten:


    org.springframework.boot
    spring-boot-starter-parent
    2.0.2.RELEASE
    


    
        org.springframework.boot
        spring-boot-starter-web
    

There’s no need for additional configurations über den Standard@SpringBootApplication hinaus, da Spring Boot sich um die Standardeinstellung kümmert.

Wir fügen einen einfachen REST-Endpunkt hinzu, um einige gültige Inhalte für uns zurückzugeben:

@RestController
public class TomcatController {

    @GetMapping("/hello")
    public Collection sayHello() {
        return IntStream.range(0, 10)
          .mapToObj(i -> "Hello number " + i)
          .collect(Collectors.toList());
    }
}

Führen Sie nun die Anwendung mitmvn spring-boot:run aus und starten Sie einen Browser beihttp://localhost:8080/hello, um die Ergebnisse zu überprüfen.

3. Erstellen eines Spring Boot WAR

Servlet-Container erwarten, dass die Anwendungen einige zu implementierende Verträge erfüllen. Für Tomcat ist der VertragServlet API 3.0.

Damit unsere Anwendung diesen Vertrag erfüllt, müssen wir einige kleine Änderungen im Quellcode vornehmen.

Zuerst müssen wir eine WAR-Anwendung anstelle einer JAR-Datei packen. Dazu ändern wirpom.xml mit folgendem Inhalt:

war

Ändern Sie nun den Dateinamen des endgültigenWAR, um zu vermeiden, dass Versionsnummern eingeschlossen werden:


    ${artifactId}
    ...

Dann fügen wir die Tomcat-Abhängigkeit hinzu:


   org.springframework.boot
   spring-boot-starter-tomcat
   provided

Schließlich initialisieren wir den von Tomcat benötigten Servlet-Kontext, indem wir dieSpringBootServletInitializer-Schnittstelle: implementieren

@SpringBootApplication
public class SpringBootTomcatApplication extends SpringBootServletInitializer {
}

Um unsere von Tomcat bereitstellbare WAR-Anwendung zu erstellen, führen wirthe mvn clean package. aus. Danach wird unsere WAR-Datei mittarget/spring-boot-tomcat.war generiert (vorausgesetzt, der MavenartifactId ist "Spring-Boot-Tomcat").

Wir sollten berücksichtigen, dass dieses neue Setup unsere Spring Boot-Anwendung zu einer nicht eigenständigen Anwendung macht (wenn Sie möchten, dass sie wieder im eigenständigen Modus funktioniert, entfernen Sie den Bereich vonprovidedaus der Tomcat-Abhängigkeit).

4. Bereitstellen der WAR für Tomcat

Damit unsere WAR-Datei in Tomcat bereitgestellt und ausgeführt werden kann, müssen Sie die folgenden Schritte ausführen:

  1. Download Apache Tomcat und entpacken Sie es in einentomcat-Ordner

  2. Kopieren Sie unsere WAR-Datei vontarget/spring-boot-tomcat.war in den Ordnertomcat/webapps/

  3. Navigieren Sie von einem Terminal zum Ordnertomcat/binund führen Sie ihn aus

    1. catalina.bat run (unter Windows)

    2. catalina.sh run (auf Unix-basierten Systemen)

  4. Gehen Sie zuhttp://localhost:8080/spring-boot-tomcat/hello

Dies war eine schnelle Tomcat-Einrichtung. Eine vollständige Installationsanleitung finden Sie in der Anleitung zuTomcat Installation. Es gibt auch zusätzliche Möglichkeiten fürdeploying a WAR file to Tomcat.

 5. Fazit

In dieser Kurzanleitung haben wir eine einfache Spring Boot-Anwendung erstellt und in eine gültige WAR-Anwendung umgewandelt, die auf einem Tomcat-Server implementiert werden kann.

Wie immer ist der vollständige Quellcode der Beispieleover on GitHub verfügbar.