问题 Spring Boot可以和OSGi一起使用吗?如果没有,任何计划有OSGi Spring Boot?


Spring Boot可以和OSGi一起使用吗?如果没有,任何计划有OSGi Spring Boot(Apache Felix或Eclipse Equinox)?在我看来,云应用程序必须是高度模块化的,并且可以像OSGi提供的那样进行更新。


7494
2018-06-17 03:21


起源



答案:


一种可能性是将OSGi嵌入到Spring Boot Application中,以便通过框架访问应用程序的某些部分。看到 https://stackoverflow.com/a/4673904/173101 了解如何以编程方式启动OSGi。

但总的来说,没有什么比“OSGi-Support”更像了。 OSGi可以集成到每个Java应用程序中,反之亦然,您可以将每个Java代码(也是您的Spring-Boot应用程序)打包到一个OSGi包中,以便在OSGi容器中启动它(尽管它可能不会太多感觉到了)。


6
2018-06-17 12:56



我对你的回答有疑问。您写道,每个Java代码(也是Spring-Boot应用程序)都可以打包到OSGi-bundle中,以便在OSGi容器中启动它。问题是,如何将Spring-Boot应用程序打包到OSGi-bundle中? - xmlParser


答案:


一种可能性是将OSGi嵌入到Spring Boot Application中,以便通过框架访问应用程序的某些部分。看到 https://stackoverflow.com/a/4673904/173101 了解如何以编程方式启动OSGi。

但总的来说,没有什么比“OSGi-Support”更像了。 OSGi可以集成到每个Java应用程序中,反之亦然,您可以将每个Java代码(也是您的Spring-Boot应用程序)打包到一个OSGi包中,以便在OSGi容器中启动它(尽管它可能不会太多感觉到了)。


6
2018-06-17 12:56



我对你的回答有疑问。您写道,每个Java代码(也是Spring-Boot应用程序)都可以打包到OSGi-bundle中,以便在OSGi容器中启动它。问题是,如何将Spring-Boot应用程序打包到OSGi-bundle中? - xmlParser


实际上有很多很好的理由将Spring Boot部署到OSGi中,主要的是性能,特别是如果你的Spring Boot服务是一个功能服务(即它启动,返回结果,结束)的启动性能。我目前在Spring Boot中进行beta测试的应用程序在部署到Equinox的约0.5秒内启动,而自行启动时为3.5秒。其他原因可能是与基于OSGi的应用程序或Java EE服务器的集成。

也就是说,你也可以从Spring Boot运行OSGi,出于性能原因我可能更喜欢Concierge作为一个超过Felix或Equinox的OSGi实现,原因很简单(除非你的应用程序需要更大实现的所有功能)。

另一种方法是将Spring Boot应用程序使用的Spring库包装到MSF4J(来自WSO2)。这并不需要太多工作,并且可以使用10倍的内存使用速度使启动速度提高10倍。


5
2017-08-16 12:44



你的观点跟随的任何链接? @Andew Glynn - tero17


不,它不支持OSGi。 Spring Boot旨在将微服务作为打包应用程序创建,每个依赖项甚至servlet容器都打包在可执行JAR中,因此它具有高度模块化和可更新性,无需提供和配置OSGi容器。


2
2018-06-17 05:45



如果想要将微服务应用程序作为独立应用程序分发,该怎么办?以克拉为例。将每个弹簧启动微服务部署为OSGi捆绑包会很好... - Patrice