EJB oder Servlet - So fügen Sie einen "Kill-Schalter" hinzu, um einen Prozess / Thread zum Anhalten zu erzwingen

StackOverflow https://stackoverflow.com/questions/3283768

  •  17-09-2020
  •  | 
  •  

Frage

eine Art offene Frage, die ich in einer Weile einsam betreibe - wenn Sie eine EJB-statistische oder stateless-Bean haben, oder möglicherweise ein Direct-Servlet-Prozess, der mit den falschen Parametern mit den falschen Parametern länger auf ein Produktionssystem läuft, wieKönnten Sie effektiv einen manuellen "Kill Switch" für einen Administrator / eine Person hinzufügen, um diesen Thread / Prozess spezifisch zu töten?

War es hilfreich?

Lösung

Sie können nicht, oder zumindest sollten Sie keine Anwendungsserver-Threads direkt stören.Ein "Kill Switch" sieht mir also in einer Java EE-Umgebung definitiv unangemessen aus.

Ich verstehe jedoch das Problem, das Sie haben, möchte aber lieber empfehlen, einen asynchronen Ansatz zu ergreifen, an dem Sie Ihren Job in kleinerer Arbeitseinheit teilen.

Ich habe das mit EJB-Timern getan und war mit dem Ergebnis zufrieden: Für die erste Arbeitseinheit wird ein anfänglicher Timer erstellt.Wenn die AppServer führt den Timer aus, er registriert dann als zweite, der der 2. Arbeitseinheit entspricht usw.Auch die Timer-Ausführung und -registrierung ist Transactional, was gut ist, um mit der Datenbank zu arbeiten.Sie können den Antrag mit diesem Ansatz sogar herunterfahren und neu starten.Vor jedem Arbeitsgerät leiteten wir die Datenbank in die Datenbank, wenn der Job in der Zwischenzeit storniert wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top