当前位置: 首页 > 知识库问答 >
问题:

如何检查是否用Java建立了MongoDB连接?

欧盛
2023-03-14
String mongoClientURI = "mongodb://" + DB_SRV_USR + ":" + DB_SRV_PWD + "@" + DB_URL + ":" + DB_PORT_CUS + "/" + dbName;
MongoClientURI connectionString = new MongoClientURI(mongoClientURI);

// enable SSL connection
MongoClientOptions.builder().sslEnabled(true).build();

if (this.mongoClient == null) {
    this.mongoClient = new MongoClient(connectionString);
}

// create database if doesn't exist
MongoDatabase mdb = this.mongoClient.getDatabase(dbName);

try {
    this.mongoClient.getAddress();
} catch (com.mongodb.MongoSocketOpenException e) {
    System.out.println("Switch to default port");
    /*…use default port logic…*/
}

问题是没有捕捉到此异常。尽管MongoDB引发以下异常

com.mongodb.mongosocketOpenException:在com.mongodb.Connection.socketstream.open(socketstream.java:63)在com.mongodb.Connection.internalstreamConnection.open(internalstreamConnection.open(internalstreamConnection.java:114)在com.mongodb.Connection.defaultServerMonitor$servermonitorrunnable.run(defaultServerMonitor java.net.abstractplainsocketimpl.java:85)在java.net.abstractplainsocketimpl.doConnect(abstractplainsocketimpl.java:350)在java.net.abstractplainsocketimpl.connecttoAddress(abstractplainsocketimpl.java:206)在java.net.abstractplainsocketimpl.java:188)在java.net.abstractplainsocketimpl.connect(在com.mongodb.connection.socketstreamhelper.initialize(Socketstreamhelper.java:50),com.mongodb.connection.socketstream.open(Socketstream.java:58)...3个以上

我的try-catch表达式无法捕获此异常。

我尝试了多种方法,例如捕捉:

  • 异常
  • RuntimeException
  • MongosocketOpenException
  • MongoException
  • MongoCommandException

没有一个不起作用。

我的问题:

  1. 如何检查MongoDB连接是否已建立?
  2. 如何捕捉异常MongosocketOpenException

共有1个答案

石思淼
2023-03-14

>

  • 我使用以下代码检查连接:

    try {
        mongo.getAddress();
    } catch (Exception e) {
        System.out.println("Database unavailable!");
        mongo.close();
        return;
    }
    

    我的猜测是this.mongoclient.getAddress();不会抛出异常,但我并不知道

    编辑:我通过以下方式初始化了它:

    Builder builder = MongoClientOptions.builder().connectTimeout(3000);  
    MongoClient mongo = new MongoClient(new ServerAddress("192.168.0.1", 3000), builder.build());
    

  •  类似资料:
    • 我在网上搜索了很长一段时间,但我找不到我要找的东西。 如果我的设备已经连接到蓝牙设备(/在我启动应用程序之前),我如何通过我的应用程序发现。 我希望有类似bool BluetoothAdapter的东西。isPaired()

    • 问题内容: 我正在使用以下代码 这可以启用或禁用它 但我想作为函数说函数名是 那么我可以按照我的网站代码中的任意位置来称呼它 与我先前的问题几乎相同,请检查是否启用了allow_url_fopen 问题答案: 只需从函数中返回现有支票即可。

    • 问题内容: 在Java中,我有一个程序需要连续检查用户是否按下了键。所以在伪代码中,像 提前致谢! 问题答案: 在Java中,你不检查是否有键被按下,而不是你听到秒。实现目标的正确方法是注册一个,并实现它以维持所需密钥的状态: 然后,您可以随时使用: 当然,您可以使用相同的方法来实现键映射及其包裹在状态中的状态。

    • 问题内容: 你如何检查是否可以通过Java连接到Internet?一种方法是: 但是是否有更合适的方法来执行该任务,特别是如果你需要经常进行连续检查并且很有可能断开互联网连接时? 问题答案: 你应该连接到实际应用程序需要的地方。否则,你要测试是否与某个无关的地方(在这种情况下为Google)建立了连接。 特别是,如果你要尝试与Web服务进行通信,并且要控制该Web服务,则最好使用某种廉价的“获取状

    • 问题内容: 我下面的代码创建一个新数组,并将其发送到chat(jFrame)。 但是我需要修改此代码以使其工作,如果打开了聊天jframe,则不要打开新的jFrame。而是在chat jframe中打开新的选项卡。聊天框的代码是: 问题答案: 我想知道如果该窗口依赖于另一个窗口,那么是否不应该使用JDialogs而不是JFrames。 一种解决方案是使用类字段来保存对窗口(JFrame或JDial

    • 问题内容: 如何检查Mac上是否安装了Java SDK? 为此有命令行吗? 问题答案: 在终端会做