Есть ли способ, с помощью которого мы можем выполнять интерактивные команды через Интернет? - PullRequest
0 голосов
/ 22 августа 2011

У нас есть веб-фреймворк с Flex и Java, основной функцией которого является выполнение команд в фоновом режиме (Unix), анализ и отправка их обратно клиенту (Flex).Это прекрасно работает для всех тихих команд.

Мы используем Runtime, процесс для выполнения команд на стороне java по запросу со стороны flex.То же самое мы должны сделать и для интерактивных команд / скриптов.

Можно ли выполнять интерактивные команды / скрипты через Интернет.Я пытался использовать Apache Commons, но не смог найти решение.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 22 августа 2011

Разница между CLI и интерактивными командами заключается в том, что вы должны читать из STDIN процесса и записывать в его STDOUT.Я не знаю о Flex, но вы определенно можете сделать это с простым HttpRequest, хотя это не тривиально.

Используйте HTTP POST для запуска команды.Но перед запуском создайте HTTP-запрос GET.И GET, и POST должны иметь некоторый идентификатор корреляции.Вы можете отправить его с помощью параметра.Запрос GET будет обработан сервлетом doGet (), который должен завершаться только после завершения выполняемой вами команды.Запрос POST должен обрабатываться doPost () и командой run.Используйте PipedOutputStream для соединения между STDOUT вашей команды и выходным потоком HTTP сервлета, чтобы все байты, напечатанные вашим приложением, были переданы через соединение HTTP и могли отображаться в пользовательском интерфейсе.

Когда пользователь вводит следующую подкоманду, отправьте ее сотправьте сообщение с тем же идентификатором корреляции, чтобы вы могли найти «правильный» процесс на стороне сервера и записать переданные байты в его STDIN.

Кстати, вам действительно все это нужно?Возможно, у вас есть более простое решение?В любом случае, удачи.

...