我在 OSGi 环境中使用 db4o 6.4.54 作为模型存储。每次我重新启动 OSGi 框架时,数据库似乎是空的,尽管文件在那里并且肯定不是空的。
我有以下配置:
一个核心包,它依赖于 db4o 提供的标准 db4o_osgi 包。一个 UI 包,它依赖于核心插件,从中获取模型。
核心包通过 openServer(String, 0) 方法创建内存服务器,然后为每个请求/线程创建单独的客户端。
问题是,每次创建 db4o 服务器时,查询都不会返回结果。
我尝试使用该服务,但它也没有工作。
我测试的下一步是将 db4o 直接包含到我的包中并且它可以工作(效果是 db4o 类由与模型对象相同的类加载器加载,我将其存储到数据库中)。db4o 论坛 [1] 中有一篇帖子,但它未能解释为什么会存在这个问题以及应该如何(正确地)解决它。我会继续我的调查,但我想知道是否还有其他人在我之前解决了这个问题?