Rufen Sie die Methode zum Deeploy von einer Java-Webanwendung auf

9

Ich entwickle eine Java Web-Anwendung. Die Anwendung verbindet sich mit einem Lucene-Index. Ich erstelle eine Singleton-Instanz von IndexSearcher. Diese Instanz öffnet einige Dateien. Wenn ich die Webanwendung erneut bereitstelle, bleiben die Dateien, die von der früheren Instanz von IndexSearcher geöffnet wurden, weiterhin geöffnet, und eine andere Instanz wird von der neu implementierten Anwendung erstellt. Nach einigen Umsetzungen beginnt das System mit der Ausnahmebedingung "zu viele offene Dateien". Ich möchte die alte Instanz vor der erneuten Bereitstellung schließen, damit die alten Dateien geschlossen werden, aber ich kann nicht herausfinden, wie das geht? Gibt es in web.xml eine Anweisung, die un-deploy aufgerufen wird, ähnlich wie beim Start beim Start? Ich betreibe die Web-Anwendung auf einem jboss-Server.

    
Shashank Agarwal 18.11.2011, 15:33
quelle

2 Antworten

19

Implementieren Sie eine ServletContextListener .

%Vor%

Wenn Sie noch nicht auf Servlet 3.0 sind (was bereits seit 2 Jahren aus ist), dann müssen Sie die @WebListener Annotation entfernen und sie manuell in web.xml wie folgt registrieren:

%Vor%     
BalusC 18.11.2011, 15:35
quelle
2

Wenn Sie javax.servlet.ServletContextListener implementieren und diese Klasse in web.xml als <listener> registrieren, dann wird contextDestroyed() method aufgerufen, bevor der Kontext entladen wird.

    
Ramon 18.11.2011 15:37
quelle

Tags und Links