If you want to deploy a spring boot application into a Java EE Application Server (Glassfish, Jboss Wildfly and etc) you have to make some changes to the source code and the build script. I will show you an example with maven, however you could easily apply the same changes to a Gradle build script as well.
An example of a spring boot application that we are going to deploy into an application server
1
2
3
4
5
6
7
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
If you want to deploy it to a Java EE Application Server you have to package the application into a war via <packaging>war</packaging>
with help of Apache Maven WAR Plugin and modify the source code accordingly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@SpringBootApplication
public class Application extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
configureApplication(new SpringApplicationBuilder()).run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return configureApplication(builder);
}
private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
You also have to mark a servlet container as being provided. The servlet container in the example is Tomcat.
1
2
3
4
5
6
7
8
9
<dependencies>
<!-- ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- ... -->
</dependencies>