Categories: BackendJava

Deploy Spring Boot di Tomcat dan Berbagai Application Server Lain

Sebenernya spring boot sudah di embedd applicatoin server tomcat (hanya berisi web container, tidak bisa untuk java EE). Sehingga tidak perlu menggunakan application server lagi. Namun kadang orang karena sudah bayar application server lain, misal weblogic. dan ada beberapa aplikasi lain yang jalan di weblogic. Ingin mendeploy aplikasi spring boot di weblogic.

Secara tertulis harusnya tidak ada yang perlu dilakukan. Karena tujuan standarisasi J2EE adalah WAR/EAR bisa portable antar webserver. Namun kadang kenyataannya tidak, karena ada beberapa yang butuh fungsi spesifik app server, ataupun configurasi spesifik.

Sumber : Jrebel https://www.jrebel.com/calculate-your-roi-with-jrebel

Sebenernya application server yang mahal mahal itu bisa dijalankan di local laptop kita dan kita bisa melakukan auto reloading, hot swap, debugging juga. Namun, berat 😀

Catatan : Kita hanya bisa di deploy di tomcat jika aplikasi kita hanya menggunakan web container seperti spring boot. Jika kita memakai spring dan API J2EE selain web container, maka kita tidak bisa menggunakan tomcat.

Strategi

Menggunakan profile untuk mengethaui aplikasi ini jalan di app server mana. Untuk konfigurasi bisa dinamis tergantung profile di setting di pom.xml. Dan untuk fungsi yang spesifik ke App Server, bisa di bikin interface dan implementasi di tomcat hanya dummy saja. Dependency injection tergantung profile.

Pom.xml

 <profiles>
  <profile>
   <id>tomcat</id>
   <build>
    <plugins>
     <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <configuration>
       <webXml>${basedir}/src/main/webapp/WEB-INF/web-tomcat.xml</webXml>
      </configuration>
     </plugin>
    </plugins>
   </build>
  </profile>
 </profiles>
 <dependencies>

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
    <exclusion>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
 </dependencies>

Application.properties

application.properties => default

application-tomcat.properties => jika menggunakna profile “tomcat”

Fungsi spesifik

@Component("weblogicAppServer")
@Profile("!tomcat")
public class WeblogicService implements AppServerSpecificFunctionInterface {
}
@Component("tomcatAppServer")
@Profile("tomcat")
public class TomcatService implements AppServerSpecificFunctionInterface {
}

Konfigurasi di intellij IDEA

Herbert Abdillah

Test

Recent Posts

Disk 1 tb sisa 100 gb

Berikut ini detail breakdown nya Docker

7 months ago

Langchain JsonOutputParser Invalid json output Error

Sometimes json output from llm like this : {"key": "value"}``` that langchain JsonOutputParser regex cant…

8 months ago

Tontonan Bagus

https://www.youtube.com/watch?v=ZAqIoDhornk (more…)

8 months ago

Ada Apa Didalam Sistem Operasi (Linux). Apa yang membedakan distribusi Linux seperti Ubuntu, Redhat, Alpine?

#include <stdio.h> int main() { FILE *f_ptr; char f_content[256]; char output[512]; f_ptr = fopen("/tmp/1337", "r");…

11 months ago

Convert OpenSSL 1 in Ruby Gem to OpenSSL 3

Version 3 have different interface Example: https://github.com/herbertabdillah/fabric-gateway-ruby/commit/c7377aaf2e62de1e2ac309965a09b5c7c72a2c7e (more…)

2 years ago

Catatan Belajar Ruby on Rails dari aliran Java dan Php

Telah di edit. Sumber Asli : https://twitter.com/nateberkopec/status/1250603032523370496/photo/1 Ruby on Rails merupakan framework web MVC menggunakan…

3 years ago