Программная настройка derby.system.home

Необходимо переместить базу данных и файлы журналов файлов базы данных JavaDB (derby) в каталоги развертывания. База данных работает в каталоге запуска приложения, поскольку JavaDB создает папку с именем базы данных (в моем случае mydb), но я хочу переместить этот каталог в подкаталог с именем data/creating data/mydb. Я могу сделать это с помощью вызова connect:

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

и это работает. Но я хотел бы программно явно установить значение

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

Итак, я могу сделать:

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

и все dbs будут в этом data/dir. И файл журнала дерби будет в logs/! Я просто не могу понять это. Кто-нибудь поможет? Есть ли способ установить эти свойства программно (потому что они встроены)?


person pn1 dude    schedule 28.09.2010    source источник


Ответы (1)


документация (Руководство для разработчиков Derby: Настройка свойств Derby) предлагает кое-что подобно:

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

я тоже видел

/* setting an attribute in a Properties object */
Properties myProps = new Properties();
myProps.put("create", "true");
Connection conn = DriverManager.getConnection("jdbc:derby:sampleDB", myProps);
person aioobe    schedule 28.09.2010
comment
Это работает для свойств базы данных, и я действительно использую что-то близкое к этому в своем коде. Но это не работает для общесистемных свойств. - person pn1 dude; 28.09.2010
comment
Ссылка в ответе содержит приведенный выше код в разделе Настройка свойств Derby -> Изменение общесистемных свойств программным путем. Так что ошибка, возможно, где-то в вашем коде. (Вы также можете попробовать другой подход, изменение общесистемных свойств с помощью файла derby.properties. - person aioobe; 28.09.2010
comment
Нет ты прав! Первая часть заставила меня пойти по правильному пути. Да, это проклятое системное свойство. Поэтому я добавил: System.setProperty(derby.system.home, ./data/); и System.setProperty(derby.stream.error.file, ../log/derby.log); (‹- это было потому, что корневой каталог теперь data/), и все это прекрасно работает! Да, я не хочу использовать файл derby.properties. - person pn1 dude; 28.09.2010
comment
@aioobe ссылка не работает - person Njax3SmmM2x2a0Zf7Hpd; 25.04.2014