gpt4 book ai didi

java - 在不同的 servlet 之间共享资源

转载 作者:行者123 更新时间:2023-12-01 13:17:22 27 4
gpt4 key购买 nike

假设我有一个特定的资源 S(例如,一个使用文件系统的奇怪数据库),并且我有一个特定的 Java 类 R 来管理该资源(它提供高级 API 并管理诸如使用中所需的并发性之类的东西) S)。现在我有这样的限制:如果 R 的一个实例管理 S,那么 R 的其他实例就不能同时访问 S。

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

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

ps。在我的例子中,R 是一个嵌入式数据库,如 Neo4j。

最佳答案

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

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

关于java - 在不同的 servlet 之间共享资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360119/

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