How can we exclude embedded Tomcat server from Spring Boot application so that we can run that jar on JBoss Server?
Asked
Active
Viewed 5.1k times
14
-
2You don't need to exclude it it will just run on the server AND be executable. – M. Deinum Dec 15 '17 at 07:23
-
1Okay, that means even if we run jar on production server, in our case we are using Jboss on prod,will automatically deploy on jboss instead of Tomcat? – Deepesh Rathore Dec 15 '17 at 07:26
-
1I was assuming a `war` file and not a `jar` file. You should at least make the dependencies scoped `provided` so that they are moved to a different directory. That directory is used by Spring Boot but not when deploying the file. – M. Deinum Dec 15 '17 at 07:27
-
Incase of jar file what it gonna do, will it deploy on embedded Tomcat or ll it deploy on jboss. – Deepesh Rathore Dec 15 '17 at 07:28
6 Answers
18
You can exclude in pom file:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>tomcat-embed-el</artifactId>
<groupId>org.apache.tomcat.embed</groupId>
</exclusion>
<exclusion>
<artifactId>tomcat-embed-core</artifactId>
<groupId>org.apache.tomcat.embed</groupId>
</exclusion>
<exclusion>
<artifactId>tomcat-embed-websocket</artifactId>
<groupId>org.apache.tomcat.embed</groupId>
</exclusion>
</exclusions>
</dependency>
You can follow this link with screenshots
-
When i run my application with above suggestion, it gives me error "Unregistering JMX-exposed beans on shutdown" – Tatkal Apr 11 '18 at 09:27
9
you can modify your POM.xml file as follows:
<!-- Removing the dependency for the embedded tomcat -->
<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>

aditya gupta
- 403
- 2
- 10
2
Another way is to mark the tomcat dependency's scope
as provided in your pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<scope>provided</scope>
</dependency>

jumping_monkey
- 5,941
- 2
- 43
- 58
1
Add the <exclusions>
tag in dependency with <artificatId>
as 'spring-boot-starter-web'
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
Your final dependency should look like:
<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>

David Buck
- 3,752
- 35
- 31
- 35

P. S. Bhandari
- 21
- 3
1
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludeGroupIds>org.apache.tomcat.embed</excludeGroupIds>
</configuration>
</plugin>
You can review this article. Dependency Exclusion

Murat Kara
- 791
- 4
- 15

Sergei K
- 51
- 3
0
Better to mention
scope as provided in pom.xml file
to exclude embedded tomcat server in spring boot maven based application.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

Gautam Kumar
- 31
- 7