【问题标题】:MongoDB and JavaMongoDB 和 Java
【发布时间】:2012-12-21 17:23:06
【问题描述】:

我正在尝试在 Java Web 服务中使用 MongoDB。

按照 Mongo 教程中的建议,我应该有一个 MongoClient,让它成为 dbInstance、连接池并调用 dbinstance 以连接到位于 localhost 中的数据库。

这就是我所拥有的:

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

我不明白的是,如果我连接到数据库,我怎么能理解,因为 il mongo 也不起作用(通过启动 mongod 服务)它不会引发异常。

还有一个问题,我有多个线程调用 Class.getDBInstance,我应该同步它吗?如果是,我该怎么做?

【问题讨论】:

  • 您在 Java 应用程序中使用 Spring 吗?如果是这样,您可以定义一个 MongoTemplate 并将其注入您需要连接的任何地方(保存文档、搜索集合等)。看看 SpringData。
  • 不,我没有使用框架。
  • 这是你无法改变的吗?它们旨在让您的世界不再那么痛苦;)
  • 我应该使用什么框架?
  • 我想这取决于您的情况,但是 Spring 是一种广泛采用的选择。您可以在我在这里创建的一个小 REST 应用程序中看到 Spring 数据/MongoTemplate 使用示例:github.com/jameselsey/restful-mongo

标签: java mongodb mongodb-java


【解决方案1】:

当您尝试连接时 mongo 未运行时,您将被抛出异常。

当您执行 MongoClient() 时,它将始终在 localhost 中寻找端口 27017 进行连接。您还可以对其进行参数化以连接到不同的机器和/或端口。

您可以在Mongo Documentation 阅读有关此的更多详细信息。

MongoClient mongoClient = new MongoClient();
// or
MongoClient mongoClient = new MongoClient( "localhost" );
// or
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );

关于您的同步问题, 是的,您可以在块级别而不是在方法级别进行同步以使其更好。

【讨论】:

  • 问题是它不会抛出异常!它应该但它没有!
  • 但最糟糕的是我做 MongoClient("randomIP") 它不会抛出异常o.O
  • @litiales 你可以和他们一起养一个 Jira。
  • 用 mongo db 提票
  • mongoClient构造函数在mongod实例不可用的情况下不抛出异常的主要原因是mongo服务器在客户端应用程序生命周期中随时可能宕机,所以应用程序必须处理在访问服务器的每个地方都出现服务器故障,而不仅仅是在调用 MongoClient 构造函数时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多