我创建了一个Spring-Boot应用程序,想在外部Tomcat 8中运行它。
在Spring-Boot应用程序中,可以使用属性
因此,我查看了tomcat-8文档,其中说明:
如果您要使用与基本文件名无关的上下文路径部署WAR文件或目录,则必须使用以下选项之一以防止双重部署:
我在日志中看到Tomcat8成功启动,应用程序似乎已部署在Tomcat管理器中,但是:
有什么想法吗?
在Spring-Boot应用程序中,可以使用属性
server.context-path
选择上下文路径,但由于我正在使用外部Tomcat 8,因此不使用此属性。因此,我查看了tomcat-8文档,其中说明:
如果您要使用与基本文件名无关的上下文路径部署WAR文件或目录,则必须使用以下选项之一以防止双重部署:
- 禁用autoDeploy和deployOnStartup,并在server.xml中定义所有上下文
- 将WAR和/或目录定位在主机的appBase之外,并使用具有docBase属性的context.xml文件来定义它。
server.xml
,所以我选择了第二个选项。因此,我将war文件放在/home/myuser/myapp/application-1.0.0.war
中,并在conf/Catalina/localhost
下放置了一个名为application-1.0.0.xml
的上下文文件。该文件仅包含以下两行:<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myapp" docBase="/home/myuser/myapp"/>
我在日志中看到Tomcat8成功启动,应用程序似乎已部署在Tomcat管理器中,但是:
- 路径为
/application-1.0.0
而不是/myapp
。 - 此外,在
work
目录中出现了一个名为application-1.0.0
的目录,但保持为空。 - 日志没有显示任何与Spring相关的日志,就好像从未初始化过应用程序一样。
webapp
目录中(默认上下文路径),它可以正常工作。
注意:如果我将application-1.0.0.xml
重命名为foo.xml
,则Tomcat管理器会显示该应用程序已部署在上下文路径/foo
下(但仍未启动)。有什么想法吗?