加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:35:17 所属栏目:安全 来源:网络整理
导读:我有以下 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而不
我有以下 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等

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读