Spring boot how to make project run on server in eclipse
If you want to deploy it to a container, instead of using the embedded container follow this section in the reference guide.
In short the steps are
- Use
war
packaging instead ofjar
packaging - Let your
Application
class extendsSpringBootServletInitializer
and implement theconfigure
method. - Mark the container dependencies (tomcat I guess) as
provided
So in a nutshell
- Change
<packaging>jar</packaging>
to<packaging>war</packaging>
-
Change your
Application
public class Application extends SpringBootServletInitializer { ... protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } }
-
Add tomcat dependency as
provided
.<dependency> <groupId>org.springframework.boot</groupId> <artifcatId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
For more elaborate information check the reference guide.
![Kamini](https://i.stack.imgur.com/NlaoI.jpg?s=256&g=1)
Kamini
I m Java Developer having experience in jsp, servlet, struts, hibernate, spring mvc, mybatis, jersy , RestFul webservices, jmeter, etc. Currently providing APIs to Front End developer(Android/Ios) and also working on Web applications. Worked on svn tool and currently using git. Having experience of DB and deployment of project using Ant and also using mvn package.
Updated on June 06, 2022Comments
-
Kamini about 2 years
I am new to Spring Boot, I have sample spring boot code in my Eclipse IDE.
Now to run the project. In project there is class "Application", I run that using Run As Java Application and then Its running on given port.
But I want it to run using Run on Server option of Eclipse, so whenever I try to run that on server it gives me 404.
Please give me any idea to resolve this issue.
Code:
@ComponentScan @Configuration @EnableAutoConfiguration public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { ApplicationContext ctx = SpringApplication.run(Application.class, args); System.out.println("Let's inspect the beans provided by Spring Boot:"); String[] beanNames = ctx.getBeanDefinitionNames(); Arrays.sort(beanNames); System.out.println(Arrays.toString(beanNames)); } }
application.properties
server.address=localhost server.port=8080 server.contextPath=/spring-security-cas app.service.security=http://localhost:8080/j_spring_cas_security_check app.service.home=http://localhost:8080/
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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.esco.demo</groupId> <artifactId>spring-security-cas</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>demo-spring-security-cas</name> <description>Demo project for Spring Boot</description> <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>1.2.1.RELEASE</version> <relativePath /> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-cas</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-taglibs</artifactId> </dependency> <!-- Usefull for accessing to jsp --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- END Usefull for accessing to jsp --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.14.8</version> </dependency> </dependencies> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <start-class>org.esco.demo.ssc.Application</start-class> <java.version>1.7</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Note: Project running when run Application as Run as Java Application, problem is I want it to run using Run on Server option.