当前位置: 首页 > 知识库问答 >
问题:

我必须如何/在哪里/何时呼叫MongoClient关闭?

东方镜
2023-03-14

我正在用java开发一个web应用程序,我对关闭MongoClient有疑问。

看到这http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started-with-java-driver

MongoClient实例实际上代表到数据库的连接池;即使有多个线程,您也只需要一个MongoClient类实例。有关更多信息,请参见并发文档页面。MongoClient类被设计为线程安全的,并在线程之间共享。通常,只为给定的数据库集群创建一个实例,并在应用程序中使用它。如果出于某种原因决定创建多个MongoClient实例,请注意:所有资源使用限制(最大连接数等)都适用于每个MongoClient实例以处置实例,请确保调用MongoClient。关闭()以清理资源

这http://docs.mongodb.org/ecosystem/drivers/java-concurrency/#java-driver-concurrency

Java MongoDB驱动程序是线程安全的。例如,如果您在web服务环境中使用,您应该创建一个MongoClient实例,并且可以在每个请求中使用它。MongoClient对象维护到数据库的内部连接池(默认最大池大小为100)。对于DB的每个请求(查找、插入等),Java线程都将从池中获取连接,执行操作,然后释放连接。这意味着每次使用的连接(插座)可能不同。

看来我必须有一个MongoClient的唯一实例。我的疑问是:我必须如何/在哪里/何时致电MongoClient close?

谢啦

共有1个答案

姚凯歌
2023-03-14

API文件说:

关闭基础连接器,从而关闭所有打开的连接。一旦调用,此Mongo实例将无法再使用

因此,我假设,只有在不想再次打开MongoDB连接时(在此运行时),才关闭它。换句话说,只有在使用该客户端实例的应用程序的生命周期结束时。

 类似资料:
  • 在模板中,为什么要在从属名称上放置和? 从属名称到底是什么? 我有以下代码: 我遇到的问题是行。我相当肯定是一个从属名称,VC++完全正确地扼杀了它。 我还知道我应该可以在某个地方添加来告诉编译器inUnion>是一个模板ID。但具体在哪里?然后它是否应该假设inUnion是一个类模板,即命名的是一个类型而不是一个函数?

  • 问题内容: 假设您正在使用路线: 并且在您的html中,当您单击按钮时,您想导航到“关于”页面。一种方法是 …但是ng-click在这里似乎也很有用。 这个假设正确吗?使用ng-click代替锚点? 如果是这样,那将如何工作?IE浏览器: 问题答案: 路由监视服务并响应URL的更改(通常通过哈希值)。要“激活”一条路线,只需更改URL。最简单的方法是使用锚标记。 没有什么更复杂的了。但是,如果必须

  • 问题内容: 有时,当我重写方法时,在第一次调用时会出现异常,如下所示: 为什么我们被迫打电话?父类有义务是有意义的,但是更重要的是,我们如何知道需要调用一个方法,而不是等待它崩溃? 问题答案: 为什么我们被迫调用super.method()? 组成Android SDK的类非常复杂。例如,活动和片段都必须执行许多操作才能正常运行(即管理生命周期,优化内存使用,在屏幕上绘制布局等)。要求客户端调用基

  • 问题内容: 如果Java客户端在其他服务器上调用远程EJB,您如何获得客户端IP地址?请注意,从服务器获取它很重要,因为客户端可能位于NAT防火墙之后,在这种情况下,我们需要公共IP地址。 注意:尽管它最好是一种通用的解决方案,但是至少我可以使用一个从JBoss 4.2.2上的EJB2调用中检索IP地址的解决方案。 问题答案: JBoss社区Wiki上的这篇文章完全解决了您的问题。在JBoss 5

  • 问题内容: 方案:修改并保存对广告系列的不完整更改 关键是,最后一步中的“错误提示框”是一个ajax调用,它将根据操作成功而带来一个绿色或红色提示框。目前,我要做的是在“然后按保存…”之后,我将进行一次sleep(3),以使其有时间显示此气球。您浪费时间似乎不太明智,也因为在某些时候处理此调用可能花费更多或更少的时间。 你们如何让Behat测试等待Ajax完成,而不仅仅是让野兽入睡? 非常感谢您的

  • 问题内容: 在Eclipse中创建了一个新的标准Java 7项目,并成功地成功获取了like 的实例,如下所示: 在主要方法中,此方法运行良好,据我所知,该部分有效。但我不知道如何实际使用它。在SoapUI中,我通过以下请求调用此服务: 如何在Java中执行相同的请求?我的目标是我有一个很长的清单,我需要为每个清单运行一个这样的请求。在SoapUI中手动进行操作有点烦人,因此我想使用一个简单的Ja