3
我有一个运行的春分osgi框架与一堆已启动的包。现在我通过'update'更新一个使用osgi控制台的软件包。 (或使用提供的方法:bundle.update(url));Equinox:框架重新启动后丢失的包的更新
一切工作完美...但如果我完全重新启动osgi框架之前更新的捆绑包再次处于原始状态(因为它是在更新之前)。
我使用eclipse的update.configurator来搜索插件目录中的所有包并安装它们,但我认为它可以识别包是否已更新。
有人可以给我一个提示,我失踪了吗?
感谢, 迈克尔满庚
嗨!不,我不开始用 - 清洁。目前我使用的是equinox 3.2,因为我从未换到更高版本。 也许问题是,我认为bundle.update(...)将捆绑包的上传版本存储在配置区域中(这是为一系列捆绑包完成的......当jar包不知道规则时存储在那里,当不存在时)。 如果是这种情况..我会更改我的代码,以便上传文件首先将文件存储到文件系统,然后删除旧版本。 如果这是对应的方法。 伤心,我不能在这种情况下使用bundle.update(InputStream in)。 你觉得怎么样? – 2009-09-20 08:35:35
OSGi规范没有说明重启后应该发生什么事情。只是它应该把它带回来。我不认为更新本身会更新持久包 - 特别是对于基于文件的包。我不确定如果从远程URL安装捆绑软件并执行更新会发生什么情况。 无论如何,在这种情况下,该规范的这个区域是未定义的:-) 请注意,如果需要,仍然可以使用bundle.update(InputStream)。但是,您必须安排将位更新到正确的位置,然后(之后)调用update()。 – AlBlue 2009-09-20 09:30:31
我会改变我的impl,使其取代原来的基于文件的捆绑。 感谢您的帮助! – 2009-09-21 09:02:29