Db4O - DatabaseFileLockedException при перезапуске сервера - PullRequest
0 голосов
/ 21 февраля 2012

Я разрабатываю VAADIN, используя Db4O для хранения. Обычно мне нравится тот факт, что я могу изменить исходный код, сохранить его и вуаля: сервер автоматически перезагружается, и я вижу изменения в браузере.

Но всегда, когда я перезагружаю сервер Tomcat, я получаю исключение DatabaseFileLockedException. Мой обходной путь - остановить сервер и запустить его снова. Но делать это вручную каждую 1 минуту раздражает.

INFO: Я использую конфигурацию клиентского сервера, но само приложение VAADIN является сервером DB4O (к нему подключаются другие приложения):

ServerConfiguration serverConfig = Db4oClientServer.newServerConfiguration();
//Configure server...
ObjectServer server = Db4oClientServer.openServer(serverConfig, DBFILE, PORT);
server.grantAccess(...); //GRANT ACCESS TO OTHER APPLICATIONS

// ТОЛЬКО ДЛЯ ЛОКАЛЬНОГО ИСПОЛЬЗОВАНИЯ:

 private ObjectContainer client = server.openClient();
//PS.: I never close the client locally. Can that be a problem?

Кто-нибудь знает, как от этого избавиться?

Заранее спасибо.

1 Ответ

1 голос
/ 21 февраля 2012

Хм, ты хоть сервер закрыл. В противном случае сервер db4o продолжит работу и выдаст это исключение.

Есть ли в VAADIN какой-нибудь обратный вызов выключения? Обычно это место для закрытия сервера db4o. Когда вы закрываете сервер, все локальные и удаленные клиентские подключения также будут отключены или при следующем обращении к ним возникнет исключение.

...