【问题标题】:How do I get the name of the WAR file?如何获取 WAR 文件的名称?
【发布时间】:2012-03-15 20:17:25
【问题描述】:

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

这是出于诊断目的。

【问题讨论】:

    标签: java jakarta-ee servlets


    【解决方案1】:

    ServletContext.getContextPath()

    这将返回应用程序的上下文路径(或根上下文的“”)。在一个 servlet 容器中,没有两个应用程序会为此具有相同的值。

    编辑:

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

    【讨论】:

      【解决方案2】:

      在小服务程序中

      String warName = new File(getServletContext().getRealPath("/")).getName();
      

      你可以用这个。

      【讨论】:

      • 在 JBoss AS7 上,在名为 fu.war 的战争中,计算结果为 fu.war-a714101a57c33ed9。在某些 servlet 容器中,这可能会很好地工作,但规范显然不需要这样做。
      • 当容器配置为在内存而不是磁盘中扩展 WAR 时,这将抛出 NullPointerException。
      • 不是吗?您如何了解 OP 的具体服务器配置?他没有在问题中说明任何内容。
      • @BalusC 你是对的,它会抛出一个“NullPointerException”,如果是这样,你知道怎么做吗?
      猜你喜欢
      • 2018-04-22
      • 1970-01-01
      • 2012-03-24
      • 2014-05-16
      • 2022-11-18
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2021-10-31
      相关资源
      最近更新 更多