我在使用Tomcat应用程序。我刚刚使用迁移指南从Tomcat 7更新到Tomcat 8。 在我这样做之后,我意识到服务器上部署的应用程序的上下文路径现在表现不同。
我在jsp中请求上下文路径。使用以下命令部署在ROOT目录中:
application.getContext("app").getContextPath()
结果是应用程序的上下文路径: / app
如果应用程序正在运行或停止,则上下文路径始终相同。
升级到Tomcat 8.0.33后,行为会有所不同。 当应用程序停止时,我得到的上下文路径是一个空路径(导致指向ROOT)。 runnnig应用程序的上下文路径仍然相同: / app
我研究了迁移指南并更改了日志,但我没有发现任何可以解释不同行为的变化。 我也google了很多,并且不知道是什么解释了这种行为。
有人可以帮我找出问题所在吗?
答案 0 :(得分:0)
我想我不清楚解释我在做什么。我不想要应用程序的当前上下文路径。
在Tomcat上部署了不同数量的应用程序(名称为/ app1,/ app2,...,/ app10)。在部署在ROOT中的jsp内部,我希望找出实际部署在服务器上的应用程序。我这样做是通过询问其他应用程序的ServletContext:
application.getContext( "/app1);
application.getContext( "/app2);
...
当我询问应用程序的上下文路径时,它是空的(未部署应用程序)或者我获得已部署应用程序(已启动或已停止)的实际路径(例如/ app1):
application.getContext("/appX").getContextPath()
这就是我如何创建已部署应用程序的列表。 但是现在在Tomcat 8上,我得到的是一个空的上下文路径,不仅适用于未部署的应用程序,还适用于已部署但已停止的应用程序。这与Tomcat 7上的行为不同。
我希望我现在可以更明确地解决我的问题。
答案 1 :(得分:0)
不幸的是我无法找出问题所在。相反,我重写了我的代码以使用tomcat管理器端点。