Nasaďte Spring Boot WAR na server Tomcat

1. Úvod

Spring Boot je konvencia nad konfiguračným rámcom, ktorá nám umožňuje nastaviť výrobné nastavenie jarného projektu a Tomcat je jedným z najpopulárnejších kontajnerov Java Servlet Containers.

V predvolenom nastavení vytvára Spring Boot samostatnú aplikáciu Java, ktorá môže bežať ako desktopová aplikácia alebo môže byť nakonfigurovaná ako systémová služba, existujú však prostredia, kde nemôžeme nainštalovať novú službu alebo spustiť aplikáciu manuálne.

Oproti samostatným aplikáciám je Tomcat nainštalovaný ako služba, ktorá dokáže spravovať viac aplikácií v rámci toho istého procesu aplikácie, čím sa vyhnete nutnosti špecifického nastavenia pre každú aplikáciu.

V tejto príručke vytvoríme jednoduchú aplikáciu Spring Boot a prispôsobíme ju tak, aby fungovala v rámci Tomcat.

2. Nastavenie aplikácie Spring Boot

Chystáme sa nastaviť jednoduchú webovú aplikáciu Spring Boot pomocou jednej z dostupných štartovacích šablón:

 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE org.springframework.boot spring-boot-starter-web 

Nie sú potrebné ďalšie konfigurácie nadštandard @SpringBootApplication pretože Spring Boot sa stará o predvolené nastavenie.

Pridali sme jednoduchý REST EndPoint, ktorý nám vráti platný obsah:

@RestController verejná trieda TomcatController {@GetMapping ("/ ahoj") verejná zbierka sayHello () {návrat IntStream.range (0, 10) .mapToObj (i -> "Hello number" + i) .collect (Collectors.toList () ); }}

Teraz spustíme aplikáciu pomocou mvn spring-boot: spustiť a spustite prehliadač na // localhost: 8080 / ahoj skontrolovať výsledky.

3. Vytvorenie Spring Boot WAR

Kontajnery servletov očakávajú, že aplikácie splnia niektoré zmluvy, ktoré sa majú nasadiť. Pre spoločnosť Tomcat je zmluvou Servlet API 3.0.

Aby naša aplikácia spĺňala túto zmluvu, musíme vykonať niekoľko malých úprav v zdrojovom kóde.

Najskôr musíme zabaliť aplikáciu WAR namiesto JAR. Z tohto dôvodu sa meníme pom.xml s nasledujúcim obsahom:

vojna

Teraz poďme upraviť finále VOJNA názov súboru, aby sa zabránilo zahrnutiu čísel verzií:

 $ {artifactId} ... 

Potom pridáme závislosť Tomcat:

 org.springframework.boot poskytnutý spring-boot-starter-tomcat 

Nakoniec inicializujeme kontext Servletu požadovaný Tomcatom implementáciou SpringBootServletInitializer rozhranie:

@SpringBootApplication verejná trieda SpringBootTomcatApplication rozširuje SpringBootServletInitializer {}

Aby sme vytvorili našu aplikáciu WAR nasaditeľnú na Tomcat, vykonávame balíček mvn clean. Potom sa náš súbor WAR vygeneruje o terč / spring-boot-tomcat.war (za predpokladu Maven artifactId je „spring-boot-tomcat“).

Mali by sme vziať do úvahy, že toto nové nastavenie robí z našej aplikácie Spring Boot samostatnú aplikáciu (ak chcete, aby fungovala znova v samostatnom režime, odstráňte za predpokladu rozsah zo závislosti na tomcat).

4. Nasadenie VOJNY do spoločnosti Tomcat

Ak chcete, aby bol náš súbor WAR nasadený a spustený v službe Tomcat, musíme vykonať nasledujúce kroky:

  1. Stiahnite si Apache Tomcat a rozbaľte ho do kocúr priečinok
  2. Skopírujte náš súbor WAR z terč / spring-boot-tomcat.war do tomcat / webapps / priečinok
  3. Z terminálu prejdite na kocúr / kôš priečinok a vykonať
    1. catalina.bat beh (vo Windows)
    2. catalina.sh beh (na systémoch založených na Unixe)
  4. Ísť do // localhost: 8080 / spring-boot-tomcat / ahoj

Toto bolo rýchle nastavenie Tomcat, kompletného sprievodcu nastavením nájdete v príručke Inštalácia Tomcat. Existujú aj ďalšie spôsoby nasadenia súboru WAR do služby Tomcat.

5. Záver

V tejto krátkej príručke sme vytvorili jednoduchú aplikáciu Spring Boot a premenili ju na platnú aplikáciu WAR nasaditeľnú na serveri Tomcat.

Celý zdrojový kód príkladov je ako vždy k dispozícii na serveri GitHub.