Skip to content

Deploy WAR to Tomcat

Deploy war ke tomcat server

Untuk mendeploy ke tomcat server kita harus membuat packge dalam bentuk WAR. Hal yg harus dilakukan adalah

Ubah build package kedalam bentuk war dengan memberikan nilai <packaging>war</packaging> pada pom.xml dan memasukan depedency spring-boot-starter-tomcat pada pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--Another value here -->
    <packaging>war</packaging>
<!--Another value here -->

    <depedencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </depedencies>
</project>

Setelah itu pada main application kita perlu menurunkan class SpringBootServletInitializer dan meng-override function confgure

package com.farras.lsb.ch2;

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

@SpringBootApplication
    public class MainApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MainApplication.class);
    }

}

Selanjutkan jalankan command mvn clean package dan taruh war tersebut kedalam webapps folder pada lokasi tomcat.

Error 404

Saya menghabiskan waktuhampir 4 jam untuk mengetahui kenapa file war hasil dari spring boot tidak dapat terbaca ketika kita mengakses alamat URL dari rest seperti;

@RestController
class MyRest{

    @GetMapping("/thisone")
    public String sapa(){
        return "Hai";
    }
}

Solusinya adalah kita perlu menambahkan anotasi @RequestMapping pada rest controller

@RestController
@RequestMapping("api")
class MyRest{
    // ...
}
Dengan demikian kita dapat mengakses endpoint pada url [host_name]/api/thisone. Sebagai trace alamat URL yg tersedia kita dapat melihatnya saat kita mendeploy pada tomcat dengan cara menambahkan nilai berikut pada application.properties

logging.level.org.springframework.web.servlet.mvc.method.annotation: TRACE