可以在沙盒中运行的Mini-OSGi(如AppEngine或WebStart)?

我非常喜欢OSGi实现的模块化bundle的概念。

我也喜欢“托管部署”服务,如Google AppEngine(用于Web应用程序)或Java WebStart(用于客户端软件)。

这两个想法似乎在概念上相互补充。

但是,OSGi标准包含一些function,使得像Felix或Equinox这样的实现无法在沙盒虚拟机(如AppEngine或Webstart)之上运行。 在这些环境中,无法直接访问文件系统,例如,这会阻止用于存储持久性捆绑状态和本机库的OSGi捆绑缓存。

现在,我没有兴趣使用本机库或具有持久的bundle状态。 是否有一些框架实现了OSGi的核心包和服务概念(理想情况是以兼容的方式使OSGi包可以按原样部署到它中),但是可以在没有包缓存的情况下工作(以及沙箱中没有的其他工具) ?

我正在寻找类似于在AppEngine或WebStart上运行的有限版本的Felix。

当然,如果WebStart引擎和Google AppEngine刚刚提供了开箱即用的OSGi框架服务,那也很棒……

更新: AppEngine的另一个非常有限的方面是你无法启动新的线程。 这可以防止(除其他外)异步bundle生命周期管理。 显然不是WebStart的问题。

EclipseSource有一个修补版的osgi引擎(有点)在AppEngine中工作,从博客下载项目zip文件: http : //eclipsesource.com/blogs/2009/04/10/osgi-on-appengine/

我很确定它可以完成,而这个eclipse帮助页面可能会让你开始。 如果我理解正确,您的捆绑包必须签名,并且您的jnlp文件需要请求所有权限。

你应该和Chris Aniszczyk谈谈。 他与Equinox和Knopflerfish合作。 请看这里的截图: http : //twitpic.com/300lk他正在计划博客,但我猜他现在很忙。 以下是他博客的链接: http : //mea-bloga.blogspot.com/

http://code.google.com/p/lemmon/

但是,请检查URLStreamHandler问题。

没有个人经验,只是一条可能对您有帮助的线索。

如果您的唯一问题来自捆绑缓存并且您不需要它,您可以通过在Equinox或Felix中将此属性设置为null来摆脱它吗? 我很确定这个缓存不是必须运行Equinox(不知道Felix)