Wie greife ich auf das aktuelle ServletContext
von meinem Vaadin aus zu? 7 App?
Ich möchte das Objekt ServletContext
verwenden setAttribute
, getAttribute
, removeAttribute
und getAttributeNames
Methoden, um einen globalen Status für meine Vaadin App zu verwalten.
Wenn diese Methoden zu diesem Zweck nicht für Vaadin-Apps geeignet sind, erklären Sie dies bitte.
VaadinServlet
Die VaadinServlet
-Klasse erbt ein getServletContext
Methode.
Um das VaadinServlet
-Objekt zu erhalten, rufen Sie die statische Klassenmethode getCurrent
Von fast überall in Ihrer Vaadin App aus, machen Sie so etwas:
%Vor% CAVEAT
Funktioniert nicht in Hintergrundthreads. In von Ihnen gestarteten Threads 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
) Übrigens möchten Sie wahrscheinlich einen solchen globalen Status behandeln, wenn die Webanwendung im Container bereitgestellt (gestartet) wird.
Sie können sich mit der @WebListener
ServletContextListener
-Schnittstelle implementiert. Beide Methoden dieser Schnittstelle, contextInitialized
und contextDestroyed
, Es wird ein ServletContextEvent
übergeben, über das Sie auf ServletContext
Objekt durch Aufruf von %Co_de% .
Dieser Hook wird als Teil Ihrer Vaadin-App aufgerufen, die initialisiert wird, bevor Sie das Vaadin-Servlet (oder einen anderen Servlet / Filter in Ihrer Web-App) ausführen. Um das Dokument für die Methode getServletContext
zu zitieren:
Erhält eine Benachrichtigung, dass der Initialisierungsvorgang der Webanwendung gestartet wird. Alle ServletContextListeners werden über die Kontextinitialisierung benachrichtigt, bevor Filter oder Servlets in der Webanwendung initialisiert werden.