正如标题所示,WLP不会运行该过程 - 它不会向过程输入流返回任何内容,也不会返回错误流。 如果有人知道需要进行的配置,我很想知道.. (注意进程可以通过手动运行命令来运行 - 此外,整个事情在tomcat8上顺利运行所以..)
编辑1: 问题不在于你们所说的WLP下的命令执行,所以我接受了答案。
问题不同:我使用以下代码将媒体文件发送到多部分servlet并将其存储在磁盘上的文件中:
InputStream is = request.getInputStream();
String currentTime = new Long(System.currentTimeMillis()).toString();
String fileName = PATH + currentTime + "." + fileType;
File file = new File(fileName);
// write the image to a temporary location
FileOutputStream os = new FileOutputStream(file);
byte[] buffer = new byte[BUFFER_SIZE];
while(true) {
int numRead = is.read(buffer);
if(numRead == -1) {
break;
}
os.write(buffer, 0, numRead);
os.flush();
}
is.close();
os.close();
虽然这不会发生在tomcat8上(使用相同的客户端).. 在接收的输入流中,某些东西不是微不足道的。 (注意它是一个只通过@MultipartConfig设置的多部分servlet)
希望这篇文章能够帮助别人..
伙计们,谢谢你的帮助!
答案 0 :(得分:0)
这适用于Liberty。我能够在servlet中测试下面的代码,它打印出我当前目录的路径就好了:
String line;
Process p = Runtime.getRuntime().exec("cmd /c cd");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
从这样一个简单的命令开始,当你升级到更复杂的命令或脚本时,请确保你没有掩盖可能返回的异常。始终至少打印堆栈跟踪!