用于服务管理的Java开源框架

时间:2014-07-08 06:27:51

标签: java osgi apache-karaf

使用基于Java的大型分布式系统,因此将有多个服务在多台计算机上运行.....

寻找能够管理这些服务的开源框架(例如,启动/停止服务,远程安装新服务等)。

Apache Karaf似乎是一个不错的选择,但它下面使用了apache felix(一个OSGi参考实现)捆绑包,我很难真正理解它。特别是,在felix中定义和注册服务似乎很容易,但是如何远程调用这样的服务呢?你需要一个单独的RPC机制来实现吗?似乎很少有链接描述它。一般来说,人们如何使用OSGi? Apache felix过时了吗?

可以用来管理服务的任何其他框架,假设我将拥有自己的RPC层(比如基于RMI或基于Netty)?

1 个答案:

答案 0 :(得分:0)

我想你必须指定定义服务的方式。 有些服务,比如使用RPC机制的远程服务,例如EJB远程调用。 定义服务的另一种方法是使用SOAP(XML)或JAXRS(JSON)作为传输协议来讨论Web服务。 OSGi中的服务定义只是意味着API(服务定义)和实现的分离。总结一下,您可以将OSGi定义为同一VirtualMachine中的SOA for Applications。 (它提供了更多,但这是从服务角度看待它的一种方式)

Apache Karaf是一个OSGi服务器,可与Application Server相媲美,只适用于OSGi应用程序。它在可选择的OSGi框架之上带来了许多便利技术。那将是Apache Felix或Eclipse Equinox。两者都是OSGi框架,它们提供基本的OSGi基础架构 - 同一JVM中的SOA 现在它还有很多其他好处,比如启动和停止服务,更新服务。

考虑到RPC,可以通过将OSGi-Services与CXF结合起来轻松实现。可以轻松配置为将OSGi服务导出为CXF服务。 (这是特定的Karaf / CXF)

Apache Karaf本身也支持使用Apache Karaf Cellar进行群集,后者还提供DOSGi服务,以便更轻松地跨群集组进行服务通信。 DOSGi代表分布式OSGi,也可以通过使用CXF和许多其他实现来实现。

Apache Felix和OSGi一般都没有过时。许多Java EE应用服务器使用OSGi作为其模块化底层技术,占用空间更小 那将是GlassFish,Websphere,Geronimo等......