Uso la API de OpenOffice de mi Programa Java para manejar Documentos para mí. A veces (una vez cada 100k llamadas) el método de eliminación de un Documento no retorna, la carga de la CPU se mantiene al 100% pero nada parece a suceder.Java: el método no regresa. (XComponent.dispose
¿Cómo debería actuar/código correctamente en esta situación?
Mi enfoque actual es esperar a que el disponer para tener éxito durante dos segundos. Si no es así que trato de poner fin a OpenOffice a través de la API apropiada Si eso también falla (como era de esperar), entonces elimino el proceso de soffice con una llamada al
XDesktop xDesk = (...) // achive desktop
xDesk.terminate();
Runtime.getRuntime().exec("pkill soffice"); // "taskkill /IM soffice" on windows
y luego llamar
disposeThread.stop();
a la rosca que en un principio intenta disponer el XComponent. Ahora, la API de Java dice que no se debe usar Thread.stop()
(y hay argumentos válidos para eso), así que me pregunto si hay alguna solución mejor que lo que hice.
Esta es una de esas preguntas en las que, dependiendo de cómo esté redactada, podría ser adecuada para los programadores, pero creo que es técnica y de implementación lo suficientemente específica como para que probablemente deba estar en StackOverflow. –
@maple_shaft Pensé en eso, pero decidí no hacerlo. Si fuera una pregunta sobre cómo manejar mi problema específico, lo habría puesto allí, pero ya encontré una solución de trabajo para mi problema y ahora estoy preguntando si hay un concepto mejor, en lugar de una solución específica. Pero sí, depende de cómo esté redactado. –
@RobZ Esto realmente no es una pregunta específica de Open Office. Mi situación de Open Office aquí es solo un ejemplo. –