MongoDB Java 连接池的注意事项
来源:互联网 发布:windows离线补丁包 编辑:程序博客网 时间:2024/05/20 07:20
1.Mongo对象
Mongo对象内部实现了一个连接池。Mongo对象是线程安全的,因此可以只创建一个,在多线程环境下安全使用。因此,我们可以用将Mongo变量作为一个Singleton类的成员变量,从而保证只创建一个连接池。Mongo.close方法将关闭当前所有活跃的连接。所以要在web工程被从Tomcat或者GlassFish容器中注销的时候确保调用close方法。2.DB对象
DB对象可以通过Mongo.get方法获得,代表了和数据库的一个连接。默认情况下,当执行完数据库的查询或者更新操作后,连接将自动回到连接池中。不需要我们手动调用代码放回池中。至于如何实现,我猜测是update,query,save方法内部有finally块,那里面有还连接到池中的代码。
3.手动还连接入池
DB对象也允许在一个连接上执行多个操作,比如下面的代码:
DB db...;db.requestStart();code....db.requestDone();
requestStart 会让自动还连接入池失效,因此必须确保requestDone一定能够被调用。这里应该用finally块会更严密一些。
4.示例代码,下面的类实现了Lazy loading的Singleton模式,里面的成员变量Mongo mongo因此只会实例化一次。注意连接池大小和重连设置。
package com.freebird.helper;import com.mongodb.Mongo;import com.mongodb.MongoOptions;import com.mongodb.DB;/** * Describe class DBManager here. * example: * 初始化:DBManager.getInstance().init("74.208.78.5",27017,200); * 之后,每次通过下面的代码获取数据库对象 * DBManager.getInstance().getDB(); * Created: Sat Dec 17 10:45:24 2011 * * @author <a href="mailto:chenshu@chunshu">chenshu</a> * @version 1.0 */public class DBManager { public static final String DB_NAME = "kaimei"; public static final String MESSAGE_COLLECTION = "email"; public static DBManager getInstance(){return InnerHolder.INSTANCE; } /** * Creates a new <code>DBManager</code> instance. * */ private DBManager() { } private static class InnerHolder{static final DBManager INSTANCE = new DBManager(); } public DB getDB(){return mongo.getDB(DB_NAME); } private Mongo mongo; public void init(final String ip, int port, int poolSize) throws java.net.UnknownHostException { System.setProperty("MONGO.POOLSIZE", String.valueOf(poolSize)); if (mongo == null) { mongo = new Mongo(ip, port); MongoOptions options = mongo.getMongoOptions(); options.autoConnectRetry = true; options.connectionsPerHost = poolSize; } }}
- MongoDB Java 连接池的注意事项
- Java中使用MongoDB连接池的注意事项
- java实现mongodb的连接池
- java使用mongoDB和freemarker的注意事项
- Java 库连接的注意事项
- Java连接数据库的注意事项
- thrift的TTransport连接池注意事项[Java版本说明]
- [ mongoDB ] - MongoDB 连接池
- [ mongoDB ] - MongoDB 连接池
- mongoDB的连接池问题
- Mongodb的安装以及Java连接Mongodb初探
- java连接虚拟机里面的MongoDB出错
- java中mongoDB连接遇到的问题
- java操作mongodb(连接池)
- java操作mongodb(连接池)
- java操作mongodb(连接池)
- Java连接MongoDB
- java连接mongoDB
- gcc include
- Windows Mobile】认识Windows Mobile
- 使用 google-perftools 剖析程序性能瓶颈
- Fedora 15上Bind 9.8.0 简单配置
- 修改分辨率;游戏
- MongoDB Java 连接池的注意事项
- SQLServer收缩数据库
- LD 11.12 RC版本亮点:深度截图工具
- 设置驱动程序开机启动
- Linux Beyond Compare 3试用破解
- libevent的简单应用
- Jquery操作DOM节点
- 最大素数
- 获取字符串长度