1.Mongo对象内部实现了一个连接池。Mongo对象是线程安全的,因此可以只创建一个,在多线程环境下安全使用。因此,我们可以用将Mongo变量作为一个Singleton类的成员变量,从而保证只创建一个连接池。Mongo.close方法将关闭当前所有活跃的连接。所以要在web工程被从Tomcat或者GlassFish容器中注销的时候确保调用close方法。 2.DB对象DB对象可以通过Mongo.get方法获得,代表了和数据库的一个连接。默认情况下,当执行完数据库的查询或者更新操作后,连接将自动回到连接池中。不需要我们手动调用代码放回池中。至于如何实现,我猜测是update,query,save方法内部有finally块,那里面有还连接到池中的代码。3.手动还连接入池DB对象也允许在一个连接上执行多个操作,比如下面的代码:??
[java] - DB db...;
- db.requestStart();
-
- code....
-
- db.requestDone();
requestStart 会让自动还连接入池失效,因此必须确保requestDone一定能够被调用。这里应该用finally块会更严密一些。 4.示例代码,下面的类实现了Lazy loading的Singleton模式,里面的成员变量Mongo mongo因此只会实例化一次。注意连接池大小和重连设置。
[java] - 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;
- }
- }
- }
在Linux(RedHat)上安装Oracle 10GOracle 10g手工建库&OEM配置相关资讯 MongoDB
- MongoDB 3.3.0 发布下载 (01月14日)
- 使用MongoDB C#官方驱动操作 (12/31/2015 16:27:56)
- CentOS 6.6下安装MongoDB 3.0.1 (12/21/2015 19:29:02)
| - MongoDB 3.2版WiredTiger存储引擎 (01月02日)
- 进程监控工具Supervisor 启动 (12/26/2015 10:49:57)
- MongoDB 3.2.1 RC0 发布下载 (12/18/2015 11:32:29)
|
本文评论 查看全部评论 (0)