java操作mongodb(连接池)(转)

原文链接: 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?在CODE上查看代码片派生到我的代码片
  1. package com.mongo.common;  
  2.   
  3. import java.net.UnknownHostException;  
  4.   
  5. import com.mongodb.DB;  
  6. import com.mongodb.Mongo;  
  7. import com.mongodb.MongoException;  
  8. import com.mongodb.MongoOptions;  
  9.   
  10. public class MongoManager {  
  11.     private final static String HOST = "localhost";// 端口  
  12.     private final static int PORT = 27017;// 端口  
  13.     private final static int POOLSIZE = 100;// 连接数量  
  14.     private final static int BLOCKSIZE = 100; // 等待队列长度  
  15.     private static Mongo mongo = null;  
  16.   
  17.     private MongoManager() { }  
  18.   
  19.     static {  
  20.         initDBPrompties();  
  21.     }  
  22.   
  23.     public static DB getDB(String dbName) {  
  24.         return mongo.getDB(dbName);  
  25.     }  
  26.   
  27.     /** 
  28.      * 初始化连接池 
  29.      */  
  30.     private static void initDBPrompties() {  
  31.         // 其他参数根据实际情况进行添加  
  32.         try { 
  33.             mongo = new MongoClient( HOST, PORT);
  34.             MongoOptions opt = mongo.getMongoOptions();  
  35.             opt.connectionsPerHost = POOLSIZE;  
  36.             opt.threadsAllowedToBlockForConnectionMultiplier = BLOCKSIZE;  
  37.         } catch (UnknownHostException e) {  
  38.         } catch (MongoException e) {  
  39.   
  40.         }  
  41.   
  42.     }  
  43. }  


使用的时候,如下所示:

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  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.   
  11.         DBObject dbo = (DBObject) JSON.parse(user.toJson());  
  12.         userCollection.insert(dbo);  
  13.     }  


 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

声卡突然听不到监听_音乐人/键盘手伴侣物问题之:专业监听音箱的音质必须用独立声卡...

近日,不少朋友在后台留言,询问专业监听音箱连电脑听音乐要不要接个声卡!本期我们针对此问题,跟大家分享一些心得与经验。先回答问题,当然要!通常我们电脑上的音频输出口是这样的:而专业监听音箱…

helm3安装mysql_Helm3(kubernetes包管理工具)安装使用踩坑指南

image.png从结构中我们看到有不同级别的文件夹,以及一些yaml文件。charts: 用于存放其他依赖和关联的chart。例如应用依赖数据库的chart。Chart.yaml:存储一些元数据,例如chart的信息,描述等等templates文件夹&#xf…

Redis-3.2主从复制与集群搭建 推荐

Redis-3.2主从复制与集群搭建 一、Redis 主从搭建 1.下载并解压 yum install -y gcc gcc-c pcre zlib pcre-devel tcl wget http://download.redis.io/releases/redis-3.2.4.tar.gz tar -zxvf redis-3.2.4.tar.gz cd redis-3.2.4 make cd src && make test &&am…

苹果手机输入屏保后锁屏_修一块手机屏幕要7080元?

这几天华为Mate X的两次开售成为大家议论的话题,一些抢到的人自然沉浸在快乐之中,想着是自己留着用,还是转手赚一把。而一些想抢而没抢到的人或许正在研究如何在明天的第三次开售中抓好机会吧!当然,也有像小编这样的&a…

中间介(MiddleWare)

引子-Django的生命周期 在学习中间介之前,我们先来回顾一下Django的生命周期:用户发起请求,请求会被发送到urlconf中的url,然后会指向对应的views函数进行处理,views函数处理完成后,用模板渲染好html&#…

对MariaDB10.0的Sphinx进行扩展

已修改过的文件:http://pan.baidu.com/s/1o8DHvkA 将这两个文件放到MariaDB的解压目录后,再进行安装 /usr/local/mariadb-10.0.28/storage/sphinx/ 如下是修改的代码 get_rec ( byte * buf, const byte * key, uint keylen,uint a,uint b,uint c );index…

容器created状态_docker容器状态的转换实现

一 docker容器状态转换图二 实战[rootlocalhost ~]# docker infoContainers: 0Running: 0Paused: 0Stopped: 0Images: 3Server Version: 17.09.0-ceStorage Driver: overlayBacking Filesystem: xfsSupports d_type: falseLogging Driver: json-fileCgroup Driver: cgroupfsPlu…

ubuntu16.04配置sonarqube+MySQL

环境:rootubuntu:~# uname -a Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux rootubuntu:~# rootubuntu:~# cat /etc/issue Ubuntu 16.04 LTS \n \lrootubuntu:~#安装配置mysql:1、更新源…

鼠标固定在屏幕中间_无线电竞黑科技,雷柏VT950Q游戏鼠标评测

雷柏作为目前小有声誉的PC外设品牌,其定位高性能游戏领域的VT系列产品,想必大家也比较熟悉了。VT系列的产品除了有超强的性能以及出色的设计感,同时还都是性价比非常高的产品,即便是采用了旗舰级传感器,定位最为高端的…

WebSnapshotsHelper(HTML转换为图片)

1 /// <summary>2 /// WebBrowser Url生成图片3 /// HTML转图片4 /// </summary>5 public class WebSnapshotsHelper6 {7 Bitmap m_Bitmap;8 string m_Url;9 int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth,…

synchronized 和 reentrantlock 区别是什么_JUC源码系列之ReentrantLock源码解析

目录ReentrantLock 简介ReentrantLock 使用示例ReentrantLock 与 synchronized 的区别ReentrantLock 实现原理ReentrantLock 源码解析ReentrantLock 简介ReentrantLock 是 JDK 提供的一个可重入的独占锁&#xff0c;独占锁&#xff1a;同一时间只有一个线程可以持有锁可重入&am…

mysql8.0递归_mysql8.0版本递归查询

1.先在mysql数据库添加数据DROP TABLE IF EXISTS dept;CREATE TABLE dept (id int(11) NOT NULL,pid int(11) DEFAULT NULL,name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,date datetime(0) DEFAULT NULL,PRIMARY KEY (id) USING BTREE) ENGINE…

计算机中的字符编码

字符编码 什么是计算机编码 计算机只能处理二进制的数据&#xff0c;其它的数据都要进行转换&#xff0c;但转换必须要有一套字符编码(是字符与二进制的一个对应关系)。常用的字符&#xff1a;a-z、0-9、其它的符号等&#xff0c;计算机也不能直接处理。 &#xff08;字符编码类…

应急照明市电检测_应急照明如何供电? 如何接线? 图文分析!

对于大部分刚接触建筑电气设计的工作者来说&#xff0c;应急照明的强启原理一直都是很头疼的问题。由于不知道应急照明的强启原理&#xff0c;所以&#xff0c;应急灯具应该用多少根线&#xff0c;其实也就无从谈起。下面以文字和图片结合的方式来说明应急灯怎么接线的&#xf…

win10网速慢

升级到win10之后发现网速特别慢&#xff0c;搜了下&#xff0c;网上的解决办法果然好使&#xff0c;按照如下操作即可。 返回桌面&#xff0c;按WINR键组合&#xff0c;运行gpedit.msc 打开组策略 依次展开管理模板-》网络-》QoS数据计划程序-》限制可保留宽带&#xff0c;双击…

android实用代码

Android实用代码七段&#xff08;一&#xff09; 前言 这里积累了一些不常见确又很实用的代码&#xff0c;每收集7条更新一次&#xff0c;希望能对大家有用。 声明 欢迎转载&#xff0c;但请保留文章原始出处:)     博客园&#xff1a;http://www.cnblogs.com 农民伯伯&…

VS2015 Cordova Ionic移动开发(五)

一、创建侧边菜单和导航项目 1.使用VS创建一个Ionic空项目&#xff0c;同时创建一个Ionic SideMenu和Ionic Tabs项目。将SideMenu和Tabs项目里的templates和js文件合并到空项目里&#xff0c;修改js对应的代码即可。完整项目工程如下&#xff1a; 2.App.js代码修改如下&#xf…

阿里大数据神预测 胜率仅5.9%中国却1:0胜韩国

写在最前面&#xff1a;这是早晨偶然看到的一篇文章&#xff0c;是对昨天中国却1&#xff1a;0胜韩国的评论。有朋友感慨&#xff1a;努力不放弃的时候&#xff0c;全世界都会帮你。这篇内容很全面的串起阿里巴巴在大数据预测方面的动作&#xff0c;角度很别致&#xff0c;分享…

Python中类、对象与self详解

先介绍一下python中的类与对象/实例。然后详细说明self。说明&#xff1a;对象等同实例&#xff0c;本文称呼不一致时请自行统一 【一】类与对象/实例 1、类 &#xff08;1&#xff09;类由名称、属性、方法三部分组成 &#xff08;2&#xff09;类是抽象模板&#xff0c;比如学…

java开发环境:还在配classpath?你out啦!

2019独角兽企业重金招聘Python工程师标准>>> 先说结论&#xff1a;只需要配置JAVA_HOME和path路径即可&#xff0c;无需配置classpath 参考Oracle官网的说明&#xff1a; The class path tells JDK tools and applications where to find third-party and user-defi…