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

MongoDB:IllegalStateException:Spring Boot应用程序中的池已关闭错误消息

慎旭尧
2023-03-14

我收到这条信息:

19-October-24 08:05:53:481信息线程-4 O.M.D.connection:71-关闭到MongoDB:27017的连接[ConnectionID{LocalValue:35,ServerValue:38}],因为池已关闭。

java.lang.IllegalStateException:状态应为:open at com.mongodb.assertions.assertions.istrue(assertions.java:70)

这就是我创建MongoClient的方式,简单明了:

@Bean
@Override
public MongoClient mongoClient() {
    return new MongoClient(host);
}

这个答案建议设置socketkeepalive(true),但据我所知,不推荐使用这个方法,因为它默认为true。

    null

我需要设置/调整一些弹簧引导参数吗?我是否需要以不同的方式构建MongoClient?

共有1个答案

娄弘
2023-03-14

此错误表示您的MongoDB连接由于某种原因关闭,您正在尝试使用此连接池。

如果您使用的是springs连接池,您可以在没有spring的情况下创建连接池,并且可以在关闭连接时管理连接。(如错误时重新连接)

如果您正在执行多线程操作,请更改MongoClientbeansScope并基于线程创建它。Mongoclient在后台创建一个连接池,并将已经池化的连接提供给新创建的客户机,因此基于线程的客户机不会在每次自动操作时创建连接。

如果要使用SocketKeepAlive功能,则需要提供如下选项:

MongoClientOptions options = MongoClientOptions.builder()
                .socketKeepAlive(false)
                .build();

MongoClient mongoClient = new MongoClient( "yourhost:mongoport" ,  options);
 类似资料:
  • 问题内容: 在类下运行以下代码时 我收到以下错误: 我也试过搬家 走出do-while循环但徒劳无功。 问题答案: 问题 问题是,按照javadoc的说明,您执行了该操作,将关闭流 并释放与之关联的所有系统资源 。 为了快速验证,请注释掉: 您可以随时随地回答,没有任何例外。 一个办法 一种解决方案是在所有读取终止后关闭缓冲区读取器:

  • 想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。 我目前正在用java编写一个程序,它接受一个人的名字和姓氏,并将其转换为大写首字母。当输入数字或根本没有输入时,程序也应该打印错误。这是我的代码: 我期望程序拒绝数值和无效值,例如不输入任何内容,但它不起作用。

  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我的主要活动: 我的清单: 我的下一个代码: 下一个: 对于堆栈跟踪排序: 我的xml文件显示第一页: 要显示第二个选项卡的我的xml文件: 最后我想告诉你,我已经坚持了三天了。请更正此代码。中的“TabListener”接口不可用。但忽略它,在几毫秒后运行我的应用程序,然后“很遗憾,你的应用程序停止工作

  • 我查了很多,到目前为止,我收集到的是,这是三星的问题,涉及到由于某种原因无法在三星上工作的HttpUrlConnection。那么我该如何着手解决这个问题呢。我不明白其他人说了些什么来解决这个问题。该应用程序在模拟器上运行良好,但在我准备测试的两款三星手机上都死机了。Samsong之一是一款S4活动Android 5.0.1 API 21 我使用相同的http调用来下载其他数据,效果很好。只是当我

  • 但结果显示相同。有人能帮忙吗? 提前感谢S.K Setia

  • 我写这个软件的一个项目作业,但我有麻烦与混合线程和tkinter。下面的部分基本上和预期的一样工作,但是当我关闭它(在Python shell中启动它之后)时,窗口显示一个错误:“Python停止工作”。 我怎样才能解决这个问题?是不是我现在使用的设计造成的?我应该改变它吗? 编辑1:当我删除在中声明,并且只使用引用问题已经解决,但是我需要有对GUI对象的引用,首先要构建GUI,还要从GUI对象获