当前位置:文档之家› Karaf容器简介

Karaf容器简介

Karaf容器
-怀贝贝
Apache Karaf是什么?
OSGi应用的 “中间件”,来实现各应用共 性的一些功能,并管理应用的部署。类比 于Tomcat 用来管理部署java web 项目
Karaf容器的特点
Karaf, 一个基于OSGi的运行环境, 提供了一个 轻量级的OSGi容器,可以用于部署各种组件和 应用程序
A feature describes an application as: • a name • a version • a optional description (eventually with a long description) • a set of bundles • optionally a set configurations or configuration files • optionally a set of dependency features
application into a container is called the "provisioning".
Apache Karaf provides a simple
and flexible way to provision applications------------Apache Karaf "feature"
Feature
< <features xmlns='/xmlns/features/v1.0.0'> <feature name='my' version='1.0'> <feature>other</feature> <bundle>mvn:...bundleA</bundle> <bundle>http:...bundleB</bundle> <config></config> <configfile></configfile> </feature> </features>
自定义Fearture 安装
修改${karaf.home}/etc/org.apache.karaf.features.cfg文件 在featuresRepositories配置项后面加上:mvn:la/demofeatures/1.0.0/xml/features
修改${karaf.home}/etc/org.ops4j.pax.url.mvn.cfg文件, 在org.ops4j.pax.url.mvn.repositories配置项后面加上: http://192.168.1.100:8080/nexus/content/groups/public (maven私服的地 址)
自定义Fearture 安装
新建一个maven项目,groupId:la, artifactId:demo-features,version:1.0.0 1:resources目录下,新建http.cfg、jdbc.cfg 两个配置文件,内容随便 2:resources目录下,新建features.xml文件, 内容如下
• https:///developerworks/cn/java/j-lo-osgi/ (讲 解OSGI组件原理,还有一个小的注册服务使用服务的例 子)
Maven是一个项目管理和综合工具。Maven提供了开发人员构建一 个完整的生命周期框架。开发团队可以自动完成项目的基础工具建 设,Maven使用标准的目录结构和默认构建生命周期。 Maven的另外一个特色是利用中央构建资源库去访问您项目中需要 的.jars(像Perl's CPAN)。您只用列出需要的.jars及相应版本,Maven会 自动下载。当第一次运行Maven,或者运行一个新的goal时,可以 在控制台上看到中央构建资源库下载.jars的详细过程。
Bundle 运行 Bundle 的运行主要依靠于 OSGi 框架为其创建的类加载器(Class Loader),加载器负责查找和加载 Bundle 自身或所依赖的类资源。 ClassLoader 之间的依赖关系构成了一个有向图,如下图所示:
In OSGi, a bundle can depend to other bundles. So, it means that to deploy an OSGi application, most of the time, you have to firstly deploy a lot of other bundles required by the application. So, you have to find these bundles first, install the bundles. Again, these "dependency" bundles may require other bundles to satisfy their own dependencies. Deploying all the requirements (bundles and configurations) of an
bundle:osgi中的模块 feature:一组bundle,其具备特定的功 能,比如hibernate就算是一个feature, 其由多个bundle组成
feature-repo:feature资源库,由一组 feature组合而成,apache已经提供了一 部分,可以进入etc配置文件中查看
org.ops4j.pax.url.mvn.settings org.ops4j.pax.url.mvn.localRepository feature:install apache-commons-utils
参考资料
• /manual/latest/ (官方4.X文档) • /wobendiankun/article/details/30362717 (结合maven,karaf实战小demo) • /column/details/apachekaraf.html (karaf实 战博文教程)
bundle安装:将指定bundle安装到osgi环境中,-s 代表安装完后立即启动 该bunБайду номын сангаасle bundle:install -s mvn:commons-io/commons-io/2.2
feature repository安装:将指定repository的内容添加到feature list中 feature:repo-add pax-jdbc 0.6.0 feature查询:查询当前存在的feature,可以配合grep进行过滤 [feature:list feature安装 feature:install spring-web 指定的feature必须是当前已经存在,可以用feature:list查询到
安全层 模块层 生命周期层: 为bundle 提供了生命周期管理API 服务层: 为bundle开发者提供了一个动态、 简明且并且统一的编程模型,
Karaf容器的特点
系统服务: 自带service wraper功能,把karaf包装成系统服务,设置为守护进程,karaf项目可以一直运转 热部署 尽管OSGi支持热部署,但并不是自动热部署,需要调用一些API去执行插拔的动作。 动态配置 Karaf在$KARAF_HOME/etc文件夹中存储配置文件。这些配置内容可以在Karaf运行时动态修改。 日志处理 基于Log4J的日志系统,同时支持多种日志API,如JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi等。 控制台 可以在控制台进行服务管理、安装bundle等操作。还可以扩展自己的控制台命令。 可以通过SSH远程访问其他服务器上的Karaf控制台。 多实例管理 一个服务器上可以运行多个Karaf实例。对实例的管理可以在Karaf控制台中进行。 Bundle仓库 Karaf中内置了Pax URL的MVN协议,可以从Maven中央仓库安装bundle。 Bundle集合(Feature) 类似于Eclipse的Feature,Karaf中也支持Feature,即bundle的集合。使用Feature可以简化OSGi应用 的部署。
Karaf Web控制台的安装: feature:install webconsole 访问地址:http://localhost:8181/system/console 缺省用户名/密码:karaf/karaf
在karaf上部署一个示例应用程序 这里给出安装一个示例应用(Apache Camel application),更详细的参考Karaf user’s guide。 在karaf控制台中运行如下命令: karaf@root()> feature:repo-add camel 2.10.0 Adding feature url mvn:org.apache.camel.karaf/apache-camel/2.10.0/xml/features karaf@root()> feature:install camel-spring karaf@root()> bundle:install -s mvn:org.apache.camel/camel-example-osgi/2.10.1 安装Camel 2.10.0,然后使用Camel启动一个定时器,每个2秒钟在控制台输出一条消息。输出信息如下: >>>> SpringDSL set body: Fri Jan 07 11:59:51 CET 2011 >>>> SpringDSL set body: Fri Jan 07 11:59:53 CET 2011 >>>> SpringDSL set body: Fri Jan 07 11:59:55 CET 2011 先前的命令会下载 Camel features descriptor 和 安装示例feature: 停止和卸载示例应用程序: karaf@root()> bundle:stop org.apache.camel.camel-example-osgi 停止 Karaf 控制台中输入(Ctrl+D): ^D 或者运行如下的命令也可以停止Karaf: system:shutdown 如何清除Karaf状态? 正常情况下,Karaf会记住所安装的和启动的features和bundles。要想重置Karaf为初始状态,可以删除data命令 (删除之前先关闭Karaf)。也可以在启动karaf时使用clean选项: bin/karaf clean
相关主题