2015-11-10 4 views
1

Как следует из названия, WLP не будет запускать процесс - он ничего не вернет в поток ввода процесса, к потоку ошибок. Если кто-нибудь знает о конфигурации, которая должна иметь место, я хотел бы знать .. (обратите внимание на процесс можно запустить, выполнив команду вручную - кроме того, все это проходит гладко на tomcat8 так ..)WAS Liberty Profile не будет запускать внешний процесс (используя Runtime.getRuntime(). Exec (cmd))


EDIT 1: Проблема была не в выполнении команды под WLP, как вы, ребята, заявили, поэтому я принял ответ.

Проблема в другом: я послал медиа-файла многочастного сервлета и хранить его в файле на диске, используя следующий код:

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(); 

и файл будет сохранен вместе со следующим префиксом: enter image description here

Хотя это не происходит на tomcat8 (с использованием одного и того же клиента). что-то не является тривиальным в принимаемом потоке ввода. (Обратите внимание, св многослойный сервлет, настроить с помощью @MultipartConfig только)

Надеется, что это сообщение будет помогать другим ..

ребятам, спасибо за вашу помощь!

+0

Runtime.getRuntime(). Exec - это не API Liberty, так или иначе, что кажется странным, что это не сработает. Какой код вы используете, как он терпит неудачу? – Alasdair

+0

Я запускаю приложение командной строки, которое должно создать мне текстовый файл в качестве вывода. Я запускаю команду с двумя аргументами. Это не удается, не запуская его вообще, так что нет нового файла, ожидающего меня .. (note1: Я пробовал много разных способов избежать строк, ни один не удалось) (note2: Он должен работать, так как я нарисую команду к журнальному потоку, и если я запустил его в оболочке, он сделает то, что ему нужно) - и, как сказано ранее, он работает на tomcat8 - я знаю его супер wierd. – Li3ro

+0

@ Li3ro вы можете опубликовать трассировку и/или исключение стека сообщение? –

ответ

0

Это будет работать в Либерти. Я был в состоянии проверить следующий код в сервлет и напечатанное путь моего текущего каталога просто отлично:

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(); 

Start с помощью простой команды, как это, и когда вы перемещаете до более сложных команд или сценариев , убедитесь, что вы не зарываете исключения, которые могут вернуться. Всегда, по крайней мере, распечатывайте трассировку стека!

Смежные вопросы