我使用在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] application - ReactiveMongoPlugin已成功启动db “网站”!服务器: [localhost:27017] [info] play - 应用程序启动(开发)[ERROR] [2015年2月2日11:34:11.472] [play-akka.actor.default-dispatcher-7] [ActorSystem(play)] Uncaught 线程[play-akka.actor.default-dispatcher-7]关闭时发生错误 自启用'akka.jvm-exit-on-fatal-error'以来的JVM java.lang.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) 在scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 在scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1339) 在scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 在scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
[错误] [10/02/2015 11:34:11.473] [play-akka.actor.default-dispatcher-8] [ActorSystem(play)] Uncaught 线程错误[play-akka.actor.default-dispatcher-8]关闭 自启用'akka.jvm-exit-on-fatal-error'以来的JVM java.lang.AbstractMethodError来自线程的未捕获错误 [play-akka.actor.default-dispatcher-7]自此关闭JVM 为ActorSystem启用'akka.jvm-exit-on-fatal-error'[play] java.lang.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) 在scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at akka.actor.ActorCell.create(ActorCell.scala:580) 在scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1339) 在scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 在scala.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
}
}
我的应用依赖是:
"org.reactivemongo" %% "play2-reactivemongo" % "0.11.7.play23")
请有人建议上面的堆栈跟踪实际意味着什么,因为我无法弄明白吗?
答案 0 :(得分: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"