java - 有没有一种方法可以在不使用 Servlet 功能的情况下获取 Web 应用程序的名称?

标签 java servlets

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

非常感谢!

最佳答案

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

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

关于java - 有没有一种方法可以在不使用 Servlet 功能的情况下获取 Web 应用程序的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26134086/

相关文章:

java - 文件中最后读取的行打印为空

java - 允许使用代码时编辑和清理 servlet 中的用户输入吗?

java - Git 不在 eclipse 中提交文件

java - Android 谷歌导航应用程序 : can I edit the source code?

java - 大量(浮点)值的最佳数据结构

html - 如何从 HTML 表单调用 servlet 类

java - servlet 中 sendRedirect 的澄清

tomcat - 跨域脚本启用

java - Eclipse - 无法在本地主机上发布 Tomcat8.0 服务器的服务器配置

java - 计算语句之间的距离