0

我在 OSGi 环境中使用 db4o 6.4.54 作为模型存储。每次我重新启动 OSGi 框架时,数据库似乎是空的,尽管文件在那里并且肯定不是空的。

我有以下配置:

一个核心包,它依赖于 db4o 提供的标准 db4o_osgi 包。一个 UI 包,它依赖于核心插件,从中获取模型。

核心包通过 openServer(String, 0) 方法创建内存服务器,然后为每个请求/线程创建单独的客户端。

问题是,每次创建 db4o 服务器时,查询都不会返回结果。

我尝试使用该服务,但它也没有工作。

我测试的下一步是将 db4o 直接包含到我的包中并且它可以工作(效果是 db4o 类由与模型对象相同的类加载器加载,我将其存储到数据库中)。db4o 论坛 [1] 中有一篇帖子,但它未能解释为什么会存在这个问题以及应该如何(正确地)解决它。我会继续我的调查,但我想知道是否还有其他人在我之前解决了这个问题?

4

1 回答 1

1

您是否在关闭 osgi 包时提交了更改并关闭了客户端连接?

eg: sth like

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();
}

或者查看我的独立 Db4oServer,它可以从要停止的客户端收到消息“停止”。

于 2010-01-20T23:09:31.107 回答