2008-11-18 1 views
0

Я использую db4o 6.4.54 в среде OSGi в качестве хранилища модели. Каждый раз, когда я перезапускаю OSGi-структуру, база данных кажется пустой, хотя файл есть и не пустой.db4o и OSGi - пустая база данных после перезагрузки

У меня следующая конфигурация:

сердечника пучок, который зависит от стандартного db4o_osgi пучка, предоставленного db4o. Пакет UI, который зависит от основного плагина, откуда он получает модель.

Ключевой пакет создает сервер с памятью через метод openServer (String, 0), а затем создает отдельные клиенты для каждого запроса/потока.

Проблема в том, что каждый раз, когда создается сервер db4o, запросы не возвращают результат.

Я попытался воспользоваться услугой, но это также не сработало.

Следующим шагом в моем тестировании было включение db4o непосредственно в мой пакет, и он работал (эффект заключался в том, что классы db4o загружаются одним и тем же загрузчиком классов, что и объект модели, который я хранил в базе данных). В форуме db4o [1] есть одно сообщение, но он не может объяснить, почему эта проблема существует и как ее нужно решить (правильно). Я продолжу свои исследования, но я задаюсь вопросом, передумал ли кто-нибудь еще эту проблему?

+0

Я сталкиваюсь с аналогичной проблемой прямо сейчас. Вы когда-нибудь это решали? – nawroth 2009-09-21 23:00:41

ответ

1

Вы совершили изменения и закрыли соединение с клиентом при выключении пакета osgi?

т.д .: STH как

ObjectContainer client; 

public void start(BundleContext context) throws Exception { 
    client = Db4oClientServer.openClient(...); 
}  

public void stop(BundleContext context) throws Exception { 
    if (!client.ext().isClosed()) 
     client.close(); 
} 

Или заглянуть в my standalone Db4oServer, которые могут ПРИЕЕ сообщение «СТОП» от клиента, чтобы остановить.