/** * Copyright (C) 2009-2010 Scalable Solutions AB */ package akka.remote import akka.actor.BootableActorLoaderService import akka.util.{Bootable, Logging} import akka.config.Config.config /** * This bundle/service is responsible for booting up and shutting down the remote actors facility *

* It is used in Kernel */ trait BootableRemoteActorService extends Bootable with Logging { self: BootableActorLoaderService => protected lazy val remoteServerThread = new Thread(new Runnable() { def run = { if (self.applicationLoader.isDefined) RemoteNode.start(self.applicationLoader.get) else RemoteNode.start } }, "Akka Remote Service") def startRemoteService = remoteServerThread.start abstract override def onLoad = { if (config.getBool("akka.remote.server.service", true)) { log.info("Initializing Remote Actors Service...") startRemoteService log.info("Remote Actors Service initialized") } super.onLoad } abstract override def onUnload = { log.info("Shutting down Remote Actors Service") RemoteNode.shutdown if (remoteServerThread.isAlive) remoteServerThread.join(1000) log.info("Remote Actors Service has been shut down") super.onUnload } }