Karaf 依赖equinox and felix,karaf 本Apache的很多项目作为基础框架
6月17日是Apache Karaf作为Apache顶级项目。Karaf是个运行时包,包含了一个OSGi框架(Equinox或Felix)、一个命令shell(Felix Gogo)及默认情况下内置的大量实用工具。
虽然Equinox与Felix可以单独使用,但Karaf旨在结合这两个框架出色的OSGi功能,并且保证其开箱即用。比如说,它包含了一个可配置的日志系统(基于Log4J,但针对众多通用的日志系统进行了包装)、通过SSH实现的远程访问、通过ConfigAdmin(源代码位于etc目录中)的配置以及内建的JAAS支持。不仅如此,Karaf还安装了Pax URL的MVN协议,这样就可以从Maven中央仓库(在必要的情况下会自动将其包装为bundle)安装bundle了。
此外,Karaf还提出了特性的概念,所谓特性就是bundle的集合,能以组的形式安装到运行着的OSGi运行时当中。特性包含了对obr、jetty以及spring的支持,做到了开箱即用。这样,如果需要安装多个bundle,但这些bundle之间并没有严格的运行期依赖,那么这种支持就可以大大简化这种情况。
在迁移到Apache Felix项目中前Karaf是ServiceMix Kernel,并且最终成为了Apache的顶级项目。Karaf还加入到了其他框架当中,如Eclipse Virgo和EclipseRT packages,提供了预先配置的框架与好用的OSGi bundle,这样在上手使用OSGi运行时时就会比以往更加简单。
http://felix.apache.org/downloads.cgi#framework
http://git.eclipse.org/c/equinox/rt.equinox.framework.git/commit/bundles/org.eclipse.osgi
Karaf作为一款成熟而且优秀的OSGi运行环境以及容器已经被诸多Apache项目作为基础容器,例如:Apache Geronimo, ApacheServiceMix, Fuse ESB,由此可见Karaf在性能,功能和稳定性上都是个不错的选择。
从四个方面对karf进行了分析,分别为karaf的环境变量、启动级别、karaf中出现的新概念和核心技术。
karaf涉及两个环境变量,分别为KARAF_HOME和KARAF_BASE,KARAF_HOME目录下存放的是启动karaf的必需文件,目录结构如下所示:
lib目录中包含三个文件,分别为karaf.jar、karaf-client.jar和karaf-jaas-boot.jar,这些文件会缺省加入karaf的CLASSPATH中。
etc目录中主要包含了OSGi Framework的选择配置,如使用何种OSGi Framework实现。
system目录中包含了eclipse和felix实现的OSGi Framework实现jar包。
karaf拥有6个启动级别,分别为5、8、10、15、30、40。其启动顺序是先启动数字小的级别。
- 5级,包含了符合OSGi URL Handlers Service Specification(OSGi Core规范中第11章)的mvn协议和wrap协议。
- 8级,包含了日志适配器(包含log4j,slf4j,commons-logging等)和日志服务。
- 10级,包含了规范API、配置管理服务(104)、用户偏好服务(106)。
- 15级,包含了热部署器。
- 30级,包含了GShell、Spring DM、JMX等。
- 40级,包含了GShell的启动器,运行至此级别时GShell转换为可用状态。
karaf设置了两个缺省级别,分别为60和100,60是指当有外部应用部署至karaf时,karaf将会把此应用的启动级别设置为60;100是指karaf启动时会缺省启动到级别100,即100以下的所有bundle都会被启动。
karaf中引用了feature的概念。feature是符合某个功能特性的bundle集的部署描述符,配置文件如下所示:
- <features>
- <repository>urn:r1</repository>
- <feature name="f1">
- <config name="c1">
- k=v
- </config>
- <bundle>b1</bundle>
- <bundle>b2</bundle>
- </feature>
- <feature name="f2">
- <feature>f1</feature>
- <bundle>b3</bundle>
- </feature>
- </features>
krarf可以静态的切换OSGi Framework实现,它的实现方法如下所示:
- 从配置文件中得到OSGi实现jar包的相对路径
- 利用反射机制将此jar包加入到当前ClassLoader
- 读取/META-INF/services/org.osgi.framework.launch.FrameworkFactory文件以得到FrameworkFactory的实现类名
- 通过反射机制将此类实例化后创建Framework实例并启动
Karaf 依赖equinox and felix,karaf 本Apache的很多项目作为基础框架的更多相关文章
- apache基金会开源项目简介
apache基金会开源项目简介 项目名称 描述 HTTP Server 互联网上首屈一指的HTTP服务器 Abdera Apache Abdera项目的目标是建立一个功能完备,高效能的IETF ...
- Apache部署django项目
在此之前,我们一直使用django的manage.py 的runserver 命令来运行django应用,但这只是我们的开发环境,当项目真正部署上线的时候这做就不可行了,必须将我们的项目部署到特定的w ...
- maven也是apache下的项目
maven也是apache下的项目,你看maven官网了,域名都在Apache下
- 为什么Nginx的性能要比Apache高很多?
为什么Nginx的性能要比Apache高很多? 这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的sele ...
- LAMP环境的搭建(四)----Apache下部署项目
根据前文完成了LAMP基本环境的安装,那么接下来就是部署线上的环境了. yum 安装的apache 目录存在于 /etc/httpd apache最重要的文件就是 httpd.conf. 目录再 ...
- 依赖注入(DI)与控制反转(IOC)基础知识
依赖注入(DI)与控制反转(IOC)基础知识 一.什么是依赖注入? 依赖注入英文是Dependcy Injection简写DI,依赖注入会将所依赖的对象自动交由目标对象使用,而不是让对象自己去获取. ...
- 用Apache Ivy实现项目里的依赖管理
Apache Ivy是一个管理项目依赖的工具. 它与Maven Apache Maven 构建管理和项目管理工具已经吸引了 Java 开发人员的注意.Maven 引入了 JAR 文件公共存储库的概念 ...
- 用Apache Ivy实现项目里的依赖管理 分类: C_OHTERS 2014-07-06 18:11 564人阅读 评论(0) 收藏
Apache Ivy是一个管理项目依赖的工具. 它与Maven Apache Maven 构建管理和项目管理工具已经吸引了 Java 开发人员的注意.Maven 引入了 JAR 文件公共存储库的概念 ...
- ubuntu下配置Apache+mod_wsgi+Django项目(个人测试)
经过了一个星期的摸索,查找资料以及实验,我搭建的环境基本能用(还有就是Django后台的静态文件加载的问题) 这里面只是介绍一下我的过程,因为对应Apache还不是很熟练,特别是配置文件.只能供大家参 ...
随机推荐
- ASP.NET MVC 中使用 AjaxFileUpload 插件时,上传图片后不能显示(预览)
AjaxFileUpload 插件是一个很简洁很好用的上传文件的插件,可以实现异步上传功能,但是在 ASP.NET MVC中使用时,会出现上传图片后不能正确的显示的问题,经过仔细排查,终于找到原因,解 ...
- Ov
- dell N1500 安全配置
http://www.dell.com/Support/Article/us/en/19/HOW10832 Setting a management IP address A reachable IP ...
- WinDbg调试CPU占用高的问题 试验+实战 《第七篇》
一.High CPU试验 1.示例代码 static void Main(string[] args) { Console.Clear(); Console.WriteLine("到命令行下 ...
- JS与JQ倒计时的写法
页面需要制作一个倒计时的功能:然后度娘了一遍,找到两种写法,原生JS与JQ 的,经过测试原生JS在IE可能会有不刷新的现象所以结合了一个大神的JQ写法修改好了一个. 原生JS写法: HTML: < ...
- ios开发经典语录锦集
原文链接: iPhone开发经典语录集锦 前言:iPhone是个极具艺术性的平台,相信大家在开发过程中一定有很多感触,希望能写出来一起交流,所以开了这个帖子,以后还会维护. 如果大家和我一样有感触的话 ...
- ASP.NET的SEO:目录
ASP.NET的SEO:基础知识 ASP.NET的SEO:Global.asax和HttpModule中的RewritePath()方法--友好的URL ASP.NET的SEO:正则表达式 ASP.N ...
- 十、Struts2结果集
十.Struts2结果集 1.Struts.xml配置文件 result元素:指定动作类的动作方法执行完后的结果视图. 属性: name:字符串,与 ...
- BF算法和KMP算法(javascript版本)
var str="abcbababcbababcbababcabcbaba";//主串 var ts="bcabcbaba";//子串 function BF( ...
- pm2 开机自启动如何弄?
1.使用pm2启动node :# pm2 start /home/wwwroot/web.js --watch 2.dump这些进程列表:# pm2 save 3.生成自启动脚本:# pm2 star ...