Napisałem serwlet, który odbiera kod skryptu Java i przetwarza go i zwraca odpowiedź. w tym celu użyłem kodu JavaScript API w języku JavaInterfejs API JavaScript JavaScript - jak zatrzymać ewaluację
w poniższym kodzie, jeśli script = "print (" Hello, World ")"; kod zakończy się prawidłowo i wydrukuj "Witaj świecie". , ale jeśli script = "while (true);" skrypt będzie bez końca pętla.
import javax.script.*;
public class EvalScript {
public static void main(String[] args) throws Exception {
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
engine.eval(script);
}
}
moje pytanie brzmi: jak zabić proces eval na wypadek, gdyby trwało to zbyt długo (powiedzmy 15 sekund)?
dzięki
-1 Jeśli bieżnik nie czeka, nie będzie wyjątku. Dlatego nie będzie działać z nieskończoną pętlą. Kod musiałby sprawdzić 'Thread.currentThread(). Interrupted()' aby twoje sugestie działały. – sfussenegger
Argh, tęskniłem za tym. Pozostaje tylko przestarzałe zatrzymanie(), wierzę? –
zmienił mój głos – sfussenegger