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

我应该保持数据库连接打开以处理每个请求吗?以及如何以正确的方式做到这一点

艾凯捷
2023-03-14
public class MongoUtils {
private static final String connectionString = "mongodb://localhost:27017";
private static final MongoClient client;

static {
    client = MongoClients.create(connectionString);
}

public static MongoClient getConnection(){
    return client;
}

}
2018-10-25 11:37:36 INFO  AnnotationMBeanExporter:433 - Registering beans for JMX exposure on startup
2018-10-25 11:37:36 INFO  Http11NioProtocol:180 - Starting ProtocolHandler ["http-nio-8808"]
2018-10-25 11:37:36 INFO  NioSelectorPool:180 - Using a shared selector for servlet write/read
2018-10-25 11:37:36 INFO  TomcatWebServer:206 - Tomcat started on port(s): 8808 (http) with context path '/api'
2018-10-25 11:37:36 INFO  Backend:59 - Started Backend in 3.251 seconds (JVM running for 6.935)
2018-10-25 11:37:56 INFO  [/api]:180 - Initializing Spring FrameworkServlet 'dispatcherServlet'
2018-10-25 11:37:56 INFO  DispatcherServlet:494 - FrameworkServlet 'dispatcherServlet': initialization started
2018-10-25 11:37:56 INFO  DispatcherServlet:509 - FrameworkServlet 'dispatcherServlet': initialization completed in 39 ms
2018-10-25 11:37:56 INFO  cluster:71 - Cluster created with settings {hosts=[10.184.153.232:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
2018-10-25 11:37:56 INFO  cluster:71 - Cluster description not yet available. Waiting for 30000 ms before timing out
2018-10-25 11:37:56 INFO  connection:71 - Opened connection [connectionId{localValue:1, serverValue:27}] to 10.184.153.232:27017
2018-10-25 11:37:56 INFO  cluster:71 - Monitor thread successfully connected to server with description ServerDescription{address=10.184.153.232:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 0, 3]}, minWireVersion=0, maxWireVersion=7, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=3393851}
2018-10-25 11:37:56 INFO  connection:71 - Opened connection [connectionId{localValue:2, serverValue:28}] to 10.184.153.232:27017

共有1个答案

廖绍辉
2023-03-14

直接引用com.mongodb.mongoclient的JavaDocs:

具有内部连接池的MongoDB客户端。对于大多数应用程序,您应该为整个JVM拥有一个MongoClient实例。

客户端本身具有内部连接池,并且是线程安全的。因此,您应该为应用程序使用一个MongoClient实例。这表明您已经按照建议使用了它。

 类似资料:
  • 问题内容: 我正在通过com端口连续接收数据并进行一些解码。解码完成后,我必须将结果存储在sql数据库中。我在想,因为解码是每秒完成数十次(在while循环中始终运行),并且如果明智的做法是打开和关闭与sql server的连接,则每秒需要将数据存储到数据库数十次。每个while循环或只是使其保持打开状态并继续将数据写入数据库。首先这可能吗?其次,如果连接保持打开状态,那么第三方应用程序或计算机可

  • 问题内容: 我正在使用JBoss AS 7.1作为服务器,并且我的DataSource配置有缓冲池。我对此很陌生,所以请原谅任何菜鸟错误…毕竟我是来这里学习的。 客户端登录时,它将获得与数据库的连接,我需要保持该连接(从池中)处于打开状态,直到用户注销或HttpSession过期为止。这是来自数据库管理员的绝对要求。谁说他需要 数据库会话变量。 我正在为此使用 servlet 。 我在尝试各种可能

  • 我遇到了这个问题:对于Vaadin7,我已经配置了我的持久性。xml,下面是代码 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd“version=“2.0” 当我创建一个新的JPA容器并将其绑定到一个表时,我会在MSSQL活动监视器上看到我的新连接,但如果会话超时或注销,我仍然会在SQL上看到连接。 如果我在应用程序中重新登录,

  • 我们在我的工作场所使用Redshift,上周我一直在处理一系列关于更改某个表的模式的请求,这已经成为一个非常乏味的过程(包括更新ETL作业和Redshift视图)每天。 该过程可以总结为: 在将原始数据加载到红移之前,更改生成原始数据的ETL作业 当然,在这个过程中会涉及到测试和其他耗时的步骤。 表架构的“自然”更改频率是多少?在不浪费太多时间或不必重新执行所有“机械”流程的情况下,处理此问题的最

  • 问题内容: 一般而言,我对RXJava相对较新(真的只是开始将其与RXJava2一起使用),而且我能找到的大多数文档都倾向于RXJava1。我现在通常可以在两者之间进行翻译,但是整个Reactive的内容是如此之大,以至于它是一个压倒性的API,具有很好的文档(当您可以找到它时)。我正在尝试简化我的代码,这是我想用婴儿的脚步做到的。我要解决的第一个问题是我在当前项目中做的很多工作: 您有一个请求,

  • 问题内容: 我有一个bukkit插件(minecraft),需要连接到数据库。 数据库连接应该一直保持打开状态,还是在需要时打开和关闭? 问题答案: 数据库连接仅在需要时才打开,并在完成所有必要的工作后关闭。代码示例: 在Java 7之前: try { con = … //retrieve the database connection //do your work… } catch (SQLEx