1.添加配置文件
#db params
#server=Chinese
server=English
#test数据库
DBUrl=***
DBPort=***
DBName=gameserver
#简体服务器阿里云数据库
#DBUrl=dds-***************.
#DBPort=****
#DefaultDB=admin
#DBName=***
#username=***
#password=***
#Collection
PVPRecordCollectionName=pvp_record
PVPDataCollectionName=pvp_data
#最大连接数
connectionsPerHost=100
#最大等待时间
maxWaitTime=300000
#连接超时时间
socketTimeout=100000
#连接池最长生命时间
maxConnectionLifeTime=150000
#连接超时时间
connectTimeout=25000
#IP地址查询接口
#ipSearchUrl=/iplookup/?format=json&ip=
ipSearchUrl=/service/?ip=
#ipSearchUrl=/json/
2.配置MongoDB数据库连接类
package util;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
public class MongoDBUtil {
private static MongoClient mongoClient;
private static MongoDatabase mongoDB;
// 读取配置文件
private static Properties p = new Properties();
private final static MongoDBUtil instance = new MongoDBUtil();
public static MongoDBUtil getInstance(){
return instance;
}
public static String getSystemParamKeyValue(String key){
return (key);
}
public MongoDatabase getMongoDataBase(){
return mongoDB;
}
//离线消息集合
public MongoCollection<Document> getOffCollection(){
return (("OffCollectionName"));
}
//PVP单条记录集合
public MongoCollection<Document> getPVPRecordCollection(){
return (("PVPRecordCollectionName"));
}
//PVP计数集合
public MongoCollection<Document> getPVPDataCollection(){
return (("PVPDataCollectionName"));
}
public MongoDBUtil(){
//String myFilePath = ("/").getPath() + "";
try {
(().getResourceAsStream(""));
String DBUrl = ("DBUrl");
String DBName = ("DBName");
int DBPort = (("DBPort"));
buide = new ();
((("connectionsPerHost")));// 与目标数据库可以建立的最大链接数
((("connectTimeout")));// 与数据库建立链接的超时时间
((("maxWaitTime")));// 一个线程成功获取到一个可用数据库之前的最大等待时间
(100);
(0);
((("maxConnectionLifeTime")));
((("socketTimeout")));
(true);
MongoClientOptions myOptions = ();
// MongoClientOptions myOptions = ()
// .connectionsPerHost((("connectionsPerHost")))
// .maxWaitTime((("maxWaitTime")))
// .socketTimeout((("socketTimeout")))
// .maxConnectionLifeTime((("maxConnectionLifeTime")))
// .connectTimeout((("connectTimeout"))).build();
(("server"));
if(("server").equals("Chinese")){
mongoClient = createMongoDBClient(DBUrl, DBPort);
// mongoClient = createMongoDBClientWithURI(DBUrl, DBPort);
}else{
ServerAddress serverAddress = new ServerAddress(DBUrl, DBPort);
mongoClient = new MongoClient(serverAddress, myOptions);
}
("Connect to mongo successfully");
mongoDB = (DBName);
("Connect to mongoDB successfully : "+());
} catch (Exception e) {
();
("连接超时!");
//手动close释放连接
();
}
}
/*
* 阿里云,第一种办法
*/
public MongoClient createMongoDBClient(String DBUrl, int DBPort){
ServerAddress serverAddress = new ServerAddress(DBUrl, DBPort);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
(serverAddress);
String username = ("username");
String password = ("password");
String defaultDB = ("DefaultDB");
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential(username, defaultDB, ());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
(credential);
return new MongoClient(addrs,credentials);
}
/*
* 阿里云,第二种办法
*/
public MongoClient createMongoDBClientWithURI(String DBUrl, int DBPort) {
ServerAddress serverAddress = new ServerAddress(DBUrl, DBPort);
String username = ("username");
String password = ("password");
String defaultDB = ("DefaultDB");
//另一种通过URI初始化
//mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
String url = "mongodb://" + username + ":" + password + "@" + serverAddress + "/" + defaultDB;
(url);
MongoClientURI connectionString = new MongoClientURI(url);
return new MongoClient(connectionString);
}
}
注意:阿里云数据库连接跟一般数据库连接有所不同