2010-09-28 20 views
6

Necesidad de mover la base de datos y los archivos de registro de los archivos db JavaDB (derby) a los directorios de despliegue. La base de datos está trabajando en el directorio de inicio de la aplicación, ya que JavaDB crea una carpeta con el nombre de la base de datos (en mi caso mydb), pero quiero mover ese directorio a un subdirectorio llamado data/creating data/mydb. Puedo hacer esto con la llamada de conexión:Configuración programática de derby.system.home

DriverManager.getConnection("jdbc:derby:data/mydb;create=false"); 

y esto funciona. Pero me gustaría establecer mediante programación explícitamente el valor de

derby.system.home = datos/
derby.stream.error.file = log/derby.log

Así que puedo hacer:

DriverManager.getConnection("jdbc:derby:mydb;create=false"); 

y todos los dbs estarían en ese dato/dir. Y el archivo de registro derby estaría en registros /! Simplemente no puedo entender esto. ¿Alguien ayuda? ¿Hay alguna manera de establecer esas propiedades programáticamente (porque está incrustado)?

Respuesta

5

El documentation (Derby developers guide: Setting Derby properties) sugiere algo como:

Properties p = System.getProperties(); 
p.setProperty("derby.system.home", "C:\databases\sample"); 

También he visto

/* setting an attribute in a Properties object */ 
Properties myProps = new Properties(); 
myProps.put("create", "true"); 
Connection conn = DriverManager.getConnection("jdbc:derby:sampleDB", myProps); 
+0

Esto funciona para las propiedades de base de datos y, de hecho yo uso algo parecido a esto en mi código. Pero esto no funciona para las propiedades de todo el sistema. –

+0

El enlace en la respuesta contiene el código anterior en la sección * Configuración de las propiedades de Derby * -> * Cambio de las propiedades de todo el sistema mediante programación *. Entonces, el error quizás esté en otra parte de tu código. (También podría probar el otro enfoque, "Cambiar las propiedades de todo el sistema utilizando el archivo derby.properties". – aioobe

+1

¡No, está en lo correcto! La primera parte me hizo seguir el camino correcto. Es una propiedad del sistema maldito. Así que agregué: System.setProperty ("derby.system.home", "./data/") y System.setProperty ("derby.stream.error.file", "../log/derby.log") ; (<- esto fue porque el directorio raíz ahora es data /) y todo funciona genial! Sí, no quiero usar un archivo derby.properties. –

Cuestiones relacionadas