Quiero ejecutar algún código al inicio para precachear algunas cosas, y también me gustaría iniciar un temporizador para volver a almacenar en caché algunas cosas fuera de la ruta crítica de una solicitud web. ¿Es esto posible con Play Framework, y dónde lo coloco?¿Dónde pongo el código de inicio en Play Framework?
Respuesta
Debe crear un trabajo de arranque que será ejecutado por Play en el momento de inicio de la aplicación.
@OnApplicationStart
public class Bootstrap extends Job {
public void doJob() {
//do stuff
}
}
Más información sobre cómo hacerlo en el Play Manual.
En playframework 2.0 y superior, utilice GlobalSettings, como el código siguiente:
import play.*;
public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
Logger.info("Application has started");
}
@Override
public void onStop(Application app) {
Logger.info("Application shutdown...");
}
}
más información, vaya a playframework docs: JavaGlobal
No hay que olvidar que el código se muestra en las respuestas anteriores tiene para estar en el paquete base de su aplicación (sin especificación del paquete). (Estoy ejecutando Play Framework 2.3.2).
Además, ¡el código no se ejecutará en modo dev hasta que se realice la primera solicitud HTTP!
En mi caso mi código es la siguiente:
import play.*;
public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
String message = "Application has started! LOLADA";
Logger.info(message);
System.out.println(message);
}
@Override
public void onStop(Application app) {
String message = "Application shutdown...!!! LOLADA";
Logger.info(message);
System.out.println(message);
}
}
Ubicado en la estructura del proyecto como este:
(estoy usando IntelliJ IDEA).
Hola, estoy planeando usar Play 2.4, parece que el trabajo asincrónico ha sido eliminado de él? Si ese es el caso, ¿sabes algo que pueda lograr lo mismo? – iCodeLikeImDrunk
https://www.playframework.com/documentation/2.4.x/GlobalSettings – Isn0gud
"application.global" se puede utilizar en el archivo application.conf para colocar el archivo global en cualquier lugar – Anirudh
En Play 2.4. + Debe usar la inyección de dependencia con un gancho de ciclo de vida (opcional). Play utilizará automáticamente cualquier clase llamada Module
que se encuentre en el paquete raíz.
Por ejemplo:
app/ApplicationStart.scala:
import scala.concurrent.Future
import javax.inject._
import play.api.inject.ApplicationLifecycle
// This creates an `ApplicationStart` object once at start-up and registers hook for shut-down.
@Singleton
class ApplicationStart @Inject() (lifecycle: ApplicationLifecycle) {
// Shut-down hook
lifecycle.addStopHook {() =>
Future.successful(())
}
//...
}
app/Module.scala:
import com.google.inject.AbstractModule
class Module extends AbstractModule {
override def configure() = {
bind(classOf[ApplicationStart]).asEagerSingleton()
}
}
Más documentación de este patrón en Playframework docs.
Aquí hay un ejemplo in an application.
- 1. ¿Dónde poner clases de servicio en Play Framework?
- 2. ¿Dónde pongo el código de limpieza en una aplicación Flask?
- 3. Play Framework 2.0 - ¿Dónde está jsAction?
- 4. ¿Dónde está el método isAjax() en Play Framework 2.0?
- 5. ¿Dónde está el repositorio maven del framework play?
- 6. DTO en Play Framework
- 7. ¿Dónde pongo mi código backend de falla resque-retry?
- 8. play-framework [2.0] HTTPS
- 9. ¿Dónde insertar el código para el inicio de la aplicación?
- 10. ¿Dónde pongo META-INF en Eclipse?
- 11. Populate Inputs en Play Framework
- 12. ¿Dónde poner el código de inicio de Django?
- 13. UUID con Play Framework
- 14. ¿Cómo funciona Play Framework?
- 15. Play Framework 2.0: Formateadores personalizados
- 16. ¿Dónde está el método de inicio de un servicio WCF?
- 17. play framework installation
- 18. ¿Dónde pongo la etiqueta de script jQuery?
- 19. Play Framework y DB2
- 20. RESTful on Play! framework
- 21. Play Framework GUID
- 22. JHAML y play framework?
- 23. ¿dónde pongo el código en Sinatra que quiero ejecutar cuando la aplicación se apaga?
- 24. ¿Admite Play Framework los "fragmentos"?
- 25. play framework bat windows proceso de java
- 26. ¿Dónde pongo el archivo de constantes para Codeigniter (PHP)?
- 27. Play framework en Mac, problema de rendimiento
- 28. Ejecutando evoluciones en Play Framework 2.0
- 29. Play framework longpolling en el juego en línea
- 30. Implementando una Play! Aplicación Framework
[Versión de Scala de los documentos, para 2.3.x] (https://www.playframework.com/documentation/2.3.x/ScalaGlobal) – mjswensen
hasta 2.4 quizás, 2.5 use di con ApplicationLifecycle – Jasonw
Esto está en desuso en 2.6.x: https://www.playframework.com/documentation/2.6.x/GlobalSettings – Spen