tl; dr
VaadinServlet.getCurrent().getServletContext()
VaadinServlet
Die VaadinServlet
Klasse erbt eine getServletContext
Methode.
Um das Objekt VaadinServlet
zu erhalten, rufen Sie die statische Klassenmethode getCurrent
auf.
Von den meisten überall in Ihrem Vaadin App, tun Sie etwas wie folgt aus:
ServletContext servletContext = VaadinServlet.getCurrent().getServletContext();
CAVEAT
nicht in Hintergrund-Threads funktioniert. In Threads, die Sie starten, gibt dieser Befehl NULL
zurück. Wie dokumentiert:
In anderen Fällen (z. B. aus Hintergrundthreads, die auf andere Weise gestartet wurden), wird das aktuelle Servlet nicht automatisch definiert.
@WebListener
(ServletContextListener
)
By the way, sind Sie wahrscheinlich, wie zum globalen Zustand, wenn die Web-App entfaltet (Einführungen) in dem Behälter zu handhaben wollen.
Sie können die Bereitstellung Ihrer Vaadin Web-App mit der @WebListener
Annotation Ihrer Klasse verbinden, die die ServletContextListener
Schnittstelle implementiert. Beide Methoden dieser Schnittstelle, contextInitialized
und contextDestroyed
sind eine ServletContextEvent
, aus dem übergeben Sie das ServletContext
Objekt zugreifen kann durch getServletContext
aufrufen.
@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();
// …
}
}
Dieser Haken als Teil Ihrer Vaadin app aufgerufen wird initialisiert, bevor das Servlet Vaadin Ausführen (oder jede andere Servlet/Filter im Web-app). Um das Dokument über die Methode contextInitialized
zu zitieren:
Empfängt die Benachrichtigung, dass der Initialisierungsvorgang der Webanwendung gestartet wird. Alle ServletContextListeners werden über die Kontextinitialisierung benachrichtigt, bevor Filter oder Servlets in der Webanwendung initialisiert werden.
Verwandte Frage: [Haken für meine Vaadin Web App starten und stoppen?] (Http://stackoverflow.com/q/36588743/642706) –