我有 Akka microkernel以下:
class ServiceKernel extends Bootable {
val system = ActorSystem("service-kernel")
def startup = {
system.actorOf(Props(new Boot(false))) ! Start
}
def shutdown = {
system.shutdown()
}
}
因为内核扩展了
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 "$@"
虽然 om-nom-nom 最初建议
-D
选项,看起来它正在使用中,主要启动参数正在传递给 akka.kernel.Main
类(在这种情况下是上面的 ServiceKernel
类)。
最佳答案
这是最小的例子:
object Foo extends App {
val debugModeOn = System.getProperty("debugmode") != null
val msg = if (debugModeOn) "in debug mode" else "not in debug mode"
println(msg)
}
» scala Foo -Ddebugmode
in debug mode
» scala Foo
not in debug mode
你可以做额外的检查来克服这个问题:
» scala Foo -Ddebugmode=false
in debug mode
附言您可能还想使用 Properties helper ,其中包含一堆方法,如 propOrNone、propOrElse 等
关于scala - 运行 Akka 微内核时获取命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15888579/