Ich stelle eine zustandslose EJB als REST-Service zur Verfügung. In meiner POST-Methode, nenne ichJava: Abbrechen der Ausführung der REST-Servicemethode
Result r = longRunningBusinessMethod();
//return data
Wie gehe ich über die es ermöglicht, die Ausführung von longRunningBusinessMethod() von der Client-Seite zu löschen? Ich dachte daran, einen Thread für die Methode zu erstellen und alle ausführenden Threads in einer Hashtabelle zusammen mit einer ID zu behalten, damit der Benutzer seine ID POSTIEREN kann, um den Thread zu beenden. Aber ich bin mir sicher, dass es eine bessere Lösung geben muss. Jede Hilfe wird geschätzt.
So werde ich es machen. Und ich wusste nicht, dass ich meinen Thread manuell beenden musste. Kurze und verwandte Frage: Wenn ich 'Future # get (30, TimeUnit.Seconds) 'verwende, wird die zugrunde liegende Methode immer noch ausgeführt, nachdem die Timeout-Ausnahme ausgelöst wurde? – User9123
Wenn die Zeitüberschreitungsausnahme ausgelöst wird, wird die zugrunde liegende Methode _may_ noch ausgeführt. Dadurch wird nur das "unterbrochene" Flag für den Thread gesetzt, der den 'longRunningBusinessMethod' ausführt, so dass der Code immer noch so geschrieben werden muss, dass er unterbrechbar ist. –