Mongo 连接泄漏与吗啡

2024-01-20

我有一个Servlet with static Mongo = new Mongo() and Morphia morphia = new Morphia()对象。每一次GET被调用时,我执行以下操作:

doGet(...){
...
datastore = morphia.createDatastore(mongo, dbName);
...
}

我不关闭datastore,因为没有 close 方法。每次我调用 servlet 时,mongo 中使用的连接数都会增加:

{ "current" : 113, "available" : 706, "totalCreated" : NumberLong(122) }
> db.serverStatus().connections { "current" : 115, "available" : 704, "totalCreated" : NumberLong(124) }
> db.serverStatus().connections { "current" : 116, "available" : 703, "totalCreated" : NumberLong(125) }
> db.serverStatus().connections { "current" : 121, "available" : 698, "totalCreated" : NumberLong(130) }
> db.serverStatus().connections { "current" : 122, "available" : 697, "totalCreated" : NumberLong(131) }
> db.serverStatus().connections { "current" : 128, "available" : 691, "totalCreated" : NumberLong(137) }

关闭与 mongo 和 morphia 的连接的正确方法是什么?连接真正泄漏的地方是什么?谢谢。


您可以创建一个singleton Datastore object

public enum MongoDBHelper { // the best way to implement singletons, due to the author of Effective Java  
INSTANCE;

private DB db;
private Datastore datastore;

private final String SERVER_URL = "...";
private final int SERVER_PORT = ...;
private final String USERNAME= "...";
private final String PASSWORD = "...";
private final String DATABASE_NAME = "...";

private MongoDBHelper() {

    try {

        MongoClient mongoClient = new MongoClient(SERVER_URL, SERVER_PORT);

        this.db = mongoClient.getDB(DATABASE_NAME);
        this.db.authenticate(USERNAME,PASSWORD.toCharArray());

        Morphia morphia = new Morphia();

        this.datastore = morphia.createDatastore(mongoClient, DATABASE_NAME);

        morphia.mapPackage("package");
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }

}

public DB getDB() {
    return this.db;
}

public Datastore getDatastore() {
    return this.datastore;
}
}

现在你可以重复使用相同的Datastore您的应用程序中的对象

 Datastore datastore = MongoDBHelper.INSTANCE.getDatastore()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongo 连接泄漏与吗啡 的相关文章

  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • Mongoose - 查询从多个集合中获取数据

    我想要获取猫鼬的查询在 Node js 应用程序中 如下所述输出 user js comment js 和 post js 是我使用的模型文件 user js var mongoose require mongoose var Schema
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • Rails 4 带有 fields_for 的嵌套属性不保存到数据库

    我想使用accepts nested attributes for 通过一种表单在两个不同的表 场地和停车场 上创建记录 我希望用户能够创建一个新场地 并通过复选框指定该场地可用的停车选项 当我提交表单时 将创建包含模型 场地 的记录 但嵌
  • javascript:动态下拉菜单值

    我想创建两个下拉表单 如果我在第一个菜单上选择一个项目 第二个菜单将显示相应的值 例如 如果我在第一个菜单上选择 水果 那么第二个菜单将显示 苹果 香蕉 等 它必须有值 以便我可以将其插入数据库 html如下
  • iPython:无法导入名为 sklearn 的模块

    我可以使用 python 解释器导入 sklearn 但是当我尝试在 iPython 笔记本中执行相同操作时 iPython 会抛出 ImportError 知道是什么导致了这个问题吗 我需要在 iPython 中使用一个模块 我不确定这是
  • Django限制查询

    我正在尝试运行 Django 查询 将返回的结果限制为 5 个项目 这很容易 但查询并不总是返回 5 个项目 在这种情况下 像这样的语句 我的代码 会失败 users User objects filter username istarts
  • 代码签名错误:SDK“iOS 11.0”中的产品类型“应用程序”需要代码签名

    我正在使用 GitLab CI 自动构建适用于 Android 和 iOS 的应用程序 我的 iOS 命令行构建不断失败并出现以下错误 Code Signing Error Code signing is required for prod
  • 将模型划分到目录中是一个坏主意吗?

    我的 Rails 应用程序中有 100 多个模型 为了便于组织 我将它们划分为文件夹 所有这些仍然位于主模型文件夹下 只是为了更轻松地在项目上导航并查看相关文件 这是一个坏主意吗 Rails 的方法是什么 不 这不是一个坏主意 很多人都这么
  • 未捕获的语法错误:参数列表后缺少 )

    未捕获的语法错误 参数列表后缺少
  • Xcode 机器人错误:提前意外退出,操作从未完成引导

    我有一个用 Swift 编写的项目 有一个主要目标和两个测试目标 一个用于使用quick https github com Quick Quick框架 它有 3KIF https github com kif framework KIF测试
  • android sax 不解析“dc:creator”?

    希望有人可以提供一些指导 我一直在使用带有多个提要的 android sax 解析器 现在 当我想解析包含以下内容的项目时
  • Postgresql DB 备份理想实践

    使用pg dump 进行PostgreSQL 逻辑备份的理想做法是什么 从备用 从属节点进行备份是否理想 如果复制延迟小于 200 毫秒 从备用 从属节点进行备份是否理想 是否需要更改任何特定配置 哪种备份方法是逻辑备份或物理备份的好方法
  • 将数据保存到 LocalStorage,然后使用 android Java 检索它

    我正在加载本地网页android应用程序使用WebView and my web page有一个按钮 比方说 btnA 当用户点击 btnA 时 javascript调用函数来保存deviceID在浏览器的localstorage 现在有几
  • 如何对包含 NaN 的 JavaScript 数组进行排序?

    我正在尝试对有时有的数组进行排序Infinity or NaN 当我使用标准 JavaScript 时array sort 它似乎排序直到达到NaN然后我得到随机结果 var array 02 2 2 Nan Infinity 20 有没有
  • 函数类型中的 Plus 与 S

    以下向量声明cons cons a gt Vect n a gt Vect n 1 a cons x xs x xs 因错误而失败 Type mismatch between S n and plus n 1 而下面的向量append编译并
  • 当闪亮仪表板中存在 menuSubItems 时显示 menuItem 的内容

    有没有一种方法可以在闪亮仪表板的内容窗格中实际显示具有现有 menuSubItems 的 menuItem 的内容 在示例中 我尝试将 tabName charts 添加到菜单项 图表 中 以显示选项卡项 图表 的内容 但是 除了打开菜单并
  • 如何将 Ruby 脚本转为 Web 应用程序

    我目前有一个脚本 可以侦听包含给定关键字的地理定位推文 然后将它们绘制在 Google Fusion Tables 地图上 我不太确定这是如何转移到网络应用程序的 我想要一个界面 用户可以在其中输入一些关键字进行搜索 然后我的应用程序将打开
  • 与单视图应用程序相比,带有 UICollectionView 的 Today Extension 具有不同的行为

    我尝试将集合视图添加到今日扩展 https developer apple com library content documentation General Conceptual ExtensibilityPG Today html指定每
  • 没有 System.Drawing/GDI+ 的 asp.net/c# 中的图像操作

    net 有替代图像处理库吗 我更喜欢托管和开源的东西 我问这个有两个原因 我过去遇到过使用 System Drawing 调试 GDI 错误的困难 我读到 在 ASP NET Web 应用程序中使用 System Drawing 并不是 1
  • Logback + Wildfly 8 - 不正确的模式

    我的 logback wildfly 8 配置有问题 我正在使用简单的 ConsoleAppender appender STDOUT ConsoleAppender encoder PatternLayoutEncoder pattern
  • 获取JPA实体版本的通用方法

    我有一个未知的 JPA 实体 需要知道它的版本 我找不到一种通用的方法来做到这一点 我尝试了元模型 但不知道要传递给 getVersion 方法的内容 Object entity Metamodel metamodel entityMana
  • Mongo 连接泄漏与吗啡

    我有一个Servlet with static Mongo new Mongo and Morphia morphia new Morphia 对象 每一次GET被调用时 我执行以下操作 doGet datastore morphia cr