原文链接: java操作mongodb(连接池)

Mongo的实例其实就是一个数据库连接池,这个连接池里默认有10个链接。我们没有必要重新实现这个链接池,但是我们可以更改这个连接池的配置。因为Mongo的实例就是一个连接池,所以,项目中最好只存在一个Mongo的实例。

常见的配置参数:

connectionsPerHost:每个主机的连接数

threadsAllowedToBlockForConnectionMultiplier:线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值。如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。

maxWaitTime:最大等待连接的线程阻塞时间

connectTimeout:连接超时的毫秒。0是默认和无限

socketTimeout:socket超时。0是默认和无限

autoConnectRetry:这个控制是否在一个连接时,系统会自动重试

还有许多配置,可以参见mongodb的API。

下面看代码:

[java] view plain copy  print?
  1. package com.mongo.common;
  2. import java.net.UnknownHostException;
  3. import com.mongodb.DB;
  4. import com.mongodb.Mongo;
  5. import com.mongodb.MongoException;
  6. import com.mongodb.MongoOptions;
  7. public class MongoManager {
  8. private final static String HOST = "localhost";// 端口
  9. private final static int PORT = 27017;// 端口
  10. private final static int POOLSIZE = 100;// 连接数量
  11. private final static int BLOCKSIZE = 100; // 等待队列长度
  12. private static Mongo mongo = null;
  13. private MongoManager() { }
  14. static {
  15. initDBPrompties();
  16. }
  17. public static DB getDB(String dbName) {
  18. return mongo.getDB(dbName);
  19. }
  20. /**
  21. * 初始化连接池
  22. */
  23. private static void initDBPrompties() {
  24. // 其他参数根据实际情况进行添加
  25. try {
  26. mongo = new MongoClient( HOST, PORT);
  27. MongoOptions opt = mongo.getMongoOptions();
  28. opt.connectionsPerHost = POOLSIZE;
  29. opt.threadsAllowedToBlockForConnectionMultiplier = BLOCKSIZE;
  30. } catch (UnknownHostException e) {
  31. } catch (MongoException e) {
  32. }
  33. }
  34. }

使用的时候,如下所示:

[java] view plain copy  print?
  1. /**
  2. * 保存
  3. *
  4. * @param user
  5. * @throws UnknownHostException
  6. */
  7. public void save(User user) throws UnknownHostException {
  8. DB myMongo = MongoManager.getDB("myMongo");
  9. DBCollection userCollection = myMongo.getCollection("user");
  10. DBObject dbo = (DBObject) JSON.parse(user.toJson());
  11. userCollection.insert(dbo);
  12. }

转载于:https://www.cnblogs.com/gaopeng527/p/5349445.html

java操作mongodb(连接池)(转)相关推荐

  1. Java操作MongoDB数据库CRUD(增删查改)

    Java操作MongoDB数据库CRUD(增删查改) 借助mongo-java-driver包,对MongoDB数据库的集合(DataTable)及文档(BSON对象数据)进行增删查改操作.本文的核心 ...

  2. 【MongoDB for Java】Java操作MongoDB

    软件151--熊佳杨 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5.mongo-2.5.3. ...

  3. mongodb连接池 php,node.js,mongodb_nodejs使用mongodb连接池,node.js,mongodb - phpStudy

    nodejs使用mongodb连接池 在开发中想使用连接池 在网上找到了一段代码 但是自己测试的时候发现了些问题 当我把setTimeout中的语句数量变成五条以上的时候 nodejs会首先执行五条 ...

  4. mongodb for java_【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  5. Java操作MongoDB

    之前我们介绍的MongoDB的操作都是在shell命令中写的,在项目开发时我们当然都是用程序去操作MongoDB的,本文我们来看看如何用Java代码操作MongoDB. 本文是MongoDB系列的第十 ...

  6. Java操作MongoDB的基本操作

    目录 Java连接MongoDB Java操作MongoDB MongoDB库操作 查看MongoDB链接中的所有的库 使用库查看库中的集合 MongoDB集合操作 插入数据 删除数据 修改数据 查询 ...

  7. Java操作MongoDB增删改查的基本操作

    今天来讲一讲我们如何使用Java来对MongoDB进行增删改查 目录 一,Java链接MongoDB 导入MongoDB驱动包 获取链接对象 关闭链接 二,Java操作MongoDB 查看库,查看集合 ...

  8. Java通过DBCP连接池方法实现JDBC代码案例

    Java和大数据系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等 ...

  9. springboot集成mongodb 连接池 多数据库源,源码demo

    上一篇介绍了 springboot集成mongodb 多数据库源切换 源码demo 开发环境: windows 7 idea windows64 mongodb 如果没安装运行 点这里 navicat ...

最新文章

  1. tiny-cnn开源库的使用(MNIST)
  2. 菲律宾政府网站被黑!
  3. Vivado使用误区与进阶——XDC约束技巧之I/O篇 (下)
  4. 如何设计网站导航更利于SEO优化?
  5. codeforces 229C
  6. 【Mybatis】MyBatis 实现多表查询
  7. Apache Druid(一)简介
  8. 如何在Windows下编译OpenSSL
  9. java 改装电动_java 数组
  10. ladp3 获取属性_Ldap3库使用方法(四)
  11. 疑似华为P30 Pro样张曝光:10倍变焦依然清晰
  12. 推荐一个自动写paper的软件,让IEEE吐血泪奔
  13. 数学,远比你想象的重要!
  14. 数字孪生网络(DTN)架构
  15. 地址转换函数(点分十进制与网络字节序的二进制)
  16. 通过工具来监控webService请求和返回时的数据(10级学员 韩晓爽课堂总结)
  17. HDS VSP/VM高端存储更换电池
  18. 纪录片:《独立游戏大电影》
  19. 女子眉纤,额下现一弯新月;男儿气壮,胸中吐万丈长虹
  20. CAD中运用CHAMFER命令的角度模式建立倒角的方式

热门文章

  1. php在window磁盘管理,Windows Server 2008R2设置磁盘阵列
  2. 计算几何问题 java_【转载】ACM计算几何题目推荐
  3. html 用svg缩放拉伸,html – 拉伸SVG以适应其父级的100%高度和宽度
  4. 华为NOVa8Pr0是用鸿蒙系统吗,华为Nova8即将发布,采用麒麟芯片,高端平板适配鸿蒙系统...
  5. mysql到oracle数据迁移,mysql数据迁移到oracle
  6. c++ socket学习(1.4)
  7. 二元矩阵峰值搜索_好斗的牛(二元搜索)
  8. java 根据类名示例化类_Java类类getProtectionDomain()方法及示例
  9. Cobaltstrike4.0系列教程(一)----简介与安装
  10. python歌星大奖赛_在歌星大奖赛中,有10个评委为参赛选手打分,分数为1到100分。...