Triển khai ứng dụng Spring Boot trên Tomcat Server

1- Mục tiêu của bài viết

Trong bài viết này tôi sẽ hướng dẫn bạn triển khai một ứng dụng Spring Boot trên Tomcat Server. Một trong các đặc điểm của Tomcat là gọn nhẹ, dung lượng của Tomcat chỉ vào khoảng 10MB, và là một Java Web Server mã nguồn mở.
Đảm bảo rằng bạn đã cài đặt thành công Tomcat, nếu không bạn có thể tham khảo cách cài đặt Tomcat theo bài viết dưới đây:
Trong thực tế, ứng dụng Spring Boot có thể được đóng gói thành một tập tin JAR có thể thực thi (Executable JAR file). Với tập tin này bạn có thể chạy ứng dụng một cách trực tiếp mà không cần thiết phải triển khai trên bất kỳ một Web Server nào. Executable JAR file có thể không tương thích với tất cả các Web Server, vì vậy muốn triển khai trên một Web Server nào đó bạn cần đóng gói ứng dụng Spring Boot thành tập tin WAR.

2- Sửa đổi code

Ở đây tôi có một dự án Spring Boot, được phát triển bằng Eclipse IDE. Khi tạo dự án Spring Boot bạn có 2 lựa chọn để đóng gói dự án này là WAR hoặc JAR.
Khi bạn tạo dự án Spring Boot với tùy chọn "Packaging = War", Eclipse sẽ tạo ra cho bạn 2 lớp là "AbcApplication & ServletInitializer". Các tập tin WAR phù hợp để triển khai (deploy) trên các Web Server.
Trong khi đó nếu bạn tạo dự án Spring Boot với tùy chọn "Packaging = Jar", sẽ chỉ có một lớp AbcApplication được tạo ra. Ứng dụng Spring Boot khi được đóng gói thành tập tin JAR, nó có thể thực thi được (Executabe) một cách độc lập mà không cần triển khai trên bất kỳ môt Web Server nào. Nhưng tập tin JAR không phù hợp để triển khai trên các Web Server.

WAR File.

Nếu bạn có sẵn một dự án Spring Boot, bạn cần phải sửa đổi phương thức đóng gói (Packaging) thành WAR:
Trên Eclipse mở tập tin pom.xml, và thay đổi phương thức đóng gói (packaging) thành war.
Nếu dự án của bạn không có lớp ServletInitializer, hãy tạo ra nó.
ServletInitializer.java
package org.o7planning.example;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringBootTomcatApplication.class);
    }

}
Thêm đoạn cấu hình sau vào pom.xml:
** pom.xml **
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
Nếu có nhiều hơn 1 lớp Application trong dự án của bạn, hãy nói với Spring Boot lớp nào sẽ được sử dụng cho ứng dụng của bạn.
** pom.xml **
<properties>
        <start-class>org.o7planning.example.OtherSpringBootWebApplication</start-class>
</properties>

3- Install Spring Boot

Bước tiếp theo bạn cần sử dụng Maven để tạo ra tập tin WAR. Phải đảm bảo rằng Eclipse của bạn đang sử dụng JDK thay vì JRE, nếu không sẽ có lỗi xẩy ra trong quá trình này.
Nhấn phải chuột vào Project và chọn:
  • Run As/Maven Install

Lúc này bạn sẽ có một tập tin WAR nằm trong thư mục target của project, bạn có thể sử dụng tập tin này để triển khai trên Tomcat Server.
Xem thêm: