2012-05-03 6 views
2

Mongoの古い接続を自動的にリフレッシュする最良の方法は何ですか?MongoDBの失効した接続を処理する方法

のmongodサービスをリサイクルした後、私は私のLiferayをポートレットからこの例外を取得:

com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/connection_test 

答えて

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

関連する問題