Einmal Initialisierungen von Anwendungen in der init() -Methode des Servlets erfolgen. Hier ist ein Beispiel
public class CatalogServlet extends HttpServlet {
private BookDB bookDB;
public void init() throws ServletException {
bookDB = (BookDB)getServletContext().
getAttribute("bookDB");
}
In dem obigen Beispiel das ServletContext Attribut ist natürlich nur eine Variable, die zwischen Servlet-Anrufe (die normale Art und Weise Zustand zu halten) vorhanden ist. Dies setzt natürlich voraus, dass Sie diese Variable im ServletContext irgendwo anders gespeichert haben. Die andere Möglichkeit besteht darin, die Variable im Deployment-Deskriptor zu erstellen.
Zur Initialisierung Parameter innerhalb Ihres Deployment Descriptor (web.xml) gesetzt, hier ein Beispiel:
<servlet
<servlet-name...
<servlet-class ...
<init-param>
<param-name>param1</param-name>
<param-value>value1</param-value>
</init-param>
</servlet>
Wenn dies nicht funktioniert, beantworten, bitte klären „wenn eine neue Instanz gestartet wird“.
Warum nicht einfach Ihre Memcache-Einträge versionieren und verwerfen, wenn die Version nicht übereinstimmt, anstatt zu versuchen, den gesamten Inhalt von memcache mit jeder Implementierung programmatisch zu löschen? Wenn Sie die Versionsnummer in den Memcache-Schlüssel aufnehmen, wird dies effektiv für Sie erledigt (denn wenn foo-1-blah im Cache ist und Sie versuchen, foo-2-blah anzufordern, wird das ein Fehler sein). – Amber
Es gibt keine Möglichkeit, nur einmal bei jeder Bereitstellung etwas auszuführen, es sei denn, Sie führen es bei der Bereitstellung selbst aus. Ambers Vorschlag ist gut. –