Necesito llamar a un código Java semi-confiable y quiero deshabilitar la capacidad de usar el reflejo durante la ejecución del código.Deshabilitar reflejo de Java para el hilo actual
try{
// disable reflection somehow
someObject.method();
}
finally{
// enable reflection again
}
¿Se puede hacer esto con un SecurityManager, y en caso afirmativo, cómo?
Aclaración/Contexto: Esta es una continuación de another question sobre la restricción de los paquetes que se pueden llamar desde JavaScript/Rhino. La respuesta aceptada hace referencia a una entrada de blog sobre cómo hacerlo, y requiere dos pasos: el primero usa una API de Rhino (ClassShutter), el segundo desactiva reflexión y Class.forName(). Estaba pensando que puedo hacer ese segundo paso más limpiamente usando un SecurityManager (aprendiendo sobre SecurityManager, que como se ha señalado, es una bestia compleja, en el camino).
En resumen, quiero (desde el código, no el archivo de configuración) desactivar Class.forName() y cualquier acceso al paquete de reflexión completo.
im no está seguro acerca de cómo funciona SecurityManager, pero echa un vistazo a esta pregunta: [http : //stackoverflow.com/questions/762459/how-to-disable-java-security-manager] (http://stackoverflow.com/questions/762459/how-to-disable-java-security-manager) –