Una vez que has terminado de escribir tu subclase de SecurityManager, puedes instalarla como el controlador de seguridad actual de tu aplicaic�n. Puedes hacer esto utilizando el m�todo setSecurityManager() de la clase System.
Aqu� tienes una peque�a aplicaci�n de prueba, SecurityManagerTest, que instala la clase PasswordSecurityManager de la p�gina anterior como el controlador de seguridad actual. Luego, para verificar que el controlador de seguridad est� en su lugar y es operacional, esta aplicaci�n abre dos ficheros -- uno para leer y otro para escribir -- y copia el contenido del primero en el segundo.
El m�todo main() comienza con la instalaci�n de nuevo controlador de seguridad.
try {
System.setSecurityManager(new PasswordSecurityManager("Booga Booga"));
} catch (SecurityException se) {
System.out.println("SecurityManager already set!");
}
La l�nea en negrita del c�digo anterior crea un nuevo ejemplar de la clase PasswordSecurityManager con la password "Booga Booga". Este ejemplar es pasado al m�todo setSecurityManager() de la clase System, que instala el objeto como el controlador de seguridad por defecto para la aplicaci�n que se est� ejecutando. Este controlador de seguridad permanecer� efectivo durante el la ejecuci�n de esta aplicaci�n.
S�lo se puede seleccionar un vez el controlador de seguridad de una aplicaci�n. En otras palabras, una aplicaci�n Java s�lo pude invocar una vez a System.setSecurityManager() durante su ciclo de vida. Cualquier intento posterior de instalar un controlador de seguridad dentro de una aplicaci�n Java resultar� en una SecurityException.
El resto del programa copia el contenido de este fichero inputtext.txt en un fichero de salida llamado outputtext.txt. Es s�lo un texto que verifica que PasswordSecurityManager se ha instalado de forma apropiada.
try {
DataInputStream fis = new DataInputStream(new FileInputStream("inputtext.txt"));
DataOutputStream fos = new DataOutputStream(new FileOutputStream("outputtext.txt"));
String inputString;
while ((inputString = fis.readLine()) != null) {
fos.writeBytes(inputString);
fos.writeByte('\n');
}
fis.close();
fos.close();
} catch (IOException ioe) {
System.err.println("I/O failed for SecurityManagerTest.");
}
Las l�neas en negrita del c�digo anterior son los accesos al sistema de ficheros restringido. Estas llamadas a m�todo resultan en una llamada al m�todo checkAccess() del PasswordSecurityManager.
�Ejecutar el Programa de Prueba
Cuando ejecutes la aplicaci�n SecurityManagerTest te pedir� dos veces la password: una cuando la aplicaci�n abre el fichero de entrada y otra cuando abre el fichero de salida. Si tecleas la password correcta, se permite el acceso -- el objeto fichero -- y la aplicaci�n prosigue con la siguiente sentencia. Si tecleas una password incorrecta, checkXXX() lanza una SecurityException, que la aplicaci�n no intenta capturar por lo que aplicaci�n termina.
Este es un ejemplo de la salida de aplicaci�n cuando se teclea la password correcta la primera vez, pero no la segunda.
What's the secret password?
Booga Booga
What's the secret password?
Wrong password
java.lang.SecurityException: Not Even!
at PasswordSecurityManager.checkWrite(PasswordSecurityManager.java:46)
at java.io.FileOutputStream.<init>(FileOutputStream.java)
at SecurityManagerTest.main(SecurityManagerTest.java:15)
Observa que el mensaje de error que muestra la aplicaci�n es el mensaje contenido en el m�todo checkWrite(String).