如何获取在java中部署web应用的文件夹名称?

如何获取在java中部署web应用的文件夹名称?,java,tomcat,Java,Tomcat,在我们的生产环境中,我们将Tomcat配置为在webapps目录中有一个符号链接,指向服务器上其他位置部署的.war文件,如下所示: tomcat 7.0.53 |_webapps |_app1 (symlinks to /usr/local/myCompany/app1.war) |_app2 (symlinks to /usr/local/myCompany/app2.war) 等等 所有应用程序都是从相同的代码库生成的,在生成它时,我会指定它是app1还是app2。我的任务是在t

在我们的生产环境中,我们将Tomcat配置为在webapps目录中有一个符号链接,指向服务器上其他位置部署的.war文件,如下所示:

tomcat 7.0.53
|_webapps
  |_app1 (symlinks to /usr/local/myCompany/app1.war)
  |_app2 (symlinks to /usr/local/myCompany/app2.war)
等等

所有应用程序都是从相同的代码库生成的,在生成它时,我会指定它是app1还是app2。我的任务是在tomcat启动时确定它是app1还是app2,所以现在所有的符号链接都指向同一个文件

在StartupContextListener中,是否有任何方法可以通过编程方式告知哪个符号链接指向该文件?它应该为每个应用程序扩展一次war,不是吗

以下是每个应用程序的server.xml配置方式:

  <Host name="www.app1.com" autoDeploy="false" deployOnStartup="false">
     <Context path="" docBase="/usr/local/mpl/tomcat/webapps/app1" />
     <Alias>www.app1.com</Alias>
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.app1.com_access_log" suffix=".txt" pattern="common" resolveHosts="false"/>
  </Host>
如果我可以访问docBase属性或主机标记的name属性,那么就可以通过这种方式解决问题,但我不确定是否可以获得该信息

谢谢,
Rob不太可能。符号链接取消引用和间接寻址在操作系统级别处理。Tomcat知道它在加载war时遵循了一个符号链接,因为它知道文件的类型,但是当你的应用程序加载Tomcat时,它可能已经丢弃了这个信息。制作一个简单的webapp,转储系统属性的全部内容,你就会知道你需要处理哪些信息。请注意,这是您正在运行的tomcat版本的实现细节,没有提供稳定的api来访问该数据?如果app1.war和app2.war都指向同一个实际文件,那么您应该能够在运行时以编程方式检测上下文名称并推断您正在运行的部署。很遗憾,我们不能在此处使用getContextPath。