在 Web 应用程序中使用 MongoDB API

Using MongoDB API in a Web application

我需要在 Web 应用程序中重复使用 MongoClientDB 对象:

MongoClient mongoClient = new MongoClient();
DB db = mongoClient.getDB( "test" );

在访问我们应用程序的不同客户端之间缓存和重用这些对象是否安全?
谢谢

如果可以的话,您应该创建一次并通过 CDI/Guice 注入它。如果你做不到,你可以使用静态工厂方法 return 你的 MongoClient 的一个实例。 MongoClient维护一个连接池,不同线程之间使用是安全的。如果您为每个请求创建一个新的 MongoClient,不仅设置该池并打开一个新连接会影响性能,而且您可能会留下悬空连接,除非您正确关闭 MongoClient 在请求的末尾。

是的。 From Getting Started with Java Driver, "you will only need one instance of class MongoClient even with multiple threads".

附带说明一下,Mongo Java 驱动程序使用起来很麻烦。我所在的开发团队对 Jongo 非常满意,它是 Java 驱动程序的包装器,允许编写更像 shell 查询的查询。