【问题标题】:Is there a way to get the name of web application without using Servlet features?有没有办法在不使用 Servlet 功能的情况下获取 Web 应用程序的名称?
【发布时间】:2014-10-01 04:22:58
【问题描述】:

我使用 Tomcat 作为应用程序服务器,并在其上运行 4 个 Web 应用程序。由于 web 应用程序的一些共同需求,我开发了一个库,它放在 Tomcat 的lib 文件夹中,用于将实现共享给 web 应用程序。但是,我想在库上实现一些资源管理功能,例如为每个 Web 应用程序创建和管理单例资源(即一个 Web 应用程序获得一个单例资源)。我想这样做是管理一个ConcurrentHashMap 并将每个单例资源存储在其中。但是,当 Web 应用程序调用库以访问其资源时,我需要获取调用者所属的 Web 应用程序的名称,以便将正确的资源返回给调用者。有没有一种很好的方法来实现这样的事情(应用程序在调用库来获取资源时不需要传递参数或标识的方法是首选)?或者只是这样的想法是错误的,还有更好的解决方案?

非常感谢!

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    恕我直言,您所描述的不是 java 单例 模式,因为您希望每个 Web 应用程序都有一个对象。事实上,我认为每个ServletContext 都需要这些对象之一。我不明白您为什么不想使用 Servlet 功能,因为正确的方法是在创建 singleton 资源(也可以是通用类)并将它们作为属性放在 ServletContext 中(每个 Web 应用程序只有一个)。

    ServletContext 属性可以轻松地在任何 servlet 中使用(request.getSession().getServletContext().getAttribute("attribute_name") 或 jsp(<jsp:useBean id="attribute_name" scope="application" type="..."/> 然后${attribute_name}

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      相关资源
      最近更新 更多