我正在开发一个OSGi包,它实现了一个服务作为本机可执行文件的包装器.也就是说,服务运行可执行文件ProcessBuilder
,为其提供一些数据,并检索结果.我的问题是打包这个包的最佳方法.本机可执行文件包含许多依赖数据文件,这些文件必须全部存在于磁盘上才能运行该工具.我发现有很多关于在OSGi中处理本机DLL的引用,但是没有一个引用与必须存在于磁盘上的bundle相关联的文件,而不是只能通过类路径检索.
我想我可以直接在bundle archive中包含exectuable和dependent文件,然后在bundle启动时以编程方式提取到某个目录.我能想到的另一个选择是将可执行文件放在某处并设置指向它的系统属性,但我希望将配置保持在最低限度.
一个不是特定于特定OSGi实现的解决方案会很好,但如果没有,我会使用Equinox.
谢谢!
当然,您的解决方案有效。但您还必须小心,停止并删除在安装过程中提取和启动的任何资源。如果可执行文件也创建了任何类型的工作文件,这可能特别难以跟踪。
您应该这样做,因为 OSGi 的优势之一是生命周期管理,它允许您不留痕迹地删除捆绑包和服务。为此,框架会跟踪捆绑包所做的一切。如果在删除安装并启动它的捆绑包后保持可执行文件运行,则连接会丢失,并且它可能会继续运行,直到计算机重新启动(通常不是嵌入式系统的选项)。
归档时间: |
|
查看次数: |
4089 次 |
最近记录: |