如何获取WAR文件的名称?

fin*_*elp 6 java servlets java-ee

类如何获取正在使用它的WAR文件的名称?

这是出于诊断目的.

Mik*_*zak 6

ServletContext.getContextPath()

这将返回应用程序的上下文路径(或""用于根上下文).在servlet容器中,没有两个应用程序具有相同的值.

编辑:

对于那些不知道上下文路径是什么的人:它是应用程序的URI前缀.在大多数情况下,除非您明确配置,否则它默认为war文件的名称.所以,如果你有foo.war,那么你将访问它http://localhost:8080/foo/,上面的函数将返回"/ foo".


Rah*_*kar 5

在servlet中

String warName = new File(getServletContext().getRealPath("/")).getName();
Run Code Online (Sandbox Code Playgroud)

你可以用这个

  • 当容器配置为在内存中而不是磁盘中扩展WAR时,这将引发`NullPointerException`。 (4认同)
  • 在JBoss AS7上,在名为`fu.war`的战争中,其评估结果为`fu.war-a714101a57c33ed9`。在某些servlet容器中,这可能很好用,但显然不是规范所必需的。 (3认同)
  • 不?您如何了解OP的特定服务器配置?他在问题中什么都没说。 (2认同)