【发布时间】:2014-11-11 18:27:20
【问题描述】:
当一些意外异常发生时,如何避免 Akka 终止 JVM PROCESS?。我认为这是一个大问题。
Akka 不应该杀死我的 webapp 的 jvm 进程。
我正在使用播放框架 2.3。
用例:
Uncaught error from thread [SuperActorSystem-akka.actor.default-dispatcher-5] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled
java.lang.ExceptionInInitializerError
at actors.SMSSenderActor$$anonfun$receive$1.applyOrElse(SMSSenderActor.scala:40)
at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
at actors.SMSSenderActor.aroundReceive(SMSSenderActor.scala:14)
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 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.util.NoSuchElementException: None.get
at scala.None$.get(Option.scala:322)
at scala.None$.get(Option.scala:320)
at gcm.GCMUtil$.initializeCCS(GCMUtil.scala:15)
at gcm.GCMUtil$.<init>(GCMUtil.scala:10)
at gcm.GCMUtil$.<clinit>(GCMUtil.scala)
... 12 more
at actors.SMSSenderActor.aroundReceive(SMSSenderActor.scala:14)
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 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.util.NoSuchElementException: None.get
at scala.None$.get(Option.scala:322)
at scala.None$.get(Option.scala:320)
at gcm.GCMUtil$.initializeCCS(GCMUtil.scala:15)
at gcm.GCMUtil$.<init>(GCMUtil.scala:10)
at gcm.GCMUtil$.<clinit>(GCMUtil.scala)
谢谢。
【问题讨论】:
-
您是否尝试在 application.conf 中设置
akka.jvm-exit-on-fatal-error = off? -
@Salem 您应该将此作为答案发布。
-
你还应该修复你的代码,这样你就不会调用
None.get。