【问题标题】:avoid akka terminate webapp JVM Process避免 akka 终止 webapp JVM 进程
【发布时间】: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

标签: akka playframework-2.3


【解决方案1】:

解决方案是将以下内容添加到我的 playframework 应用程序中的 application.conf 中:

akka{  
    jvm-exit-on-fatal-error = off
}

这就是我可以在 play 应用程序中覆盖 akka 默认参数的方式。谢谢大家。

【讨论】:

  • 我在我的 conf 中这样做了,但仍然有错误。 Play 2.5 还是一样吗?
  • 大概是akka.jvm-exit-on-fatal-error=false
猜你喜欢
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
相关资源
最近更新 更多