2011-09-09 13:46:36 +02:00
|
|
|
/**
|
|
|
|
|
* Copyright (C) 2009-2011 Typesafe Inc. <http://www.typesafe.com>
|
|
|
|
|
*/
|
|
|
|
|
|
2011-09-20 21:44:50 +02:00
|
|
|
package akka.remote
|
2011-09-09 13:46:36 +02:00
|
|
|
|
|
|
|
|
import akka.actor.{ Actor, BootableActorLoaderService }
|
|
|
|
|
import akka.util.{ ReflectiveAccess, Bootable }
|
|
|
|
|
import akka.event.EventHandler
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* This bundle/service is responsible for booting up and shutting down the remote actors facility.
|
|
|
|
|
* <p/>
|
|
|
|
|
* It is used in Kernel.
|
|
|
|
|
*/
|
|
|
|
|
trait BootableRemoteActorService extends Bootable {
|
|
|
|
|
self: BootableActorLoaderService ⇒
|
2011-10-12 11:34:35 +02:00
|
|
|
|
2011-10-12 09:10:05 +02:00
|
|
|
def settings: RemoteServerSettings
|
2011-09-09 13:46:36 +02:00
|
|
|
|
|
|
|
|
protected lazy val remoteServerThread = new Thread(new Runnable() {
|
2011-10-12 09:10:05 +02:00
|
|
|
def run = app.remote.start(self.applicationLoader.getOrElse(null)) //Use config host/port
|
2011-09-09 13:46:36 +02:00
|
|
|
}, "Akka RemoteModule Service")
|
|
|
|
|
|
|
|
|
|
def startRemoteService() { remoteServerThread.start() }
|
|
|
|
|
|
|
|
|
|
abstract override def onLoad() {
|
2011-10-12 09:10:05 +02:00
|
|
|
if (app.reflective.ClusterModule.isEnabled && settings.isRemotingEnabled) {
|
2011-09-09 13:46:36 +02:00
|
|
|
EventHandler.info(this, "Initializing Remote Actors Service...")
|
|
|
|
|
startRemoteService()
|
|
|
|
|
EventHandler.info(this, "Remote Actors Service initialized")
|
|
|
|
|
}
|
|
|
|
|
super.onLoad()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
abstract override def onUnload() {
|
|
|
|
|
EventHandler.info(this, "Shutting down Remote Actors Service")
|
|
|
|
|
|
2011-10-12 09:10:05 +02:00
|
|
|
app.remote.shutdown()
|
2011-09-09 13:46:36 +02:00
|
|
|
if (remoteServerThread.isAlive) remoteServerThread.join(1000)
|
|
|
|
|
EventHandler.info(this, "Remote Actors Service has been shut down")
|
|
|
|
|
super.onUnload()
|
|
|
|
|
}
|
|
|
|
|
}
|