java security api java-ee

java - AccessController.doPrivileged



security api (1)

Es solo obtener una propiedad del sistema. La recuperación de propiedades del sistema requiere permisos que el código de llamada puede no tener. doPrivileged los privilegios de la clase de llamada independientemente de cómo se llamó. Claramente, doPrivileged es algo con lo que debes tener cuidado.

El código citado es el equivalente de:

String lineSeparator = java.security.AccessController.doPrivileged( new java.security.PrivilegedAction<String>() { public String run() { return System.getProperty("line.separator"); } } );

(¿No te encanta la concisión de la sintaxis de Java?)

Sin afirmar privilegios, esto se puede volver a escribir como:

String lineSeparator = System.getProperty("line.separator");

Estoy tratando de descubrir qué está haciendo un código heredado. ¿Qué está haciendo exactamente esta línea y por qué la necesitaría de esta manera?

String lineSeparator = (String) java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("line.separator"));

Lo encontré en la implementación del registrador de la aplicación web / ejb que se ejecuta en Weblogic 8. No hay políticas de seguridad especiales habilitadas por lo que sé. (No me gustan las importaciones de sun. * Paquetes, así que quiero deshacerme de esta línea ;-)