【问题标题】:Change of context path of stopped applications on Tomcat 8在 Tomcat 8 上更改已停止应用程序的上下文路径
【发布时间】:2016-10-18 21:48:23
【问题描述】:

我正在开发一个 Tomcat 应用程序。我刚刚使用迁移指南从 Tomcat 7 更新到 Tomcat 8。 在我这样做之后,我意识到部署在服务器上的应用程序的上下文路径现在表现不同了。

我在 jsp 中请求上下文路径。使用:

部署在 ROOT 目录中
application.getContext("app").getContextPath()

结果是应用的上下文路径:/app

如果应用程序正在运行或停止,上下文路径始终相同。

升级到 Tomcat 8.0.33 后,行为有所不同。 当应用程序停止时,我得到的上下文路径是一个空路径(导致指向 ROOT)。 runnnig 应用的上下文路径还是一样的:/app

我研究了迁移指南和更改日志,但没有发现任何解释不同行为的更改。 我也经常用谷歌搜索,但不知道是什么解释了这种行为。

谁能帮我找出问题所在?

【问题讨论】:

    标签: java jsp tomcat8


    【解决方案1】:

    我想我没有足够清楚地解释我在做什么。我不想要应用程序的当前上下文路径。

    在 Tomcat 上部署了不同数量的应用程序(假设名称为 /app1、/app2、...、/app10)。在 jsp 内部,部署在 ROOT 中,我想找出哪些应用程序实际部署在服务器上。我通过询问其他应用程序的 ServletContext 来做到这一点:

    application.getContext( "/app1);
    application.getContext( "/app2);
    ...
    

    当我随后询问应用程序的上下文路径时,它要么为空(应用程序未部署),要么我得到已部署应用程序(启动或停止)的实际路径(例如 /app1):

    application.getContext("/appX").getContextPath()
    

    这就是我创建已部署应用程序列表的方式。 但是现在在 Tomcat 8 上,我得到一个空的上下文路径,不仅适用于未部署的应用程序,而且适用于已部署但已停止的应用程序。这是与 Tomcat 7 上不同的行为。

    我希望我现在可以更清楚地说明我的问题。

    【讨论】:

      【解决方案2】:

      很遗憾,我无法找出问题所在。相反,我重写了我的代码以使用 tomcat 管理器端点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-24
        • 2015-08-04
        • 2013-05-03
        • 2011-01-05
        • 1970-01-01
        • 2013-07-16
        • 2013-02-01
        • 2013-08-25
        相关资源
        最近更新 更多