gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:54 24 4
gpt4 key购买 nike

我使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com