0

マイプレイ!アプリケーションには 1 つのモジュール、morphia があります。私のDBはmongolab(AWS上)です。初めてコンパイルして実行します。次に、この DB 認証例外を後続のすべてのリクエストでスローします。プレイモーフィアがすべてのリクエストで再認証を試みるかどうかは誰にもわかりませんか? どんな助けでも大歓迎です。ありがとう。

Caused by: java.lang.IllegalStateException: can't call authenticate twice on the same DBObject
    at com.mongodb.DB.authenticate(DB.java:437)
    at play.modules.morphia.MorphiaPlugin.initMorphia_(MorphiaPlugin.java:368)
    at play.modules.morphia.MorphiaPlugin.onApplicationStart(MorphiaPlugin.java:444)
    at play.plugins.PluginCollection.onApplicationStart(PluginCollection.java:480)
    at play.Play.start(Play.java:515)
4

2 に答える 2

0

さて、db認証はプレイ開始時に呼び出されます。問題は、開発モードで実行している場合、Javaソースとビューソースのコードが変更されるたびに再生が再開される可能性があることです。

信頼できる環境で常にmongodbを使用しているので、この問題に遭遇したことはありません。しかし、この種の問題は回避する必要があります。おそらく、単に試行/キャッチして無視してください。https://github.com/greenlaw110/play-morphia/issues/newに問題を送信していただけますか?

于 2012-02-07T01:53:34.133 に答える
-1

この「認証 2 回例外」がスローされます

{@link com.mongo.DB#authenticate(String username, char[] passwd )}

クラス DatastoreImpl のコンストラクターで user&pass を使用して呼び出されます。そのため、同じデータベースで新しい DatastoreImpl() を 2 回実行すると、この例外が発生します。

以下のコードを試すことができます。

DatastoreImpl ds = !this.mongo.getDB(dbName).isAuthenticated()? new DatastoreImpl(morphia, mongo, dbName, userName,asswd.toCharArray()) : new DatastoreImpl(morphia, mongo, dbName);
于 2012-03-14T03:30:29.293 に答える