MongoDB和Java
我试图在JavaWeb服务中使用MongoDB 正如Mongo教程中所建议的,我应该有一个MongoClient,让它成为dbInstance、连接池,并调用dbInstance来获得到数据库的连接,该数据库位于localhost中 这就是我所拥有的:MongoDB和Java,java,mongodb,mongodb-java,Java,Mongodb,Mongodb Java,我试图在JavaWeb服务中使用MongoDB 正如Mongo教程中所建议的,我应该有一个MongoClient,让它成为dbInstance、连接池,并调用dbInstance来获得到数据库的连接,该数据库位于localhost中 这就是我所拥有的: private static MongoClient dbInstance = null; public static DB getDBInstance() { if (dbInstance == null) { try
private static MongoClient dbInstance = null;
public static DB getDBInstance() {
if (dbInstance == null) {
try {
dbInstance = new MongoClient();
registerShutdownHook();
}
catch (Exception exc) {
System.out.println("Exception");
}
}
return dbInstance.getDB("SAED");
}
我不明白的是,如果我连接到DB,我如何理解,因为il mongo也不工作(通过启动mongod服务),它不会抛出异常
还有一个问题,我有多个线程调用Class.getDBInstance,我应该同步它吗?如果是,我怎么做?当您尝试连接时mongo没有运行时,您将抛出一个异常 执行MongoClient()时,它将始终在本地主机中查找端口27017以进行连接。您还可以将其参数化以连接到其他计算机和/或端口 您可以在上阅读有关此的更深入的详细信息 关于你的同步问题,
是的,您可以在块级别而不是在方法级别进行同步以使其更好。问题是它不会引发异常!应该是的,但不是!但最糟糕的是我做了MongoClient(“随机IP”)它不会抛出异常o。O@litiales如果mongod实例不可用,MongoClient构造函数不会抛出异常的主要原因是,mongo服务器在客户端应用程序生命周期内的任何时候都可能停机,因此,应用程序必须在访问服务器的每个地方处理服务器故障,而不仅仅是在调用MongoClient构造函数时?如果是这样,您可以定义MongoTemplate并将其注入到任何需要连接的地方(保存文档、搜索集合等)。看看SpringData。不,我没有使用框架。这是你无法改变的吗?它们的设计目的是让你的世界不那么痛苦;)我应该使用什么样的框架?我想这取决于您的情况,不过Spring是一个被广泛采用的选择。您可以在我在这里创建的一个小REST应用程序中看到Spring data/MongoTemplate的使用示例:
MongoClient mongoClient = new MongoClient();
// or
MongoClient mongoClient = new MongoClient( "localhost" );
// or
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );