我正在从一个简单的 Spring 引导 (1.x( 项目创建一个战争文件,我想修改上下文路径。
为此,我有一个如下所示的 application.properties 文件:
server.contextPath=/newpath
项目结构如下:
.
src
main
...
resources
application.properties
绒球.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>com.test.api</groupId>
<artifactId>example</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Test project</name>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>1.5.9.RELEASE</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>example</finalName>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
当我执行 mvn 包时,我得到一个 WAR 文件,其中包含位于/WEB-INF/classes 中的 application.properties 文件,与我编写的内容相同。但是,在将战争部署到Tomcat时,我无法通过以下方式访问我的API:
本地主机:8080/新路径/示例/some_controller
我只能通过以下方式查询它:
本地主机:8080/例/some_controller
我错过了什么吗?
server.context-path
属性仅影响嵌入式容器。部署到外部容器时,上下文路径的确定方式不同。
对于 Tomcat,您可以将应用程序作为名为 newpath.war
的文件复制到webapps
目录中。然后它应该在localhost:8080/newpath/example/some_controller上可用。
请确保将 Spring 启动可执行 jar 项目转换为 war 文件,转换为 war 文件有三个步骤。请按照此网址中给出的步骤操作 -https://www.mkyong.com/spring-boot/spring-boot-deploy-war-file-to-tomcat/