Java 跨整个tomcat JVM的单个MongoClient实例(Singleton)

Java 跨整个tomcat JVM的单个MongoClient实例(Singleton),java,mongodb,tomcat,singleton,Java,Mongodb,Tomcat,Singleton,我试图在整个tomcat JVM环境中创建一个MongoClient实例。多个webapp将使用同一数据库的同一实例,我想对其进行设置,以便每个webapp都使用同一实例。我希望它成为整个JVM中的单个实例而不是每个webapp的原因是多个webapp将使用它 一次会有4台tomcat机器启动并运行,所以我的想法是每台机器都应该有一个MongoClient实例。我主要担心的是线程/连接创建的开销 将有2个webapps将使用它,在这些webapps中,3个不同的类1中的2和另一个中的1将需要访问

我试图在整个tomcat JVM环境中创建一个MongoClient实例。多个webapp将使用同一数据库的同一实例,我想对其进行设置,以便每个webapp都使用同一实例。我希望它成为整个JVM中的单个实例而不是每个webapp的原因是多个webapp将使用它

一次会有4台tomcat机器启动并运行,所以我的想法是每台机器都应该有一个MongoClient实例。我主要担心的是线程/连接创建的开销

将有2个webapps将使用它,在这些webapps中,3个不同的类1中的2和另一个中的1将需要访问该实例

我已经看过了,只是需要帮助实现

在我的例子中,每个类的代码都需要这样

Kerne>事件类:

MongoDBManager mdb = new MongoDBManager();
内核>会话类:

MongoDBManager mdb = new MongoDBManager();
SiteManager>SiteAction类:

SiteDeletionManager sdm = new SiteDeletionManager();
MongoDBManager类处理所有连接,SiteDeletionManager只是在其构造函数中创建一个新实例。为了进一步简化,我可以创建另一个类来处理内核中的事件/会话,并将MongoDBManager作为一个类来单独处理连接


做这件事的最佳方法是什么&有没有人对此有好的文档?

为什么不在每个应用程序中创建一个MongoClient实例?不同的webapp有不同的类加载器,我不认为你可以轻松地在它们之间共享一个实例。这就是我目前正在做的。内核有两个,一个用于事件,一个用于会话,然后站点管理器有一个。我只是在想,分享一个例子可能会更好。