2017-06-01 1 views

Répondre

1

ServletContextListener

Que voulez-vous dire par « déployée » exactement? Si vous voulez dire quand le conteneur de servlet est, au moment de l'exécution, en train de créer le contexte de votre application web, avant que la première requête ne soit traitée par votre ou vos servlets, utilisez le hook standard pour que votre code soit appelé moment.

Créez une classe qui implémente ServletContextListener, avec la méthode requise contextInitialized. Annoter avec @WebListener pour signaler cette classe pendant le déploiement. Rechercher Dépassement de pile pour de nombreuses questions existantes & Réponses sur ce sujet, y compris quelques réponses plus longues par moi.

Dans cette méthode, capturer le moment actuel comme Instant, un moment sur la ligne de temps en UTC avec une résolution de nanosecondes.

Instant instant = Instant.now() ; 

Exemple de code.

@WebListener 
public class MyServletContextListener implements ServletContextListener { 

    public void contextInitialized(ServletContextEvent sce) { 
     Instant instant = Instant.now() ; // Capture current moment in UTC. 
     // By default `toString` generates string in standard ISO 8601 format. 
     // Easy to parse: Instant.parse("2017-01-23T01:23:45.123456789Z"); 
     String instantIso8601 = instant.toString() ; 

     // Remember the launch time as an attribute on the context. 
     sce.getServletContext().setAttribute("launch_instant" , instantIso8601) ; 
     // Or save your moment in some class variable mentioned in Question. 
     someObjectOfSomeClass.setLaunchInstant(instant); 
    } 

    public void contextDestroyed(ServletContextEvent sce) { 
     … 
    } 

} 
0

Vous pouvez initialiser cette variable avec le last modification time de votre fichier WAR pendant la phase d'initialisation de votre application. L'utilisation d'un outil tel que Maven et la définition de la date de déploiement en tant que propriété de projet constituent une meilleure approche que celle indiquée ci-dessus, car le chemin de vos fichiers WAR peut changer.