tl; dr
VaadinServlet.getCurrent().getServletContext()
VaadinServlet
La classe VaadinServlet
eredita un metodo getServletContext
.
Per ottenere l'oggetto VaadinServlet
, chiamare il metodo di classe statica getCurrent
.
Da più ovunque all'interno della vostra Vaadin applicazione, fare qualcosa di simile:
ServletContext servletContext = VaadinServlet.getCurrent().getServletContext();
CAVEAT
non funziona in thread in background. Nei thread avviati, questo comando restituisce NULL
. Come documentato:
In altri casi, (ad esempio da thread in background avviati in un altro modo), il servlet corrente non viene definito automaticamente.
@WebListener
(ServletContextListener
)
Tra l'altro, si rischia di voler gestire tale stato globale quando le implementa web app (lanci) nel contenitore.
È possibile collegarsi alla distribuzione dell'app di Web Vaadin con l'annotazione @WebListener
sulla classe che implementa l'interfaccia ServletContextListener
. Entrambi i metodi di tale interfaccia, contextInitialized
e contextDestroyed
, sono passati a ServletContextEvent
da cui è possibile accedere all'oggetto ServletContext
chiamando getServletContext
.
@WebListener ("Context listener for doing something or other.")
public class MyContextListener implements ServletContextListener
{
// Vaadin app deploying/launching.
@Override
public void contextInitialized (ServletContextEvent contextEvent)
{
ServletContext context = contextEvent.getServletContext();
context.setAttribute(…) ;
// …
}
// Vaadin app un-deploying/shutting down.
@Override
public void contextDestroyed (ServletContextEvent contextEvent)
{
ServletContext context = contextEvent.getServletContext();
// …
}
}
Questo aggancio viene chiamato come parte del vostro Vaadin app in fase di inizializzazione, prima di eseguire la servlet Vaadin (o qualsiasi altro servlet/filtro nel web app). Per citare il documento nel metodo contextInitialized
:
Riceve la notifica dell'avvio del processo di inizializzazione dell'applicazione Web. Tutti i ServletContextListeners ricevono notifica dell'inizializzazione del contesto prima che inizino a essere inizializzati tutti i filtri o servlet nell'applicazione Web.
Domanda relativa: [Hook per la mia app Web Vaadin che si avvia e si arresta?] (Http://stackoverflow.com/q/36588743/642706) –