`

【转】MongoDB Java 连接池的注意事项

 
阅读更多

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;  
        }  
    }  
}  
 

转自 http://blog.csdn.net/csfreebird/article/details/7090526

分享到:
评论

相关推荐

    mongodb Java连接池

    mongodb Java连接池配置 用于避免Java连接mongodb数据库数过高引起的一系列问题

    Mongodb连接池for java

    标题“MongoDB连接池for Java”指的是在Java环境中,针对MongoDB数据库实现的连接池解决方案。这种解决方案通常基于特定的Java驱动程序,如MongoDB的Java驱动程序(com.mongodb.client.MongoClients),它提供了连接...

    C++ MongoDB 连接池代码实现

    该代码是C++ MongoDB的连接池代码实现。代码封装了一个连接池类对象,通过该对象提供的连接池来操作MongoDB,提升了性能,减少了数据库连接资源的开销。

    Mongodb连接池JAVA

    在使用MongoDB连接池时,开发者需要注意以下几点: 1. **初始化连接池**:在应用启动时,需要初始化连接池,设置好相关参数,如最大连接数、最小连接数、空闲连接超时等。 2. **获取和释放连接**:应用在需要访问...

    java实现mongodb的数据库连接池

    在本场景中,我们关注的是如何使用Java实现对MongoDB数据库的连接池,利用mongo-2.7.3.jar包来管理MongoDB的连接。MongoDB是一种NoSQL数据库,它支持JSON格式的数据存储,采用BSON(二进制JSON)作为内部存储格式,...

    基于hyperf的mongodb连接池组件暂不支持协程

    然而,根据标题“基于hyperf的mongodb连接池组件暂不支持协程”,我们得知Hyperf中的MongoDB连接池组件目前并不支持协程。这个问题涉及到两个关键概念:Hyperf的并发模型和MongoDB的连接池,以及协程在PHP中的应用。...

    MongoDBjava各版本驱动下载

    MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...

    java使用mogodb数据库连接池demo

    本示例是关于如何在Java应用中使用MongoDB数据库连接池,确保在高并发环境下数据库操作的稳定性和性能。我们将深入探讨连接池的概念、MongoDB的Java驱动程序以及如何实现安全验证。 首先,连接池是管理数据库连接的...

    Springboot配置MongoDB连接池源代码

    Spring Boot默认集成了MongoDB Java驱动和Spring Data MongoDB,但并未直接提供连接池的配置。通常我们会使用如MongoDB Java驱动的`MongoClientSettings`来配置连接池,比如使用`...

    java连接mongodb的jar包

    Java连接MongoDB主要依赖于MongoDB的Java驱动程序,这是一个允许Java应用程序与MongoDB数据库进行交互的库。在本文中,我们将深入探讨如何使用Java连接MongoDB,涉及的知识点包括MongoDB Java驱动程序的安装、配置,...

    MongoDB Java连接数据库.pdf

    本文将深入探讨如何配置 Java 开发环境以连接到 MongoDB 数据库。 首先,确保已安装 Java 运行时环境 (JRE) 和 Java 开发工具包 (JDK),因为 MongoDB Java 驱动程序是用 Java 编写的。你可以通过官方网站下载适合你...

    MongoDB Java Driver 简单操作

    在 Java 中,我们可以通过 `Mongo` 类来建立与 MongoDB 的连接。例如: ```java Mongo mongo = new Mongo(); // 默认连接 localhost:27017 Mongo mongo = new Mongo("localhost"); // 指定主机名 Mongo mongo = new ...

    mongodb java简单demo

    本篇将详细介绍如何使用Java连接MongoDB,以及进行基本的数据操作:创建集合、添加文档、修改文档、查询文档和删除文档。 首先,为了连接MongoDB,我们需要引入MongoDB的Java驱动程序依赖。在Maven项目中,可以在...

    mongoDB java driver api

    11. **连接池**:为了优化性能和资源管理,MongoDB Java驱动支持连接池。你可以配置连接池的大小、超时时间等参数。 12. **安全性**:MongoDB支持身份验证和权限控制,Java驱动API可以进行用户认证,并在连接时指定...

    Java连接mongoDB需要的jar包(3.9.1)

    这里提到的"Java连接mongoDB需要的jar包(3.9.1)"是指Java开发者用于连接MongoDB数据库的一组关键库文件,包括`bson-3.9.1.jar`、`mongodb-driver-3.9.1.jar`和`mongodb-driver-core-3.9.1.jar`。这些JAR文件是...

    MongoDB Java API 中文

    值得注意的是,`Mongo` 实例实际上代表了一个连接池,即使在多线程环境中,一个 `Mongo` 实例也足以满足需求。 #### 四、认证 如果启用了数据库认证,可以通过以下方式验证用户: ```java boolean auth = db....

    java 连接mongodb的操作

    Java连接MongoDB是Java开发中常见的一项任务,用于与NoSQL数据库进行交互。MongoDB是一个高性能、开源、无模式的文档型数据库,广泛应用于数据存储和处理。在Java环境中,我们通常使用MongoDB的Java驱动程序来实现...

    Spring Boot中使用MongoDB的连接池配置的方法

    "Spring Boot中使用MongoDB的连接池配置的方法" 在 Spring Boot 项目中,使用 MongoDB 作为数据库时,默认情况下并没有提供连接池配置的功能。这使得开发者需要自行重写 MongoDbFactory,以实现 MongoDB 客户端连接...

    mongodb java Driver

    MongoDB是一个分布式文档存储数据库,而Java驱动程序则是连接MongoDB服务器与Java应用程序之间的桥梁。 首先,让我们深入了解MongoDB Java驱动程序的基本概念: 1. **连接MongoDB**:使用`MongoClient`类建立到...

Global site tag (gtag.js) - Google Analytics