Mongoの古い接続を自動的にリフレッシュする最良の方法は何ですか?MongoDBの失効した接続を処理する方法
のmongodサービスをリサイクルした後、私は私のLiferayをポートレットからこの例外を取得:
com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/connection_test
Mongoの古い接続を自動的にリフレッシュする最良の方法は何ですか?MongoDBの失効した接続を処理する方法
のmongodサービスをリサイクルした後、私は私のLiferayをポートレットからこの例外を取得:
com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/connection_test
私は、それぞれ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;
}
あなたは「例外を処理し、再試行ロジックを」あなたのコードにする必要があります。これは助けになるかもしれません:Exceptions, and how best to retry when a connection is reset?
これは残念ながら私が使用しているDAOレイヤーに入る必要がある醜いコードです。私はもっときれいな解決策を提案するつもりです。 :) Mongoはそれ自身のプールですが、古い接続を処理する外部Mongoプールがあるのでしょうか? – Will