Java SendMail在服务器停止后发送邮件

时间:2013-07-01 18:10:40

标签: java process sendmail processbuilder

我有一个jar的UI包装器。当从UI触发事件“submitButton”时,将调用以下方法来执行它。 jar在单独的进程中执行,但只有在调用进程(即UI服务器)停止后才发送邮件。知道为什么吗? (当从cmd行执行时,jar工作正常)。

public static String doSendMail(){
        // Run a java app in a separate system process
        Process process;
        try {
            ProcessBuilder pb = new ProcessBuilder("java",  "-jar", "SendMail.jar",  ">>", "test.log");
            process = pb.start();
            InputStream in = process.getInputStream();
            InputStream err = process.getErrorStream();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "Success";

    }

1 个答案:

答案 0 :(得分:1)

一些问题:>>是shell重定向。您正在直接运行子进程,因此可能会被忽略。此外,您从未处理过程中写入的输出,因此可能会缓冲并阻止该过程,直到UI结束。