Сервлет для запуска команд командной строки

Я пишу веб-приложение для обработки команд командной строки и отображения результатов. Я пытался использовать exec(), но это не похоже на работу.

        Process process;
        process = Runtime.getRuntime().exec(commands);
        String line;
        is = new BufferedReader(new InputStreamReader(process.getInputStream()));
        while((line = is.readLine()) != null)
            out.println(line);

1 ответ

Решение

Добавлены буферы и пробные версии, теперь отлично работает.

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    String[] commands = {"date"};
    BufferedReader is = null;
    BufferedReader es = null;

    try
    {
        Process process;
        process = Runtime.getRuntime().exec(commands);
        String line;
        is = new BufferedReader(new InputStreamReader(process.getInputStream()));
        while((line = is.readLine()) != null)
            out.println(line);
        es = new BufferedReader(new InputStreamReader(process.getErrorStream()));
        while((line = es.readLine()) != null)
            System.err.println(line);

        int exitCode = process.waitFor();
        if (exitCode == 0)
            out.println("It worked");
        else
            out.println("Something bad happend. Exit code: " + exitCode);
    } //try
    catch(Exception e)
    {
        out.println("Something when wrong: " + e.getMessage());
        e.printStackTrace();
    } //catch
    finally
    {
        if (is != null)
            try { is.close(); } catch (IOException e) {}
        if (es != null)
            try { es.close(); } catch (IOException e) {}
    } //finally     
}
Другие вопросы по тегам