【问题标题】:Does OSGi-as-a-Service exist?OSGi 即服务是否存在?
【发布时间】:2013-09-20 10:37:33
【问题描述】:
是否有任何 Java PaaS 解决方案提供 OSGi 容器即服务?
- Google App Engine -->有自己的GAE服务器,修改后的Jetty
- CloudBees --> 拥有自己的 RUN@Cloud 容器,该容器被修改为 Tomcat
- OpenShift --> 使用 JBoss/Wildfly
-
??? --> 使用 Karaf 或 Equinox
如果不是一个成熟的 PaaS,它只是一个可集群/可扩展的 OSGi 主机。谷歌一无所获,所以我假设没有这样的事情。提前致谢!
【问题讨论】:
标签:
java
osgi
soa
apache-karaf
paas
【解决方案1】:
(与其他答案相反:)否,云中还没有 OSGi-as-a-Service。
我目前正在撰写关于在 PaaS 上移植 OSGi 应用程序的硕士论文,因此我对 PaaS 和 OSGi 进行了自己的研究。我没有在云中找到任何基于 OSGi 的令人满意的解决方案(但我确实找到了其他解决方案;)。问题是 OSGi 非常不受欢迎,而云是出了名的流行。
正如前面提到的其他问题,OSGi 是一个 Java 库。因此,您几乎可以在支持 Java 的任何地方进行设置。但这更像是作为 PaaS 解决方案的 IaaS 解决方案(您似乎正在寻找它,因为您要求 OSGi-as-a-service)。您需要自行设置 OSGi 框架,并且不支持部署包。这大大降低了这个解决方案。所以不,没有针对 OSGi 的特殊云服务,尽管 Java 有很多。
但是,O'Reilly 出版了 Paul Baker 和 Bert Ertman 的一本名为 Modular Cloud Apps with OSGi 的好书。这本书描述了他们在云中使用 OSGi 的类似 PaaS 的解决方案。基本上设置了一个 OSGi 包的存储库,它们存储了所有的东西。然后他们创建了一个云映像,其中只包含一个空的 OSGi 框架/服务器(就像 Apache Karaf,但他们编写了自己的工具,称为 Apache ACE,出于什么原因......)。他们能够启动这些映像,并且在机器启动后,他们只需将包从存储库部署到实例(通过 Web 界面)。
在 youtube 上还有一段他们的演示视频:https://www.youtube.com/watch?v=oN3jYKOQ1Tk
我认为这种策略是您可以获得的最好的类似 PaaS 的解决方案。但是 - 不幸的是 - 任何开箱即用的云供应商都不支持这一点。但是你可以很容易地在(例如)亚马逊上设置它。
编辑
还有一个用于 Cloud Foundry 的构建包,用于设置可以运行 OSGi 应用程序的 Virgo 服务器:https://github.com/glyn/virgo-buildpack
【解决方案3】:
有一个 OSGi 云服务的商业提供商 - Paremus。他们有 2 个云产品 - Nimble 和 Service Fabric。您可能想检查一下。 Nimble 产品提供有限的免费试用版。
【解决方案4】:
OSGi 几乎可以在任何提供 Java 支持的云提供商上使用,因为它本质上只是一个 Java 库。
Google App Engine 是个例外,因为它们不仅修改了 Jetty,还修改了 Java 本身并删除了创建线程和类加载器的能力,而这两者都是完整的 OSGi 支持所必需的。
【解决方案5】:
OSGi 基本上是一个 Java 库,可以在支持 JDK/JRE 的虚拟机上运行。但请记住,开箱即用的支持是您正在寻找的东西,您需要自定义您选择运行应用程序的 PaaS。我认为要做到这一点,您需要选择最容易配置和扩展的提供商。试试Jelastic。它是最容易完成并开始使用的。检查他们的jar uploads,我认为这足以满足您的需求。
让我知道您的想法以及此答案是否有帮助。
苏里亚