Estoy tratando de prohibir la llamada a System.exit(int);
en algunos frascos.prohíbe la llamada a System.exit
Estas jarras serán desarrolladas por equipos externos y cargadas por nuestra aplicación "contenedor".
Mi primer reflejo es utilizar el gestor de seguridad Java:
-Djava.security.manager-Djava.security.debug=all
con el archivo más simple ${user.home}/.java.policy
:
grant {};
Aunque ya no puedo llamar como System.getProperties() (desde No tengo java.util.PropertyPermission), puedo hacer un System.exit (0) !!
La opción java.security.debug=all
da la siguiente consola:
scl: getPerms ProtectionDomain (file: my-bin-path <no sign certificates>)
sun.misc.Launcher $ AppClassLoader @ 10385c1
<no principals>
java.security.Permissions @ 15b7986 (
(java.lang.RuntimePermission exitVM)
(java.io.FilePermission \my-bin-path\- read)
)
¿Por qué todas las clases en mi-bin-ruta java.lang.RuntimePermission exitVM
han otorgado ?????
gracias
Aparentemente, 'java.lang.RuntimePermission exitVM' se concede de forma predeterminada, quizás tenga que denegarlo explícitamente. – Romain
Espero que el permiso exitVM esté activado de manera predeterminada. Si una parte del código Java llega al final de su ejecución, entonces quizás necesite llamar implícitamente a System.exit (0) para informarle a la VM que está listo. – Chris
Asumo que si quieres saber cómo apagarlo, recomendaría editar la pregunta para preguntar específicamente eso. – Chris