可以在沙箱中运行的迷你OSGi(如AppEngine或WebStart)?

14

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

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

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

然而,OSGi标准包括一些功能,使得像Felix或Equinox这样的实现无法运行在沙盒化虚拟机之上,例如AppEngine或Webstart。在这些环境中,例如不可能直接访问文件系统,这就排除了用于存储持久化捆绑状态和本地库的OSGi捆绑缓存。

现在,我对使用本地库或持久性捆绑状态没有太大的兴趣。是否有某个框架实现了OSGi的核心捆绑和服务概念(最好是以兼容的方式,以便可以将OSGi捆绑包原样部署到其中),但可以在没有捆绑缓存(和其他沙箱中不可用的设施)的情况下工作?

我正在寻找类似于在AppEngine或WebStart上工作的Felix的受限版本。

当然,如果WebStart引擎和Google AppEngine可以提供开箱即用的OSGi框架服务,那就太好了......

更新:AppEngine的另一个非常限制性的方面是您无法启动新线程。这会阻止(除其他事项外)异步捆绑生命周期管理。显然,在WebStart中不存在此问题。

5个回答

2

1

1

我很确定它可以完成,而 这个 Eclipse 帮助页面 可能会帮助你入门。如果我理解正确的话,你的 bundle 必须被签名,并且你的 jnlp 文件需要请求所有权限。


你能详细说明一下吗?我的意思是:如果你的代码有合法的需求,为什么不要求用户授予权限来满足这些需求呢?在这个领域里有任何限制吗? - Vincent De Baere
应用程序代码不需要文件系统访问。但是OSGi在内部需要它。这是合法的需求吗?也许是,也许不是。 - Thilo

1

有意思。我希望他能写一篇博客来讲述这件事。我在这里开始了我的小实验:http://drop.io/appengine/ http://miniosgi.appspot.com/ - Thilo
他现在已经在博客上发表了这篇文章:http://eclipsesource.com/blogs/2009/04/10/osgi-on-appengine/ - Thilo
这就是问题所在,当人们拥有太多的博客时。要跟上所有这些博客是很困难的(特别是如果你并不认识他们 ;-)) 感谢指引。看起来他们还没有遇到线程问题,但却遇到了你面临的存储问题... - Mirko Jahn

0
如果您的唯一问题来自于捆绑缓存且您不需要它,您可以在Equinox或Felix中将此属性设置为null来摆脱它。我非常确定这个缓存对于Equinox的运行并不是必需的(不确定Felix是否也是如此)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接