Definitivamente se puede hacer. Si desea consultar Asynchronous programming with HTTP en la documentación, explica cómo hacerlo de forma no bloqueante. Sin embargo, necesitarás un poco de javascript para la parte de redirigir.
Y no sé lo que quiere decir con "comando del sistema", pero es probable que desee create a job para ello, por lo que puede activarlo con una solicitud. Luego puede poll it hasta que finalice y luego redirigir al usuario. Pero realmente la documentación hace un trabajo infinitamente mejor al explicarlo, entonces lo estoy haciendo ahora.
Aquí hay un ejemplo de una acción de controlador donde asumo que el comando del sistema devuelve algún tipo de salida de cadena para el usuario. Cuando se complete el trabajo, enviará una respuesta al usuario, lo que activará el controlador de éxito en el ejemplo de javascript.
public static void executeSystemCommand(String input) {
Promise<String> outputPromise = new SystemCommandJob(input).now();
String output = await(outputPromise);
renderText(output);
}
Básicamente, si estás usando jQuery $.ajax
se puede utilizar el evento completa a pedir los datos (acaba de hacer la solicitud de nuevo si no tuvo éxito dentro del tiempo de espera) y utilizar el éxito /hecho hecho para redirigir al usuario cuando la aplicación responde para indicar que el "comando del sistema" está en ejecución.
ejemplo de una función que puede usar:
function poll(){
$.ajax({
url: "/systemcommand",
success: function(data){
// redirect to next page here
document.location.href = '/output'
},
complete: poll,
timeout: 20000
});
};
También hay a great example on long polling en javascript en StackOverflow.