В зависимости от того, как вы внедрили свое программное обеспечение, у вас могут возникнуть проблемы с дизайном.
Если вы используете Runtime.exec () из начального приложения, это будет хорошо. Если у вас есть что-то вроде:
try {
doStuff();
} catch(Throwable t) {
Runtime.exec( ... );
}
вы получите более одной работающей копии программного обеспечения, каждая из которых отнимает некоторые ресурсы и никогда не возвращает их обратно. В таком случае вы должны просто очистить сбойный поток и запустить новый (если это возможно).
Просто чтобы прояснить, стартовое приложение, на мой взгляд, - это нечто большее, чем:
while(true) {
Process p = Runtime.exec( your COM communication program );
if ( p.waitFor() == 0 { // Clean exit
break; // exit while loop.
}
// Otherwise p closed with an error and a new process should be started
// which is done in the next iteration of the loop
}