0

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ログからもまったく実行されないことがわかります。

4

1 に答える 1

0

まず、このクラスの機能を軸の外でテストして、機能するかどうかを確認します。
「bat」ファイルがあるので、Windows のバッチ ファイルについて話していると思います。この場合、ProcessBuilder のコンストラクターには「cmd /c start parse.bat」が必要です。完全な説明はこちらをご覧ください。

于 2012-12-12T21:57:34.153 に答える