从轴webservice启动应用程序

时间:2012-12-11 20:12:59

标签: java axis

我正在尝试从一个轴Web服务中启动一个应用程序,但我无法理解我做错了什么。 我用来生成web服务的类是:

public class Esecutore {

public String esegui(){ 
        try {

            ProcessBuilder builder=new ProcessBuilder("parser.bat");
            builder.redirectErrorStream(true);
            Process pr;
            pr = builder.start();
            InputStream stdout=pr.getInputStream();
            OutputStream stdin=pr.getOutputStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(stdout));
            BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(stdin));
            String line = br.readLine();
            while(line!=null){
                line=br.readLine();
            }
            int termine=pr.waitFor();
            if(termine!=0){
                return "errore nell'inserimento";
            }
            return "finito";
        } catch (IOException e) {
            // TODO Auto-generated catch block
            return "errore: "+e.getMessage();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            return "errore: "+e.getMessage();
        }


}
}

当我从命令行执行批处理文件时,批处理文件正常工作,它只是启动一个不需要任何输入的.jar。但是,我可以看到,当我通过此代码执行它时,它具有不同于0的退出状态,并且由于.jar应该写入数据库,我也从db日志中知道它根本不会被执行。

1 个答案:

答案 0 :(得分:0)

我首先在轴外测试这个类功能,看它是否有效。
因为你有一个' bat'文件,我假设我们正在讨论Windows中的批处理文件。在这种情况下,ProcessBuilder应该在构造函数" cmd / c start parse.bat"中。请参阅here完整说明。