java实现mongodb的连接池

本文介绍了如何使用Java驱动程序连接MongoDB,包括MongoDB连接配置参数的设置以及连接池管理类的使用,帮助开发者实现高效稳定的数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mongodb java驱动包下载(百度云盘:http://pan.baidu.com/s/1i4aRfzZ  分享密码:wc61)

引入jar包

1.mongodb连接配置参数



2.mongodb连接池管理管理类

package com.znie.mypro.mongodb;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;



import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
/**
 *  mongodb连接池管理类 
 * @author znie
 *
 */
public class MongoManager {

	// 配置文件
	private ResourceBundle mongoProperties = ResourceBundle.getBundle("mongo",
			Locale.getDefault());

	private final static MongoManager instance = new MongoManager();

	private static MongoClient mg = null;

	private static MongoDatabase mongoDatabase;

	public static MongoManager getInstance() {
		return instance;
	}

	public static MongoDatabase getMongoDatabase() {
		return mongoDatabase;
	}

	public static void setMongoDatabase(MongoDatabase mongoDatabase) {
		MongoManager.mongoDatabase = mongoDatabase;
	}

	public MongoManager() {
//		System.out.println(mongoDatabase.getName());
		// 链接池数量
		String connectionsPerHost = mongoProperties
				.getString("connectionsPerHost");
		// 最大等待时间
		String maxWaitTime = mongoProperties.getString("maxWaitTime");
		// scoket超时时间
		String socketTimeout = mongoProperties.getString("socketTimeout");
		// 设置连接池最长生命时间
		String maxConnectionLifeTime = mongoProperties
				.getString("maxConnectionLifeTime");
		// 连接超时时间
		String connectTimeout = mongoProperties.getString("connectTimeout");

		MongoClientOptions options = MongoClientOptions.builder()
				.connectionsPerHost(Integer.parseInt(connectionsPerHost))
				.maxWaitTime(Integer.parseInt(maxWaitTime))
				.socketTimeout(Integer.parseInt(socketTimeout))
				.maxConnectionLifeTime(Integer.parseInt(maxConnectionLifeTime))
				.connectTimeout(Integer.parseInt(connectTimeout)).build();

		String hostLen = mongoProperties.getString("len");

		//所有主机
		List<ServerAddress> hosts = new ArrayList<ServerAddress>();
		for (int i = 1; i <= Integer.parseInt(hostLen); i++) {
			String host = mongoProperties.getString("host" + i);
			// String port = mongoProperties.getString("port"+i);
			hosts.add(new ServerAddress(host));
		}
		List<MongoCredential> credentials = new ArrayList<MongoCredential>();
		if (mongoProperties.getString("authentication").equals("1")) {
			// 需要验证
			MongoCredential credential = MongoCredential.createCredential(
					mongoProperties.getString("userName"), mongoProperties
							.getString("adminDb"),
					mongoProperties.getString("pwd").toCharArray());
			credentials.add(credential);
		}
		mg = new MongoClient(hosts, credentials, options);
		mongoDatabase = mg.getDatabase(mongoProperties.getString("dbname"));
	}
}


两个API
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值