Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种不使用Servlet特性而获取web应用程序名称的方法?_Java_Servlets - Fatal编程技术网

Java 有没有一种不使用Servlet特性而获取web应用程序名称的方法?

Java 有没有一种不使用Servlet特性而获取web应用程序名称的方法?,java,servlets,Java,Servlets,我使用Tomcat作为应用服务器,并在其上运行4个web应用程序。由于web应用程序中的一些常见需求,我开发了一个库,它放在Tomcat的lib文件夹中,用于将实现共享给web应用程序。但是,我希望在库上实现一些资源管理功能,例如为每个web应用程序创建和管理单例资源(即,一个web应用程序获得一个单例资源)。我想这样做是为了管理一个ConcurrentHashMap,并在其中存储每个单例资源。但是,当web应用程序调用库以访问其资源时,我需要获取调用者所属的web应用程序的名称,以便将正确的资

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


非常感谢

IMHO,您描述的不是java单例模式,因为您希望每个web应用程序有一个对象。事实上,我认为每个
ServletContext
都需要一个这样的对象。我无法理解为什么您不想使用Servlet特性,因为正确的方法是在每个web应用程序(可以是同一个类)中使用ServletContextListener,创建您的单例资源(也可以是公共类),并将它们作为属性放在ServletContext中(每个web应用程序正好一个)

然后,ServletContext属性可以从任何servlet(
request.getSession().getServletContext().getAttribute(“属性名称”)
或jsp(
,然后
${attribute\u name}
)轻松使用