2012-05-03 2 views

ответ

1

Я в конечном итоге написал код, который проверяет соединение перед запросом каждого DBCollection.

private DBCollection safeColl(String pCollectionName, DBCollection pColl) { 
    try { 
     if (log.isDebugEnabled()) { 
      log.debug("getting safe coll count on coll: " + pColl.getName()); 
     } 
     pColl.count(); 
    } catch (MongoException e) { 
     if (e.getMessage().startsWith("can't call something")) { 
      pColl = getCollection(pCollectionName, true); 
      return pColl; 
     } else { 
      throw e; 
     } 
    } 
    return pColl; 
} 
1

Вы должны иметь «обработать исключение и повторить логику» в вашем коде. Это может быть полезно: Exceptions, and how best to retry when a connection is reset?

+1

Это, к сожалению, много уродливого кода, который должен был бы войти в слой DAO, который я использую. Я собираюсь удержаться за красивое решение. :) Mongo делает это собственное объединение, но мне интересно, есть ли внешний Mongo-пул, который занимается устаревшими соединениями? – Will

Смежные вопросы