【发布时间】:2011-06-27 16:57:56
【问题描述】:
我有一个 tomcat(带有 JSF)应用程序。我想知道当前应用的战争路径。
我试过下面的代码来知道tomcat在哪里
((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("")
但是,在我将antiResourceLocking="true" 添加到上下文定义后,前面的命令返回了一个临时目录。
我一直在调试,我在
中看到了((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext())
有一个名为 context 的变量,它有一个名为 docBase 的属性,其中包含我需要的信息。但是我无论如何都无法得到这个。
这样做的原因是:我正在做一个自动更新系统,所以我需要获取当前的战争以便对其应用一些补丁。因此我需要当前的战争文件路径。
【问题讨论】:
-
为什么需要知道未展开WAR的根位置?这种需求背后的功能需求是什么?可能会有更好的解决方案。
-
我正在做一个自动更新系统,所以我需要获取当前的战争以对其应用一些补丁。因此我需要当前的war文件路径。
-
所以我个人建议你在其他地方定义一条不同于战争内部的路径。动态修改内容可能会产生一些不需要的副作用,因为 servlet 规范不打算这样做。
-
我只需要战争的路径,所以我可以复制它,修改战争并使用tomcat管理器重新部署它。
标签: java jsf tomcat deployment