Я использую Runtime.exec () для запуска внешней 16-разрядной программы DOS (по причинам совместимости с устаревшими приложениями) в моем веб-приложении Jave. У меня есть потоковые считыватели для захвата выходных данных процесса, у меня есть таймер для прерывания, если это занимает слишком много времени, и я использую Process.waitFor (), чтобы дождаться завершения процесса, прежде чем анализировать захваченный вывод. Все работает хорошо, БОЛЬШЕ времени.
Проблема в том, что при первом запросе приложения за день (мы еще не живы), оно истекло. Я действительно хотел бы сделать какой-то мониторинг, чтобы сказать, что, черт возьми, происходит - порожденный процесс сидит без дела, ожидая разрешения ОС для запуска? Читатели потока ждут? Разве ОС выгружала программу DOS, которая была в памяти, когда я вчера запускал приложение, и для ее повторной загрузки требуется некоторое время?
Это не очень непротиворечивая и воспроизводимая вещь, но, как правило, она связана с общей нагрузкой на компьютер и временем, прошедшим с момента последнего запуска приложения.
В любом случае, я надеялся, смогу ли я определить поток, в котором выполнялся процесс (это машина с Windows32, кстати), возможно, я мог бы что-то сказать, или, возможно, я мог бы настроить приоритет этого потока. Если нет, есть ли какое-либо приложение для мониторинга, которое я могу подключить к tomcat или к netbeans, которые могут быть полезны?
Спасибо
Rebeccah