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

用于服务管理的Java开源框架,java,osgi,apache-karaf,Java,Osgi,Apache Karaf,在基于Java的大型分布式系统上工作,因此将有多个服务在多台机器上运行 正在寻找一个开源框架来管理这些服务。启动/停止服务,远程安装新服务等 ApacheKaraf似乎是一个不错的选择,但它的底层使用ApacheFelix作为OSGi参考实现包,我很难真正理解它。特别是,在felix中定义和注册服务似乎很容易,但是如何远程调用这样的服务呢?您需要一个单独的RPC机制来实现这一点吗?似乎很少有链接描述它。一般来说,人们是如何使用OSGi的?ApacheFelix过时了吗 假设我有自己的RPC层,比

在基于Java的大型分布式系统上工作,因此将有多个服务在多台机器上运行

正在寻找一个开源框架来管理这些服务。启动/停止服务,远程安装新服务等

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


假设我有自己的RPC层,比如说基于RMI或基于Netty的RPC层,那么可以使用任何其他框架来管理服务吗?

我想您必须指定定义服务的方式。 还有一些服务,比如使用RPC机制的远程服务,比如EJB远程调用。 定义服务的另一种方法是谈论Web服务,使用SOAPXML或JAXRSJSON作为传输协议。OSGi中有服务的定义,这意味着API服务定义和实现的分离。总之,您可以将OSGi定义为同一虚拟机中应用程序的SOA。它提供了更多,但这是从服务角度来看它的一种方式

ApacheKaraf是一个OSGi服务器,与应用程序服务器相当,只适用于OSGi应用程序。它在可选择的OSGi框架之上带来了许多方便的技术。这将是ApacheFelix或EclipseEquinox。两者都是OSGi框架,在同一个JVM中提供基本的OSGi基础设施——SOA。 现在它还有很多其他好处,比如启动和停止服务,更新服务

考虑到RPC,这很容易实现,例如通过将OSGi服务与CXF相结合。它可以很容易地配置为将OSGi服务导出为CXF服务。这是非常特定于KARF/CXF的

ApacheKaraf本身也支持使用ApacheKarafCell进行集群,ApacheKarafCell还提供了DOSGi服务,以便于跨集群组进行服务通信。DOSGi代表分布式OSGi,也可以通过使用CXF和许多其他实现来实现

ApacheFelix和OSGi总体上还远远没有过时。许多JavaEE应用服务器使用OSGi作为其底层技术,以实现模块化和更小的占地面积。 这将是GlassFish、Websphere、Geronimo等