Uso l'API OpenOffice dal mio programma Java per gestire Documenti per me. A volte (una volta ogni 100k circa) il metodo di smaltimento di un documento non viene restituito, il carico della CPU rimane al 100% ma non sembra nulla per accadere.Java: il metodo non restituisce. (XComponent.dispose
Come dovrei agire/codice correttamente in questa situazione?
il mio approccio attuale è quella di aspettare la dispose per avere successo per due secondi. in caso contrario cerco di interrompere OpenOffice attraverso l'API appropriata Se ciò fallisce pure (come mi aspetterei) allora uccido il processo di soffice con una chiamata a
XDesktop xDesk = (...) // achive desktop
xDesk.terminate();
Runtime.getRuntime().exec("pkill soffice"); // "taskkill /IM soffice" on windows
e quindi chiamare
disposeThread.stop();
al thread che cerca inizialmente di disporre il XComponent. Ora l'API Java dice che non si dovrebbe usare Thread.stop()
(e ci sono argomenti validi per quello) quindi mi chiedo se ci sono soluzioni migliori di ciò che ho fatto.
Questa è una di quelle domande in cui, a seconda di come è formulata, potrebbe essere appropriata per i programmatori, ma ritengo che sia tecnica e di implementazione abbastanza specifica che dovrebbe probabilmente essere su StackOverflow. –
@maple_shaft Ci ho pensato, ma ho deciso contro. Se fosse una domanda su come gestire il mio problema specifico, l'avrei messo lì, ma ho già trovato una soluzione funzionante per il mio problema e ora sto chiedendo se c'è un concetto migliore, piuttosto che una soluzione specifica. Ma sì, dipende da come è formulata. –
@RobZ Questa non è una domanda specifica di Open Office. La mia situazione di Open Office qui è solo un esempio. –