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

guest
0 Comments
Inline Feedbacks
View all comments