Servlet Stop-Signal abfangen

reibi

Top Contributor
Hi

ist es möglich in einem Servlet das Stop-Signal abzufangen?

Mein Algorithmus muss auf jeden Fall abgearbeitet werden. Das heisst es darf nicht in der Verarbeitung abgebrochen werden.

Mein Ziel ist es, wenn ich ein STopsignal bekomme, dass ich dann die Verarbeitung "sanft" stoppe

Ist soetwas möglich?

Gruss
 
N

nillehammer

Gast
Meinst Du mit Stop-Signal, dass der Context gestoppt wird? Das geht. Dafür kannst Du das Interface javax.Servlet.ServletContextListener implementieren und deine sanfte Stop-Logik in der Methode "contextDestroyed" unterbringen. Du musst Deine Implementierung dann noch in der web.xml mit Hilfe des listener-Elements referenzieren.
 

reibi

Top Contributor
Meinst Du mit Stop-Signal, dass der Context gestoppt wird?

Ganz kurz ausgeholt: Also stell Dir mal vor:
Ich hab n alleinlaufendes Servlet - sozusagen als deamon.
Es hat dauernd Aufgaben zu erledigen - Alle Aufgaben sind in Teilaufgaben einzuteilen.
Jede Teilaufgabe dauert ca. 15 Sekunden - Muss aber zwingend abgeschlossen sein bevor das Servlet runterfährt.
Falls das nicht geschieht bleiben Reste übrig die Fehler bringen.

Deshalb will ich sicherstellen, das wenn jemand das Servlet runterfährt, dass auf jeden fall die aktuelle Teilaufgabe vollständig abgehandelt ist.

Weeeste wie ?
 

Noctarius

Top Contributor
Du hast einen Thread laufen. Der kennt dann eine Shutdownmethode welche man in der Destroy-Methode des Servlets aufrufen kann. Danach weiß der Thread "ok das ist der letzte Chunk den ich bearbeiten darf". Ist der fertig geht der Thread aus.

Java:
public class Foo extends Servlet {
    private Task task = new Task();

    public void init(...) {
        new Thread(task).start();
    }

    public void destroy(...) {
        task.shutdown();
    }

    private static class Task extends Runnable {
        private AtomicBoolean running = new AtomicBoolean(true);

        @Override
        public void run() {
            while (running.get) {
                // Do a chunk of work
            }
        }

        public void shutdown() {
            running.set(false);
        }
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Post Daten Abfangen Web Tier 59
P Error 404 abfangen Web Tier 5
M Falsche URL-Eingaben abfangen Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben