我创建了一个Spring-Boot应用程序,我希望在外部tomcat 8中运行 .
在Spring-Boot应用程序中,可以使用 application.properties
中的属性 server.context-path
来选择上下文路径,但由于我使用的是外部tomcat 8,因此不使用此属性 .
因此,我看了一下tomcat-8 documentation,其中说明:
如果要使用与基本文件名无关的上下文路径部署WAR文件或目录,则必须使用以下选项之一来防止双重部署:禁用autoDeploy和deployOnStartup并在服务器中定义所有上下文.xml在Host的appBase之外找到WAR和/或目录,并使用带有docBase属性的context.xml文件来定义它 .
由于我不想污染 server.xml
,我选择了第二个选项 . 因此,我在 /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
. -
此外,目录
application-1.0.0
出现在work
目录中,但保持为空 . -
日志不显示任何与 spring 相关的日志,就好像应用程序从未初始化一样 .
Note :我知道战争是正确的,因为如果我把它放在 webapp
目录中(虽然使用默认的上下文路径)它是有效的 .
Note :如果我将 application-1.0.0.xml
重命名为 foo.xml
,则tomcat管理器会显示该应用程序已部署在context-path /foo
下(但它仍未启动) .
有任何想法吗?
1 回答
找到答案:
path
:docBase
属性,我误解了以下句子:实际上,在
docBase
中,我将路径放到包含war的目录而不是war本身的路径中 .