我想你必須指定你定義服務的方式。 有一些服務,如使用RPC機制的遠程服務,例如EJB遠程調用。 另一種定義服務的方法是使用SOAP(XML)或JAXRS(JSON)作爲傳輸協議來討論Web服務。 OSGi中的服務定義僅僅意味着API(服務定義)和實現的分離。總結一下,您可以將OSGi定義爲同一個VirtualMachine中的應用程序的SOA。 (它提供了更多,但這是從服務角度來看它的一種方式)
Apache Karaf是一個OSGi服務器,可以與應用程序服務器相媲美,只適用於OSGi應用程序。它在可選擇的OSGi框架之上帶來了許多便利的技術。那將是Apache Felix或Eclipse Equinox。兩者都是提供基本OSGi基礎架構的OSGi框架 - SOA在同一個JVM中。
現在還有很多其他好處,比如啓動和停止服務,更新服務。
考慮到RPC,可以通過將OSGi服務與CXF相結合來輕鬆實現。它可以很容易地配置爲導出OSGi服務作爲CXF服務。 (這是特定的Karaf/CXF)
Apache Karaf本身也支持與Apache Karaf Cellar進行集羣,Apache Karaf Cellar還提供DOSGi服務,以便跨羣集組更容易地進行服務通信。 DOSGi代表分佈式OSGi,這也可以通過使用CXF和許多其他實現來實現。
Apache Felix和OSGi總的來說已經遠遠落後了。許多Java EE應用程序服務器使用OSGi作爲其基礎技術,以實現模塊化,佔用空間更小。
這將是GlassFish,Websphere,Geronimo等......