Terapkan Spring Boot WAR ke dalam Tomcat Server

1. Pengenalan

Spring Boot adalah konvensyen mengenai kerangka konfigurasi yang membolehkan kita membuat persediaan siap untuk projek Spring, dan Tomcat adalah salah satu Java Servlet Containers yang paling popular.

Secara lalai, Spring Boot membangun aplikasi Java mandiri yang dapat berjalan sebagai aplikasi desktop atau dikonfigurasikan sebagai layanan sistem, tetapi ada lingkungan di mana kita tidak dapat memasang layanan baru atau menjalankan aplikasi secara manual.

Berlawanan dengan aplikasi mandiri, Tomcat dipasang sebagai layanan yang dapat mengurus banyak aplikasi dalam proses aplikasi yang sama, menghindari perlunya penyediaan khusus untuk setiap aplikasi.

Dalam panduan ini, kami akan membuat aplikasi Spring Boot yang mudah dan menyesuaikannya agar berfungsi di dalam Tomcat.

2. Menyiapkan Aplikasi Spring Boot

Kami akan menyediakan aplikasi web Spring Boot sederhana menggunakan salah satu templat permulaan yang tersedia:

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

Tidak perlu konfigurasi tambahan melebihi @SpringBootApplication standard kerana Spring Boot mengurus persediaan lalai.

Kami menambah REST EndPoint ringkas untuk mengembalikan beberapa kandungan yang sah untuk kami:

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

Sekarang mari kita laksanakan aplikasi dengan mvn spring-boot: jalankan dan mulakan penyemak imbas di // localhost: 8080 / hello untuk memeriksa hasilnya.

3. Membuat WAR Spring Boot

Kontena servlet mengharapkan aplikasi memenuhi beberapa kontrak yang akan digunakan. Untuk Tomcat kontraknya adalah Servlet API 3.0.

Agar aplikasi kita memenuhi kontrak ini, kita harus melakukan beberapa pengubahsuaian kecil dalam kod sumber.

Pertama, kita perlu mengemas aplikasi WAR dan bukannya JAR. Untuk ini, kami menukar pom.xml dengan kandungan berikut:

war

Sekarang, mari kita ubah nama fail WAR akhir untuk mengelakkan memasukkan nombor versi:

 ${artifactId} ... 

Kemudian, kita akan menambahkan ketergantungan Tomcat:

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

Akhirnya, kami memulakan konteks Servlet yang diperlukan oleh Tomcat dengan melaksanakan antara muka SpringBootServletInitializer :

@SpringBootApplication public class SpringBootTomcatApplication extends SpringBootServletInitializer { }

Untuk membina aplikasi WAR Tomcat-deployable, kami melaksanakan pakej mvn clean. Selepas itu, fail WAR kami dihasilkan pada target / bunga-boot-tomcat.war (dengan andaian Maven artifactId adalah "bunga-boot-kucing jantan").

Kami harus mempertimbangkan bahawa persediaan baru ini menjadikan aplikasi Spring Boot kami sebagai aplikasi yang tidak berdiri sendiri (jika anda ingin membuatnya berfungsi dalam mod mandiri sekali lagi, hapus skop yang disediakan dari ketergantungan tomcat).

4. Menyebarkan PERANG ke Tomcat

Untuk menyebarkan dan menjalankan fail WAR kami di Tomcat, kita perlu menyelesaikan langkah-langkah berikut:

  1. Muat turun Apache Tomcat dan bungkusnya ke folder tomcat
  2. Salin fail WAR kami dari target / spring-boot-tomcat.war ke folder tomcat / webapps / folder
  3. Dari terminal arahkan ke folder tomcat / bin dan jalankan
    1. catalina.bat run (pada Windows)
    2. catalina.sh run (pada sistem berasaskan Unix)
  4. Pergi ke // localhost: 8080 / spring-boot-tomcat / hello

Ini adalah penyiapan Tomcat yang cepat, sila periksa panduan Pemasangan Tomcat untuk mendapatkan panduan persediaan lengkap. Terdapat juga cara tambahan untuk menyebarkan fail WAR ke Tomcat.

5. Kesimpulan

Dalam panduan ringkas ini, kami membuat aplikasi Spring Boot sederhana dan mengubahnya menjadi aplikasi WAR yang sah yang dapat digunakan pada pelayan Tomcat.

Seperti biasa, kod sumber penuh contoh terdapat di GitHub.