【问题标题】:Tomcat 8.5/9 context reload on web app symlink changeWeb 应用程序符号链接更改时的 Tomcat 8.5/9 上下文重新加载
【发布时间】:2021-12-30 22:37:38
【问题描述】:

我有 tomcat 8.5.72,其中所有应用程序都是 webapps 中的符号链接

/usr/local/tomcat/webapps/app1 -> /data/app1.0.0.1

启动时一切正常。我已经配置了 autoDeploy 和 allowLinking。

现在我想将符号链接更改为指向 /data/app1.0.0.2 并删除原来的 /data/app1.0.0.1

在这里我得到一个错误

严重 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.core.StandardContext.reload 异常开始 带有名称的上下文 [/app1]

引起:java.lang.IllegalArgumentException:主要资源集 指定的 [/data/app1.0.0.1] 无效

在 tomcat 8.0.x 中运行良好。在 8.5.x 上,我需要重新启动 tomcat。我猜也是 9 号

也许某些安全考虑会导致更改...但是有没有办法恢复旧的?又名“重新读取/重新解析”符号链接?

【问题讨论】:

    标签: tomcat9 tomcat8.5


    【解决方案1】:

    如果链接被删除和创建,显然它工作正常。如果使用“ln -snf”更改链接目标,则会出现问题 - 我的情况是,部署由 puppet 管理。

    现在所有的链接都使用 getCanonicalPath 或 getAbsolutePath 解析。所以更改它检测到,但仍然为旧的 docBase 指向旧的绝对目录。

    我最终在 ContextConfig 的 fixDocBase 方法中使用 getPath 而不是 getAbsolutePath/getCanonicalPath 进行基于目录的部署的补丁重新编译

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 2017-07-08
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 2012-01-08
      • 2014-07-09
      相关资源
      最近更新 更多