1

次のコードがあります

public class MongoService {

    private final Mongo mongo;
    private static final Logger LOGGER = LoggerFactory.getLogger(MongoService.class);

    public MongoService() throws UnknownHostException {
        mongo = new Mongo("localhot", 2707);
        DB db = mongo.getDB("contract");
        LOGGER.info(db.getCollection("Test").getName());
    }

    public Mongo getMongoInstance() {
        return mongo;
    }

    public void insert() {
        LOGGER.info("will run mongo insert now");
    }

    public void query() {
        LOGGER.info("will run query now");
    }

    public static void main(String args[]) throws UnknownHostException {
        MongoService mongoService = new MongoService();
        mongoService.insert();
        mongoService.query();

    }
}

出力

15:26:07.509 [main] INFO  c.s.s.business.persist.MongoService - Test
15:26:07.514 [main] INFO  c.s.s.business.persist.MongoService - will run mongo insert now
15:26:07.514 [main] INFO  c.s.s.business.persist.MongoService - will run query now
  • ホスト (localhost である必要があります) とポート (27017 である必要があります) は明らかに間違っていますが、このプログラムを実行すると実行され、例外は発生しません。

  • 本当に繋がってる??私は確信していません。では、そのような状況をどのように処理しますか?

4

1 に答える 1

1

mongo.getDB("contract") は単に DB オブジェクトを作成し、それを mongo-java-driver 内部キャッシュに入れます。

私の知る限り、リクエスト(つまり、検索、挿入などの操作)がデータベースに送信された場合にのみ、プールから接続が取得されます。

findOne 操作を実行しようとすると、IOException が発生するはずです。

java.io.IOException: couldn't connect to [/127.0.0.1:2017] bc:java.net.ConnectException: Connection refused
    at com.mongodb.DBPort._open(DBPort.java:228)
    at com.mongodb.DBPort.go(DBPort.java:112)
    at com.mongodb.DBPort.go(DBPort.java:93)
    at com.mongodb.DBPort.findOne(DBPort.java:146)
    at com.mongodb.DBPort.runCommand(DBPort.java:157)
    at com.mongodb.DBTCPConnector.fetchMaxBsonObjectSize(DBTCPConnector.java:457)
    at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:444)
    at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:209)
    at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305)
    at com.mongodb.DBCollection.findOne(DBCollection.java:647)
    at com.mongodb.DBCollection.findOne(DBCollection.java:626)
    at com.mongodb.DBCollection.findOne(DBCollection.java:615)
于 2012-06-11T14:41:18.837 に答える