Apache Karaf 调研文档
Karaf 是一个基于 OSGi 的运行环境,提供了一个轻量级的 OSGi 容器,可以用于部署各种组件,应用程序。Karaf 提供了很多特性用于帮助开发者和用户更加灵活的部署应用,例如热部署、动态配置、几种日志处理系统、本地系统集成、可编程扩展控制台、ssh 远程访问、内置安装认证机制等等。
OSGi(Open Service Gateway Initiative)是 Java 动态化模块化系统的一系列规范。使用 OSGi 的基本目标是高度模块化、高度解藕、SOA、好维护。OSGi 最重要的特性是在 Java 中 ClassLoader 是非常重要的概念,而大家也知道,JVM 本身在ClassLoader 上并没有提供非常强大的功能,比如模块开发非常重要的模块隔离 ClassLoader 的机制、版本加载机制等。OSGI 基于 JVM ClassLoader 形成模块隔离 ClassLoader 的机制,同时也增强了 ClassLoader 按版本加载、属性过滤等多种功能。
Bundle 即 OSGi 中的模块。最终在 Karaf 容器中表现为一个 jar 包。1 个 bundle 对应 1 个 OSGi ClassLoader。Bundle 之间类的共享:通过 export package 的方式实现的,在 bundle 的 manifest 中通过指定 export package 的方式将特定的 package 与其他的 bundle 共享。而引用其他 bundle 所暴露的 package 有两种方式,第一是通过 import package 的方式,第二种是通过 required bundle 的方式。
Feature 即一组 bundle,其具备特定的功能。 Blueprint 是 OSGi 的 DI 框架或 OSGi 依赖注入的标准,非常类似于 spring 上下文。以 xml 的方式构建应用。用来处理 POJO 对象的装配,可以达到跨 bundle 访问对象。使用 blueprint 上下文将 xxService 作为一个 OSGi 服务发布。其有 2 个具体实现:Apache 的 Aries、Eclipse 的 Gemini。包含的子标签:bean、service、refrence、refrence-list 等等。
Configuration adminOSGi 容器包含一个非常好的配置规范:来自企业级规范的 Config Admin 服务。可以在 bundle 中自动部署配置文件。基本上在 Config Admin 服务中的配置是一个字典,这个字典包含了属性和他们的值。字典由持久性标识 PID 标识。PID 就是一个简单的字符串,它唯一标识了配置。文件结尾是.cfg,则它认为这是一个 config admin 资源,创建或更新由文件名确定的 pid 的 Config Admin 服务配置。
CXF 框架是一种基于 Servlet 技术的 SOA 应用开发框架,要正常运行基于 CXF 应用框架开发的企业应用,除了 CXF 框架本身之外,还需要 JDK 和 Servlet 容器的支持。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding 、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(CodeFirst)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。
karaf 常用命令包括查看所有 bundle 启动状态、查看所有配置文件列表、改变配置、启动 karaf 或者 karaf.bat、停止等。
1