如何改变束资源上即时在bndtools /菲利克斯环境

问题描述:

期间,我们需要改变特定文件的内容捆绑,并能够看到应用程序更改的文件内容而无需重新编译/ rebundling /包重新安装的发展。每当应用程序需要它的内容时,文件被Bundle.getEntry()读取。如何改变束资源上即时在bndtools /菲利克斯环境

使用Eclipse PDE和Equinox是不干简单,因为OSGi框架从Eclipse环境对待项目文件夹,解压缩捆绑推出。每次应用程序读取资源内容时,都会反映项目文件夹中文件的更改。

如果我理解正确的话,bndtools总是检测资源变化时重新打包捆绑。但对于包含数百个资源文件的项目,需要花费太多时间。是否有可能实现类似于Eclipse PDE中的行为?最好在Apache Felix中?我们仅在开发/调试期间才需要此类功能,并且只有在从IDE启动应用程序时才需要此功能资源永远不会改变生产。

要具体的 - 在我们的应用程序有少很多文件被编译成几个CSS。任何LESS文件更改后立即生成CSS。这是通过gulp和node.js实现的。当页面重新加载时,我们需要立即看到更改后的CSS文件(几乎)。请注意,我们没有使用OSGi HTTP服务。

不,这是不可能的。

如果Bndtools包装的时间过长,可能是一个迹象,你的包太大了,你应该尝试modularise更多。

+0

假设我们重新安排我们的捆绑包,以缩短打包时间。仍然 - 是否有“捆绑热替换”选项 - 即正在运行的应用程序将访问已更改的文件而无需重新安装捆绑包? – st33v3

+0

如果您在Bndtools中启动,那么是的,这是默认设置。每次更改时,套件都会进行热更新。 –

我有一些应用程序在那里我捆的资源开发和工作正常。 (请参阅使用此模型的OSGi enRoute。)只要捆绑不是那么大,它们就会在亚秒时间内建立。所以最好的建议是看看你是否可以在较小的多个模块中分解代码/资源。体积越小,速度越快。

如果这确实是一个问题,并且我认为这有点拼命尝试,那么您当然可以更改调用getEntry来查看文件系统的代码。在开发模式下(通过config admin设置),您可以从那里获取它。