首页 文章

将ReactiveMongo Play 2.3应用程序从2.6升级到3.0

提问于
浏览
1

我使用在Heroku上运行的ReactiveMongo对一个MongoLab 2.6数据库有一个非常好用的Scala Play 2.3应用程序,现在MongoLab已经将他们的沙箱数据库更新到3.0我无法启动我的应用程序 .

我已将本地数据库更新为3.0 .

我按照http://reactivemongo.org/releases/0.11/documentation/tutorial/play2.html上的说明进行了操作2.3,但我仍然得到如下堆栈跟踪:

---(从SBT运行应用程序,启用自动重新加载)--- [info] play - 在/ 0上侦听HTTP:0:0:0:0:0:0:0:9000(服务器启动) ,使用Ctrl D停止并返回控制台...)[info]应用程序 - ReactiveMongoPlugin启动... [info]应用程序 - ReactiveMongoPlugin成功启动db'sites'!服务器:[localhost:27017] [info] play - 应用程序启动(Dev)[ERROR] [2015年2月2日11:34:11.472] [play-akka.actor.default-dispatcher-7] [ActorSystem(play) ]来自线程[play-akka.actor.default-dispatcher-7]的未捕获错误,因为'akka.jvm-exit-on-fatal-error'已启用java.lang.AbstractMethodError at akka.actor.ActorCell.receiveMessage (ActorCell.scala:516)at akka.dispatch.Mailbox.AailCell.invoke(ActorCell.scala:487)at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)at akka.dispatch.Mailbox.run(Mailbox.scala: 220)at akka.dispatch.ForkJoinExecutorConfigurator $ AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)at scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool) .java:1339)scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[ERROR] [10/02/2015 11: 34:11.473] [play-akka .actor.default-dispatcher-8] [ActorSystem(play)]来自线程[play-akka.actor.default-dispatcher-8]的未捕获错误因为'akka.jvm-exit-on-fatal-error'而关闭JVM enabled java.lang.AbstractMethodError来自线程[play-akka.actor.default-dispatcher-7]的未捕获错误,因为为ActorSystem [play] java.lang启用了'akka.jvm-exit-on-fatal-error',因此关闭了JVM .abstractMethodError at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)at akka.actor.ActorCell.invoke(ActorCell.scala:487)at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)at akka . dispatch.Mailbox.run(Mailbox.scala:220)at akka.dispatch.ForkJoinExecutorConfigurator $ AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)at akka.actor scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) .ActorCell.create(ActorCell.scala:580)at scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1339)at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)at s cala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)at akka.actor.ActorCell.invokeAll $ 1(ActorCell.scala:456)at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)

我已将我的引用从... default.BSONCollection更新为... bson.BSONCollection等 .

我正在使用以下配置:

mongodb.uri = "mongodb://localhost:27017/sites" 

mongo-async-driver {   

  akka {

    loglevel = WARNING   

  } 

}

我的app依赖是:

"org.reactivemongo" %% "play2-reactivemongo" % "0.11.7.play23")

有人可以建议上面的堆栈跟踪实际意味着什么,因为我无法弄明白吗?

1 回答

  • 1

    不完全确定你的堆栈跟踪中发生了什么,但看起来设置 akka.jvm-exit-on-fatal-error 只是导致你的应用程序崩溃而不是输出导致崩溃的原因

    阅读文档,您可以通过执行以下操作来禁用它:

    jvm-exit-on-fatal-error = off
    

    在你的akka配置中 . 然后你可能会得到一些更详细的堆栈跟踪

    http://doc.akka.io/docs/akka/snapshot/general/configuration.html

    然而,在MongoLab上进行Mongo 3.0升级后,我也遇到了致命的错误 . 我的错误是这样的:

    DatabaseException['not authorized for query on auth-test.user' (code = 13)]
    

    由3.0引起使用不同的身份验证然后2.6

    mongo 2.6使用MONGODB-CR auth协议,3.0默认使用MONGODB-SHA-1

    为了解决我改变我的MongoURI以包括这样的authMode:

    mongodb.uri = "mongodb://user:password@ds049621.mongolab.com:49431/DBName?authMode=scram-sha1"
    

相关问题