我想通過多線程的Java應用程序遠程執行多個命令。 我正在使用JSCH,並有問題。JSCH和多線程Java應用程序的問題
有時它運行良好,有時它只是給了我錯誤代碼'-1',並且不記錄任何東西。我無法弄清楚它爲什麼失敗,因爲它返回'-1'時不記錄任何東西。以下是代碼:
JSch jsch = new JSch();
Session session;
int exitCode = 0;
try {
String cmd = "command";
session = jsch.getSession("usrName", "machineName");
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword("pwd");
session.connect(500);
Channel channel = session.openChannel("exec");
ChannelExec channelExec = (ChannelExec) channel;
channelExec.setCommand("cmd.exe /c "+cmd);
channel.connect();
InputStream is = channel.getInputStream();
log.info(convertISToString(is));
exitCode = channel.getExitStatus();
System.out.println(exitCode);
channel.disconnect();
session.disconnect();
} catch (JSchException e) {
log.info(e)
return 1;
} catch (IOException e) {
log.info(e);
return 1;
}
return exitCode;
任何幫助表示讚賞。
你在每個線程中使用不同的JSch對象還是共享。可能會嘗試每個對象。服務器日誌中的任何信息都會每隔一段時間解釋一次-1? – Gray 2012-02-22 18:07:33
當你說它返回'-1'你的意思是從'ChannelExec.getExitStatus()'? – Gray 2012-02-22 18:08:21
是它的一個對象,整個發佈的代碼是在run()中調用的方法中。 -1來自Channel exitStatus。你能告訴我在服務器日誌中我應該看什麼信息嗎? – user1226447 2012-02-22 18:30:24