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.
Implementieren Sie eine ServletContextListener
.
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: