library for java netbeans derby

for - java derby jdbc driver download



No se puede iniciar la base de datos de derby desde Netbeans 7.4 (12)

Descargué Netbeans 7.4 y Java 7 Update 51. Aparece el siguiente error cuando trato de iniciar Java DB o una conexión derby desde Netbeans. Esto está en una PC con Windows 8. Descargué la versión para Windows XP 32 bit en el trabajo. Funciona bien. No estoy seguro de lo que falta.

Thu Jan 16 00:48:23 EST 2014 : Security manager installed using the Basic server security policy. Thu Jan 16 00:48:24 EST 2014 : access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve") java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372) at java.security.AccessController.checkPermission(AccessController.java:559) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.SecurityManager.checkListen(SecurityManager.java:1134) at java.net.ServerSocket.bind(ServerSocket.java:375) at java.net.ServerSocket.<init>(ServerSocket.java:237) at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231) at org.apache.derby.impl.drda.NetworkServerControlImpl.createServerSocket(Unknown Source) at org.apache.derby.impl.drda.NetworkServerControlImpl.access$000(Unknown Source) at org.apache.derby.impl.drda.NetworkServerControlImpl$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(Unknown Source) at org.apache.derby.impl.drda.NetworkServerControlImpl.executeWork(Unknown Source) at org.apache.derby.drda.NetworkServerControl.main(Unknown Source)


Bueno, una alternativa es cambiar el puerto que escucha JavaDB, para estar ahora en el rango alto (como desde 49152 a 65535). Vaya a Ventana-> Servicios, luego haga clic derecho en Java DB y en "Diálogo de propiedades Java DB" vaya a "Ubicación de la base de datos", que en mi sistema es "C: / Users / ahernandeza.netbeans-derby" En ese directorio edite o cree el archivo derby.properties, y agregar / editar la línea: derby.drda.portNumber = XXXX Donde XXXX es el nuevo puerto, en mi caso puse 51527 y funcionó bien.

EDITAR En fisrt vistazo funcionó, el servicio comenzó bien, pero al crear o iniciar una base de datos en NB, recibí el error No se pudo conectar. No puedo establecer una conexión con jdbc: derby: // localhost: 1527 / sample Aunque cambié el pprt a 51527, intenta conectarse a 1527


De acuerdo con Java ™ SE Development Kit 7, Notas de versión de actualización 51

Cambio en los permisos de socket predeterminados

Los permisos de socket predeterminados asignados a todos los códigos, incluido el que no es de confianza, se han modificado en esta versión. Anteriormente, todo el código podía vincular cualquier tipo de socket a cualquier número de puerto superior o igual a 1024. Todavía es posible vincular los sockets al rango de puerto efímero en cada sistema. El rango exacto de puertos efímeros varía de un sistema operativo a otro, pero generalmente está en el rango alto (como desde 49152 a 65535). La nueva restricción es que los sockets vinculantes fuera del rango efímero ahora requieren un permiso explícito en la política de seguridad del sistema.

La mayoría de las aplicaciones que usan sockets tcp de clientes y un administrador de seguridad no verán ningún problema, ya que normalmente se vinculan a puertos efímeros. Las aplicaciones que usan sockets de datagramas o sockets de tcp del servidor (y un administrador de seguridad) pueden encontrar excepciones de seguridad que antes no se habían visto. Si esto ocurre, los usuarios deben revisar si se espera el número de puerto que se solicita, y si este es el caso, se puede agregar una concesión de permiso de socket a la política de seguridad local para resolver el problema.

Esto significa que debe establecer explícitamente los permisos para que su aplicación pueda acceder al rango de puertos entre 1025 y 49151 . Por lo tanto, puede otorgar este permiso al agregar esta línea en la lista de permisos otorgados:

Visite su Java Home Directory y acceda a su archivo de política en $JAVA_HOME/jre/lib/security/java.policy y realice los siguientes cambios.

grant{ //List of granted permissions permission java.net.SocketPermission "localhost:1527", "listen"; }


Debido a que las medidas superiores no funcionaron, agregué el siguiente permiso al final de la sección de permiso principal:

permission java.net.SocketPermission "localhost:1527", "listen,resolve";


El problema es el Java 7u51, tiene un error que afecta a Derby y otros programas y bibliotecas, sugiero instalar el Java 7u45


Encontré una solución rápida a este problema: inicie su JavaDB desde la línea de comando / terminal así:

<base folder>/db/bin/startNetworkServer -noSecurityManager

Entonces funciona bien sin agregar nuevos permisos.


Esto es lo que hice:

  1. Averigüe exactamente dónde está el hogar java ejecutando esta instrucción de NetBeans 7.4:

    System.out.println(System.getProperty("java.home"));

    Este es el resultado para mi caso:

    C:/Program Files/Java/jdk1.7.0_51/jre

    lo cual es bastante importante para mí, estaba modificando otra java.policy y no tuvo ningún efecto y me derrochó un par de horas.

  2. Por el motivo de que java.policy es un archivo de estilo Unix y de solo lectura, lo abrí y lo java.policy ++ y lo ejecuté como administrador (en el mismo hogar de Java):

    C:/Program Files/Java/jdk1.7.0_51/jre/lib/security/java.policy

    Agregue solo estas líneas al archivo después de la primera concesión:

    grant { permission java.net.SocketPermission "localhost:1527", "listen"; };

  3. Guarde el archivo, que es un poco complicado por razones de permiso. Pero si ejecuta Notepad ++ o cualquier otro programa de edición como administrador, puede resolver el problema.

    Luego intente conectar la base de datos de NetBeans, me funciona.

Buena suerte.


Esto estaba haciendo mi cabeza por un tiempo hasta que tropecé con lo siguiente en el wiki de NetBeans

Permisos de concesión de JavaDB

Permisos de concesión de JavaDB

Cómo otorgar permisos para Java DB / Cómo iniciar Java DB

Relacionado con el número 239962

JDK 7u51 viene con algunas mejoras de seguridad que están causando problemas al iniciar Java DB en esta versión de Java.

Cuando intenta iniciar DB desde NetBeans, probablemente obtendrá la Excepción:

java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost: 1527" "escuchar, resolver")

La misma excepción que obtendrá al comenzar a usar script / db / bin / startNetworkServer

Porque no hay una forma adecuada de solucionarlo en el lado de NetBeans y esto debería arreglarse en el lado de Java DB.

Hay varias maneras de lidiar con este problema. Mencionaré solo la manera más fácil. Tienes que iniciar DB manualmente desde la línea de comandos.

• Inicie Java DB con el argumento -noSecurityManager.

(Ubicación de JDK 7u51) / db / bin / startNetworkServer -noSecurityManager

Aunque no es exactamente una solución, se puede utilizar como una solución rápida.


Me cansé un poco con el enfoque de seguridad de Oracle últimamente. Parecen tratar de protegernos de nosotros mismos en formas que serían más apropiadas para los usuarios ingenuos que los programadores. Mi opinión es que el código que coloqué en mi propia máquina debería poder hacer lo que sea necesario. Es mi culpa si pongo código allí que hace cosas malas. Claramente no es una perspectiva universalmente confiable, pero funcionó para mí por cerca de 35 años. Sobre esa base, agrego esto a mi archivo /lib/security/java.policy:

grant codeBase "file:/-" { permission java.security.AllPermission; };

tenga en cuenta que el archivo: / - coincide con cualquier archivo en el sistema, y ​​el bloque de concesión dice, en esencia, "si la clase se carga desde este sistema de archivos, entonces confíe en ello".


Mi solución a esto fue reinstalar jdk 1.7.45, desinstalar netbeans y reinstalarlo seleccionando el jdk desactualizado. No sé si hay una forma de cambiar SDK en NB sin reinstalarlo pero funcionó de esta manera.


Si es linux, entonces

file=`find $(dirname $(readlink -f $(which java)))/.. -iname ''java.policy''`; grep 1527 $file || sudo sed -i ''0,/"listen"/{s/"listen".*//0/n/tpermission java.net.SocketPermission "localhost:1527", "listen";/}'' $file cat $file

encuentra automáticamente su java y cambia los permisos


También puede resolver el problema por usuario otorgando el permiso necesario en un archivo llamado .java.policy en su directorio de inicio.

Funciona tanto en sistemas Unix como Windows, tal como se documenta aquí: http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html

Esto podría ser útil si el archivo de política de todo el sistema se sobrescribe, por ejemplo, al actualizar su JDK, o si no tiene permiso para editar el archivo del sistema.

Esto es lo que tengo en mi $HOME/.java.policy :

grant { permission java.net.SocketPermission "localhost:1527", "listen"; };


Ver http://www.oracle.com/technetwork/java/javase/7u51-relnotes-2085002.html para la descripción del "problema". Buscar otras-libs / javadb

Dependiendo de su requerimiento, lo que hice fue ir y modificar la política de seguridad predeterminada

cd $JAVA_HOME/jre/lib/security

Edita java.policy (¡haz una copia de seguridad primero!)

Agregue lo siguiente

grant codeBase "file:${java.home}}/../db/lib/*" { permission java.security.AllPermission; };

Tenga en cuenta que este es mi requisito.

Estoy otorgando permiso a todas las aplicaciones que usan el u51 JRE para iniciar Derby.

EDITAR

La alternativa sería usar un conjunto de permisos menos permisivos como:

grant codeBase "file:${java.home}}/../db/lib/*" { permission java.net.SocketPermission "localhost:1527", "listen,resolve"; };

NetBeans, por defecto, usa la versión derby instalada con GlassFish. Así que mis permisos se ven así en la Mac. Será similar en Windows, pero la ruta tendrá que cambiar.

grant codeBase "file:/Applications/NetBeans/glassfish-4.0/javadb/lib/*" { permission java.net.SocketPermission "localhost:1527", "listen,resolve"; };