import akka.actor.ActorRef; import akka.actor.Cancellable; import play.Application; import play.GlobalSettings; import play.libs.Akka; import scala.concurrent.duration.Duration; import services.LogProtocol; import services.LogService; import java.util.Optional; import java.util.concurrent.TimeUnit; public class Global extends GlobalSettings { Optional<Cancellable> logScheduler = Optional.empty(); @Override public void onStart(Application app) { super.onStart(app); logScheduler(); } private Cancellable logScheduler() { return Akka.system().scheduler().schedule( Duration.Zero(), Duration.create(1000, TimeUnit.MILLISECONDS), LogService.instance(), LogProtocol.latest, Akka.system().dispatcher(), ActorRef.noSender() ); } @Override public void onStop(Application app) { super.onStop(app); logScheduler.ifPresent(Cancellable::cancel); } }