在tomcat中部署spring boot应用程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在tomcat中部署spring boot应用程序相关的知识,希望对你有一定的参考价值。
我正在尝试使用战争文件在tomcat 9中部署我的spring应用程序,我可以生成.war文件,但出现错误404。我的应用程序是SpringBootServletInitializer的扩展,并且覆盖了configure方法,我的pom.xml文件也具有依赖项“ spring-boot-starter-tomcat”。
日志中没有任何错误。但是,如果我将index.html放在我的webapps目录中,tomcat将加载它。我需要tomcat加载index.jsp,但它是在WEB-INF / views中生成的。
部署目录的树(-L 2):
.
├── META-INF
│ ├── MANIFEST.MF
│ ├── maven
│ └── war-tracker
├── org
│ └── springframework
└── WEB-INF
├── classes
├── lib
├── lib-provided
└── views
源结构
.
├── java
│ └── com
│ └── company
│ └── app
│ ├── controller
│ ├── Application.java
│ ├── model
│ ├── service
│ └── util
├── resources
│ └── application.properties
└── webapp
└── WEB-INF
└── views
├── secondary.jsp
└── index.jsp
我的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- ... -->
<packaging>war</packaging>
<!-- ... -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.netexlearning</groupId>
<artifactId>convalidator</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>convalidator</name>
<description>Spring Boot</description>
<properties>
<java.version>11</java.version>
<start-class>com.company.app.Application</start-class>
<servlet-api.version>3.1.0</servlet-api.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties:
path.file.service=uploaded
spring.servlet.multipart.max-file-size=2MB
spring.servlet.multipart.max-request-size=2MB
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
Aplication.java
@SpringBootApplication
@EnableConfigurationProperties(StorageProperties.class)
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
@Bean
CommandLineRunner init(StorageService storageService) {
return (args) -> {
storageService.deleteAll();
storageService.init();
};
}
}
如果需要更多信息,请告诉我。
我正在使用存储服务,它需要写入的权限,但是我不确定在哪里,然后我犯了一个错误:我在webapps的已部署文件夹中使用了chmod 664,Tomcat“运行”了我的项目,但总是响应404错误。 Spring从不执行任何操作。我删除了webapps中的文件夹,将属性path.file.service=uploaded
更改为path.file.service=/tmp/file
,然后再次生成了war文件。
现在正在工作。
以上是关于在tomcat中部署spring boot应用程序的主要内容,如果未能解决你的问题,请参考以下文章
在 Tomcat 中部署的 Spring Boot 提供 404 但可以独立运行
Spring Boot Tomcat部署不起作用Tomcat 7
如何在外部 tomcat 中部署 Spring-boot REST API