运行Akka Microkernel时获取命令行参数?

cro*_*ies 5 command-line scala microkernel akka

我有下面的Akka微内核:

class ServiceKernel extends Bootable {

  val system = ActorSystem("service-kernel")

  def startup = {
    system.actorOf(Props(new Boot(false))) ! Start
  }

  def shutdown = {
    system.shutdown()
  }
}
Run Code Online (Sandbox Code Playgroud)

因为内核扩展Bootable而不是App,我如何访问启动内核时使用的命令行参数?例如,如果我使用start namespace.ServiceKernel -d rundevmode或类似地运行内核.谢谢!

附加信息

我认为值得在微内核中添加有关启动脚本的信息.在/bin/start你注意到以下内容:

#!/bin/sh

AKKA_HOME="$(cd "$(cd "$(dirname "$0")"; pwd -P)"/..; pwd)"
AKKA_CLASSPATH="$AKKA_HOME/config:$AKKA_HOME/lib/*"
JAVA_OPTS="-Xms256M -Xmx512M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2"

java $JAVA_OPTS -cp "$AKKA_CLASSPATH" -Dakka.home="$AKKA_HOME" akka.kernel.Main "$@"
Run Code Online (Sandbox Code Playgroud)

虽然om-nom-nom最初提出了-D选项,但看起来它正在使用中,并且主要启动参数被传递给akka.kernel.Main类(在本例中将是ServiceKernel上面的类).

om-*_*nom 3

这是最小的例子:

\n\n
object Foo extends App {\n    val debugModeOn = System.getProperty("debugmode") != null\n    val msg = if (debugModeOn) "in debug mode" else "not in debug mode"\n    println(msg)\n}\n\n\xc2\xbb scala Foo -Ddebugmode\nin debug mode\n\xc2\xbb scala Foo            \nnot in debug mode\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以进行额外检查来解决此问题:

\n\n
\xc2\xbb scala Foo -Ddebugmode=false\nin debug mode\n
Run Code Online (Sandbox Code Playgroud)\n\n

PS你可能还想使用Properties helper,它包含一堆方法,如 propOrNone、propOrElse 等

\n