Mongo-db超时异常,表示连接被拒绝



请帮帮我。我长期以来一直在为一个应用程序使用mongo DB。该应用程序处于开发模式。有时我看到这个错误

错误-无法调用该操作,最终出现错误:org.springframework.dao.DataAccessResourceFailureException:等待连接时在10000毫秒后超时。集群状态的客户端视图为{type=Unknown,servers=[{address=localhost:27017,type=Unnown,state=Connecting,exception={com.mongodb.MongoException$Network:打开套接字的异常},由{java.net.ConnectException:拒绝连接}}引起];嵌套异常是com.mongodb.MongoTimeoutException:等待连接时在10000毫秒后超时。集群状态的客户端视图为{type=Unknown,servers=[{address=localhost:27017,type=Unnown,state=Connecting,exception={com.mongodb.MongoException$Network:打开套接字的异常},由{java.net.ConnectException:连接被拒绝}}引起]

但当我重新启动服务器时,它不会再次出现。但这一次我必须重新启动服务器。我使用的是mongodb 2.6.6。

请帮帮我。我担心未来,因为很快它就会进入直播模式。我的数据库连接类:

static final String mongoServer = Play.application().configuration().getString("application.mongo.db.server");
static final String mongoDBname = Play.application().configuration().getString("application.mongo.db.dbname");
static final String mongoUsername = Play.application().configuration().getString("application.mongo.db.username");
static final String mongoPassword = Play.application().configuration().getString("application.mongo.db.password");
static final int connectionPerHost = Play.application().configuration().getInt("application.mongo.db.connections");
static final int connectionIdleTime = Play.application().configuration().getInt("application.mongo.db.idletime");
private MongoTemplate _mongoTemplate;
private static MongoClient   _mongo;
public MongoTemplate getContext() {
    if(_mongoTemplate == null)
        openDbConnection();
    if(_mongo == null || _mongoTemplate == null)
        Logger.error("DatabaseConnection::openDbConnection - Unable to get context. How is this possible?");
    return _mongoTemplate;
}
private static synchronized void createMongo() {
    if(_mongo == null) {
        Logger.debug("DatabaseConnection::openDbConnection - Opening a new connection");
        MongoClientOptions options = new MongoClientOptions.Builder().connectionsPerHost(connectionPerHost)
                .cursorFinalizerEnabled(true).maxConnectionIdleTime(connectionIdleTime).build();
        MongoCredential credential = MongoCredential.createMongoCRCredential(mongoUsername, mongoDBname, mongoPassword.toCharArray());
        ServerAddress addr = null;
        try {
            addr = new ServerAddress(mongoServer);
        } catch (UnknownHostException e) {
            Logger.error("Error Connecting to Mongo: Wrong Server??", e);
            e.printStackTrace();
        }
        _mongo = new MongoClient(addr, Arrays.asList(credential), options);
    }
}
private boolean openDbConnection() {
    try {
        if(_mongo == null) createMongo();
        // TODO: Connection Pooling
        _mongoTemplate = new MongoTemplate(_mongo, mongoDBname); //new MongoTemplate(dbFactory, converter);
        return true;
    } catch (Exception e) {
        Logger.error("Error Opening Connection:", e);
        e.printStackTrace();
    }
    return false;
}
private boolean closeDbConnection() {
    try {
        _mongoTemplate = null;
        return true;
    } catch (Exception ex) {
        Logger.error("Error Closing", ex);
    }
    return false;
}
@Override
protected void finalize() throws Throwable {
    closeDbConnection();
    super.finalize();
}

通常在monodb连接未建立时出现,请验证它。

最新更新