为什么需要“OSGi中间件”
尽管在OSGi Runtime(Felix, Equinox等)的基础上,OSGi组织又规定了Blueprint规范以实现OSGi环境下的依赖注入,
但这还不够——没有提供类似Web开发框架那样的一些“平台级”的功能。比如日志,控制台,配置文件等。
很难想象没有Tomcat这样的Web中间件,开发Java Web应用的工作量有多大。同样的,OSGi应用也需要一种“中间件”,来实现各应用共性的一些功能,并管理应用的部署。
Apache Karaf就是这样的一个”OSGi中间件”。最早,Karaf只是Apache ServiceMix的Kernel子项目,后来独立出来成为Apache的顶级项目。
目前,Apache Karaf已经用于Apache Geronimo, Apache ServiceMix, Fuse ESB等项目。
Apache Karaf的主要竞争对手是Eclipse Virgo。
Apache Karaf的功能
Apache Karaf提供了如下“开箱即用”的功能:
热部署
尽管OSGi支持热部署,但并不是自动热部署,需要调用一些API去执行插拔的动作。Karaf在运行时可以自动处理[home]/deploy文件夹中的OSGi bundle,能够自动加载并在满足依赖关系时自动启动。
动态配置
Karaf在$KARAF_HOME/etc文件夹中存储配置文件。这些配置内容可以在Karaf运行时动态修改。
日志处理
基于Log4J的日志系统,同时支持多种日志API,如JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi等。
系统服务
Karaf可以作为系统服务运行。
控制台
可以在控制台进行服务管理、安装bundle等操作。还可以扩展自己的控制台命令。
可以通过SSH远程访问其他服务器上的Karaf控制台。
多实例管理
一个服务器上可以运行多个Karaf实例。对实例的管理可以在Karaf控制台中进行。
Bundle仓库
Karaf中内置了Pax URL的MVN协议&#