java中间件karaf_Apache Karaf:OSGi中间件
为什么需要“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协议,可以从Maven中央仓库安装bundle。
Bundle集合(Feature)
类似于Eclipse的Feature,Karaf中也支持Feature,即bundle的集合。使用Feature可以简化OSGi应用的部署。
Karaf初体验
安装好Java环境,加压缩Karaf,执行$KARAF_HOME/bin/karaf,可以看到Karaf的启动界面:
如图的提示,使用可以列出所有可用的命令,所有的命令支持--help参数。
如果执行list命令,可以列出所有的bundles:
还有很多其他的命令,比如
bundle:install 安装bundle
feature:repo-add 安装feature库
feature:install 安装feature
等等。详情可以参考官方的Quick Start。
如果查看Karaf的目录,可以看到如下的目录结构:
/bin: 启动、停止、登录karaf控制台的脚本
/etc: 配置文件
/data: 存放运行时的工作文件,清空这个目录可以使Karaf回到初始状态
/cache: OSGi framework的bundle缓存
/generated-bundles: 开发用的临时目录
/log: 日志
/deploy: 用于bundle的热部署
/instances: 存放karaf的各个实例用到的数据
/lib: 启动Karaf时需要的一些库
/lib/ext: Karaf需要的扩展库
/lib/endorsed: Karaf对其他API的再封装(背书)的一些jar包
/system: OSGi bundles库,使用Maven 2仓库的结构
Karaf启动模式和实例常规模式(regular mode) 使用命令bin/karaf,可以在前端启动Karaf并进入控制台
服务模式(server mode) 使用命令bin/karaf server,可以在前端启动Karaf,但不进入控制台
后台模式(background mode) 使用命令bin/start,可以在后台启动Karaf。
如果安装了service-wrapper(可以在Karaf中执行feature:install service-wrapper),还可以将
Karaf安装为系统服务。
一个Karaf节点可以运行多个”Karaf实例”。实际上,默认情况下Karaf会启动一个名为root的实例。
实例是包含单独的配置文件、数据文件等信息的一个Karaf副本,每个实例可以单独启动或部署bundle。
Karaf控制台中提供了一些管理实例的命令:
instance:create 创建实例
instance:clone 从现有的实例克隆一个新的实例
instance:start 启动实例
instance:status 查看实例状态
instance:connect 连接(切换)到某个实例
instance:stop 停止实例
instance:destroy 删除实例
ssh、客户端和Web控制台
Karaf内置了一个SSHd server,可以通过ssh远程访问Karaf控制台。
要启动远程控制台服务,需要在控制台中启动bundle: bundle:restart -f org.apache.karaf.shell.ssh。此时,远端可以使用ssh远程访问控制台,比如: ssh -p 8101 karaf@localhost。默认karaf用户的密码也是karaf。ssh的用户、密码、端口等都可以在etc/org.apache.karaf.shell.cfg中配置。
Karaf的客户端’bin/client’即可以连接本地控制台,也可以通过ssh连接远程控制台,甚至可以执行单个的命令。比如:
1bin/client -u karaf -p karaf -a 8101 hostname osgi:shutdown
Karaf还可以安装Web控制台(feature:install webconsole)。通过Web控制台能够管理
Karaf的bundle、feature、实例、配置以及查看日志。启动web控制台后,默认可以通过http://localhost:8181/system/console
访问web控制台,默认的用户名/密码为karaf/karaf。Web控制台的配置文件位于etc/org.ops4j.pax.web.cfg。
bundle URL和bundle仓库
Karaf在安装bundle时,可以使用多种URL来定位bundle,比如:
http http://repo1.maven.org/maven2/org/apache/servicemix/nmr/org.apache.servicemix.nmr.api/1.0.0-m2/org.apache.servicemix.nmr.api-1.0.0-m2.jar
file file:base/bundles/org.apache.servicemix.nmr.api-1.0.0-m2.jar
maven库 mvn:org.apache.servicemix.nmr/org.apache.servicemix.nmr.api/1.0.0-m2
其中,maven库方式是使用maven库作为bundle仓库,从其中检索需要的bundle。与maven类似,可以自动解决bundle之间的依赖问题。
Karaf提供了OBR (OSGi Bundle Repository),能够管理bundle仓库。在控制台使用命令feature:install obr安装OBR之后,就可以:
增加新的bundle仓库
obr:url-add file:///user/.m2/repository/repository.xml
查看已安装的bundle仓库
obr:url-list
刷新仓库
obr:url-refresh
删除仓库
obr:url-remove
列出所有可用的bundle
obr:list
查找bundle
obr:find
OSGi应用,Karaf Feature和KAR
OSGi运行的基本单元是bundle,bundle之间有依赖关系。一组满足依赖关系的bundle集合,加上相关的配置信息,称为一个“OSGi应用”。
将OSGi应用部署到Karaf的行为称为“provisioning”。
为了简化OSGi应用的部署,Karaf定义了feature,用于描述OSGi应用的部署信息,包括:
名称
版本号
描述信息
bundle集合
配置文件信息
依赖的其他feature
可以看出,Karaf中的feature与Eclipse Feature非常类似。
Karaf控制台中提供了一系列的feature和feature库的管理命令,包括:
feature:info
feature:install
feature:list
feature:repo-add
feature:repo-list
feature:repo-refresh
feature:repo-remove
feature:uninstall
feature:version-list
由于feature中可能使用远端的bundle,Karaf提出了KAR格式,可以把一个bundle相关的所有资源打包在一起。
这类似于使用maven定义的web工程,和最终打包的war文件之间的关系。
Karaf控制台中,可以打包(kar:create)、安装(kar:install)、卸载(kar:uninstall)或列出(kar:list)KAR文件。
企业级特性
Karaf提供了一系列的功能,以支持企业级应用的开发,包括:
日志
Karaf提供了灵活的日志系统,支持
OSGi Log Service
Log4j
Commons Logging
Logback
SLF4J
java Util Logging
等日志框架。不管应用中使用了上述哪种日志框架,Karaf中都可以进行统一的管理,如log level, appender等。
安全
Karaf提供了基于JAAS(Java Authentication and Authorization Service)的安全框架,可以控制对OSGi service、控制台命令、JMX、Web控制台等资源的访问。并且在应用中也可以使用Karaf的安全框架。
Web
Karaf可以作为Web容器使用,完全支持JSP/Servlet规范。
Karaf的Web容器同时支持WAR和WAB的部署。
JDBC、JPA和JTA
Karaf中即可以使用JDBC直接连接数据库,
也可以使用JPA作为持久层框架。Karaf可以通过Blueprint管理JPA的persist Unit。
Karaf支持JTA,以实现容器管理的事务。
其他
Karaf还支持EJB、CDI、JMX、JMS等企业级特性。
Karaf内置支持主备方式的部署,以保证高可用。使用Apache Karaf Cellar可以实现Karaf的集群部署。
java中间件karaf_Apache Karaf:OSGi中间件相关推荐
- java数据库中间件实现,分布式数据库中间件DDM的实现原理
随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...
- 常见的中间件以及什么是中间件
常见的中间件以及什么是中间件 1. 中间件是什么 2. 为什么要用中间件 3. 中间件的使用场景 4. 主要的中间件的分类 1. 中间件是什么 中间件顾名思义就是系统软件和应用软件之间连接的软件,以便 ...
- 什么是中间件,常用的中间件有哪些?
什么是中间件? 顾名思义,中间件就是处于中间的软件,处于操作系统.数据库等系统软件和应用软件之间的一种起连接作用.中间件是一种独立的系统软件平台,为网络应用软件提供综合的服务和完整的计算环境,借助这种 ...
- karaf + osgi +maven 框架搭建
配置环境: maven:3.6 jdk:1.8 karaf-osgi 首先我们需要新建一个总项目,此项目里面没有任何的代码,只是在pom文件中进行版本控制 新建项目的时候不需要选择任何的框架,需要的时 ...
- laravel 中间件不生效_laravel中间件实战(luke)
简介 HTTP 中间件提供了为过滤进入应用的 HTTP 请求提供了一套便利的机制.例如,Laravel 内置了一个中间件来验证用户是否经过授权,如果用户没有经过授权,中间件会将用户重定向到登录页面,否 ...
- 东方通 中间件_东方通:中间件国产替代进程中的艰难领军者
引言 东方通自1992年成立以来,一直深耕基础软件中间件的产品及相关技术研发,为国产中间件的开创者,连续十几年保持中间件市场占有率国内厂商第一.其时,国外的中间件也才开始起步,可以说与国际厂商站在了同 ...
- koa2 mysql 中间件_Koa2 和 Express 中间件对比
koa2 中间件 koa2的中间件是通过 async await 实现的,中间件执行顺序是"洋葱圈"模型. 中间件之间通过next函数联系,当一个中间件调用 next() 后,会将 ...
- {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...
- python中间件有哪些_python 中间件
中间件 一.什么是中间件 中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django 的输入和输出.每个中间件组件都负责做一些特定的 ...
最新文章
- 计算机公式or,【转载】 odds、OR和RR的计算公式和实际意义
- Java日期格式转换
- 石头剪子布蜥蜴史波克python_C++字符串——石头剪刀布
- xampp如何上传文件到服务器,xampp安装到云服务器
- 以鶸ice为例,手撸一个解释器(一)明确目标
- Maven运行时异常java.lang.UnsupportedClassVersionError的解决方案
- Kibana:在 Kibana 中对数据进行深入分析 (drilldown)
- html点中弹出选择框,javascript点击弹出选择框
- 广域网的应用场景是什么?
- androidnbsp;网络联接nbsp;CMWAPnbsp;CTWAP
- 如何搞定你喜欢的美术妹纸?
- 计算机硬件 OR CX 1,计算机硬件复习提纲
- DDOS压力测试平台源码
- Linux红帽RHEL 7/8 系统重置root用户密码
- 【jiasuba】分享:键盘失灵烦恼多 教你轻松禁用原键盘
- Spring MVC框架——Web开发框架
- 计算机上如何配置扫描设置,在 MF Toolbox 中配置扫描设置
- Windows安装RabbitMQ
- 深度学习之Bottleneck Layer or Bottleneck Features
- 一款很好用的,免费的外网映射工具Ngrok 国内版,可以满足基本的开发测试需求