JDK 7u51, Derby Network y Security Manager
lunes, enero 27, 2014 at 7:19AM
javaHispano

Tal y como indican las notas de la versión de Java 7u51, esas que no solemos leer, hay un cambio en los permisos predeterminados para los sockets. Esto significa que las aplicaciones ya no pueden abrir libremente cualquier socket que deseen por encima del puerto 1024, sino que ahora están restringidos al rango de puertos efímeros ("ephemeral ports" en inglés).

Aunque las notas de la versión sugieren que el cambio no va a afectar a la mayoría de las aplicaciones, la primera bofetada me la he llevado hoy con NetBeans y una base de datos Derby a la que accedo mediante la ventana Services de NetBeans. Donde antes, al intentar arrancar la base de datos, aparecían unas cuantas líneas informativas en la ventana Output sin mayor trascendencia, hoy, tras actualizar a JDK 7u51, aparecía un mensaje de error en esa ventana y un diálogo con una excepción.

El mensaje era "access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")", seguido de la traza completa de la excepción. Hay que quedarse con este dato para poder arreglarlo.

La forma de arreglarlo, para los que como yo no solemos usar un Security Manager, es lanzar la herramienta de políticas, que yo he encontrado en el directorio bin del JDK (también está en el directorio bin del JRE). La herramienta se llama "policytool"; en mi caso, con Linux, la he lanzado mediante "/usr/local/jdk1.7/bin/policytool &".

Esta página tiene una guía sobre el uso de esta herramienta. Los pasos que yo he seguido para el problema concreto de Derby en NetBeans han sido los siguientes:

Una vez guardado, si volvéis a probar a conectar a la base de datos desde NetBeans, ya no deberíais tener problema. Recordad, si queréis hacer cambios en la política, que debéis grabarla para que surta efecto, no basta con que la veáis modificada en la herramienta de políticas.

Espero que la explicación os resulte útil y os evite algún dolor de cabeza que otro.


Nota: noticia enviada por rickiees

Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.