首页 文章

在不同的servlet之间共享资源

提问于
浏览
0

假设我有一个特定的资源S(例如一个使用文件系统的奇怪数据库),并且我有一个管理该资源的某个Java类R(它提供高级api并管理诸如使用S所需的并发之类的东西) . 现在我有一个约束,即如果一个R的实例管理S,那么R的其他实例不能同时访问S.

现在,让我们假设我有一个需要通过R访问S的servlet V1 . 我想允许许多用户同时使用V1,所以由于容器会为每个用户分配一个新的V1线程,我想让R静态,在init()方法中初始化它,以便在线程之间共享它 . 这个可以吗?

案例二:现在我有M个不同的servlet V1,...,VM,每个都可以从许多用户访问 . 现在我希望所有这些servlet都可以对S进行rw访问 . 我必须通过R访问S并且我不能简单地为每个servlet使用R的实例,因为只有一个实例可以处理S.有没有办法在所有servlet的所有线程中共享R?

PS . 在我的例子中,R是像neo4j这样的嵌入式数据库 .

1 回答

  • 1

    您可以在R上创建一个静态初始化程序,以创建R的唯一实例并将其存储在某个静态字段中(可通过静态getter访问) .

    您还可以通过实现 ServletContextListener 来创建和初始化R的一个实例 . Web应用程序启动时会调用 contextInitialized 方法 .

相关问题