import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoClientURI;
import com.mongodb.MongoCredential;
import com.mongodb.MongoOptions;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
import java.util.Arrays;
/**
* @作者 yan
* @创建日期 2017-3-16 14:42:20
* @版本 V1.0
* @描述 MongoDB JDBC工具类
*/
public class MongodbUtil {
private static MongoClient mongoClient = null;
private MongodbUtil() {}
static {
if(PropertiesUtil.getInt("mongodb.auth")==1){
initAuthDB();
}else{
initDB();
}
}
public static MongoDatabase getDB() {
if (null != mongoClient) {
setOptions();
return mongoClient.getDatabase(PropertiesUtil.getString("mongodb.dbname"));
}
return null;
}
/**
* 无认证链接
*/
private static void initDB() {
MongoClientURI uri = new MongoClientURI(
PropertiesUtil.getString("mongodb.uri"),
MongoClientOptions.builder().cursorFinalizerEnabled(false));
mongoClient = new MongoClient(uri);
}
/**
* 认证链接
*/
private static void initAuthDB(){
MongoCredential credential = MongoCredential.createCredential(
PropertiesUtil.getString("mongodb.user"),
PropertiesUtil.getString("mongodb.dbname"),
PropertiesUtil.getString("mongodb.pwd").toCharArray());
ServerAddress addr = new ServerAddress(
PropertiesUtil.getString("mongodb.host"),
PropertiesUtil.getInt("mongodb.port"));
mongoClient = new MongoClient(addr,Arrays.asList(credential));
}
/**
* 连接池配置
*/
private static void setOptions(){
MongoOptions opt = mongoClient.getMongoOptions();
opt.connectionsPerHost = PropertiesUtil.getInt("mongodb.poolsize");
opt.threadsAllowedToBlockForConnectionMultiplier = PropertiesUtil.getInt("mongodb.blocksize");
}
}