2012-02-07 12 views
0

My Play!アプリケーションには1つのモジュール、morphiaがあります。私のDBはmongolab(AWS上)です。コンパイルして初めて実行します。その後、このDB認証例外の後続のすべての要求がスローされます。プレイモルフィアがあらゆる要求に対して再認証を試みるかどうかは誰にも分かりますか?どんな助けでも大歓迎です。ありがとう。mongoLABのplayMorphia IllegalStateException:同じDBObjectで2回認証を呼び出すことができません

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) 

答えて

0

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

私はいつもtrusted environmentでmongodbを使用しています。しかし、この種の問題は回避すべきであり、たぶん単純に試してみるとよいでしょう。問題をhttps://github.com/greenlaw110/play-morphia/issues/newにお送りください。

+0

私はあなたがコード変更の再起動接続に関する正しいと思います。私はあなたのギターに投稿します。迅速な処理に感謝します。 – zenoexo

-1

この「AUTH二回の例外は、」それはユーザー&パスを持つクラスDatastoreImplのコンストラクタで呼ばれています

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

でスローされます。 したがって、同じDatastoreImpl()を同じdbに2回追加すると、この例外が発生します。

あなたはそれが役に立てば幸い、以下のコードを試すことができます。

DatastoreImpl ds = !this.mongo.getDB(dbName).isAuthenticated()? new DatastoreImpl(morphia, mongo, dbName, userName,asswd.toCharArray()) : new DatastoreImpl(morphia, mongo, dbName); 
関連する問題