5

私は以下のAkkaマイクロカーネルを持っています:

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上記のクラス) に渡されています。

4

2 に答える 2

3

Here is the minimal example:

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

You can do extra check to overcome this issue:

» scala Foo -Ddebugmode=false
in debug mode

P.S. you might also want to use Properties helper, that contains bunch of methods like propOrNone, propOrElse, etc

于 2013-04-08T21:14:07.847 に答える