Arn*_*lle 5 tomcat tomcat8 spring-boot
我制作了一个想要在外部 tomcat 8 中运行的 Spring-Boot 应用程序。
在 Spring-Boot 应用程序中,可以使用server.context-pathin属性选择上下文路径,application.properties但由于我使用的是外部 tomcat 8,因此未使用此属性。
因此,我查看了tomcat-8 文档,其中指出:
如果要使用与基本文件名无关的上下文路径部署 WAR 文件或目录,则必须使用以下选项之一来防止双重部署:
- 禁用 autoDeploy 和 deployOnStartup 并在 server.xml 中定义所有上下文
- 在主机的 appBase 之外找到 WAR 和/或目录,并使用带有 docBase 属性的 context.xml 文件来定义它。
由于我不想污染server.xml,我选择了第二个选项。因此,我找到了战争,/home/myuser/myapp/application-1.0.0.war并application-1.0.0.xml在conf/Catalina/localhost. 该文件仅包含这两行:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myapp" docBase="/home/myuser/myapp"/>
Run Code Online (Sandbox Code Playgroud)
我可以在日志中看到 tomcat8 成功启动,该应用程序似乎部署在 tomcat 管理器中,但是:
/application-1.0.0而不是/myapp。application-1.0.0出现在work目录中但保持为空。注意:我知道战争是正确的,因为如果我将它放在webapp目录中(尽管使用默认上下文路径)它可以工作。
注意:如果我重命名application-1.0.0.xml为foo.xml,tomcat 管理器会显示应用程序部署在上下文路径下/foo(但它仍然从未启动)。
有任何想法吗?
找到了答案:
path上下文文件的属性确实被忽略了:仅当在 server.xml 中静态定义 Context 时才必须使用此属性。在所有其他情况下,将从 .xml 上下文文件或 docBase 使用的文件名推断出路径。
docBase属性,我误解了以下句子:找到主机 appBase 外部的 WAR 和/或目录,并使用带有 docBase 属性的 context.xml 文件来定义它。
实际上,在 中docBase,我放置了包含战争的目录的路径,而不是战争本身的路径。
| 归档时间: |
|
| 查看次数: |
2641 次 |
| 最近记录: |