karaf 是开发框架还是容器框架

Apache &mark&Karaf&/mark&用户指导
&由& &发布
Apache Karaf用户指导
一 安装karaf
本章讲述如何在windows和unix平台安装Apache Karaf,这里你将知道预先要安装什么软件,如何下载并且安装Karaf。
预安装需求
- 20M磁盘剩余空间。
操作系统:
Windows:Windows vista,Windows XP sp2,windows2000。
- Unix:Ubuntu Linux,Powerdog Linux,MacOS,AIX,HP-UX,Solaris,任何支持java的unix平台。
Java SE 1.5x或者更高。
- 环境变量JAVAHOME必须设置为java运行时的安装目录,比如C:\Program Files\Java\jdk1.6.026。按住windows和break键切换到高级选项,点击环境变量,把上面的路径加入到变量中。
从源码构建
如果你想从源码构建KARAF,需求会有点不同:
- 200M磁盘空间便于apache karaf源码展开或者是SVN的验证,以及maven构建和依赖maven组件的下载。
JDK 1.5或者是更高。
Apache maven 2.2.1.
在windows上构建
这过程说明如何下载和安装windows上的源码文件。注:Karaf需要java5编译,构建和运行。
在浏览器输入http://karaf.apache.org/index/community/download.html.
滚动到“Apache Karaf”区域选择需要的链接。源码文件名称类似于:apache-karaf-x.y-src.zip.
解压缩zip文件到你选择的目录中,请记住非法java路径的限制,比如!,%等。
用maven 2.2.1 或者更高的java5来构建karaf。 构建karaf的方法如下:
[karaf安装路径]\src
这两个步骤均需要10到15分钟。
用zip工具加压文件,windows的路径是 [karaf安装路径]\assembly\target\apache-karaf-x.y.zip
转到开始karaf一节
在Unix上构建
本过程将讲述如何在unix系统上下载和安装源码文件。这里假定unix机器上有浏览器,没有浏览器的请参照前面二进制unix安装区域。注:Karaf需要java5编译,构建和运行。
在浏览器输入http://karaf.apache.org/ download.html.
滚动到“Apache Karaf”区域选择需要的链接。源码文件名称类似于:apache-karaf-x.y-src.zip.
解压缩zip文件到你选择的目录中,例如:gunzip apache-karaf-x.y-src.tar.gz tar xvf apache-karaf-x.y-src.tar请记住非法java路径的限制,比如!,%等
用maven构建karaf建议方法如下:
[karaf安装路径]\src
5.解压缩刚刚创建的文件
[karaf安装路径]/assembly/target
gunzip apache-karaf-x.y.tar.gz
tar xvf apache-karaf-x.y.tar
转到开始karaf一节
Windows安装过程
这里说明如何在windows系统上下载和安装二进制文件。
在浏览器输入http://karaf.apache.org/index/community/download.html.
滚动到“Apache Karaf”区域选择需要的链接。源码文件名称类似于:apache-karaf-x.y-src.zip.
解压缩zip文件到你选择的目录中,请记住非法java路径的限制,比如!,%等。
转到开始karaf一节
可选:在Windows中启用彩色控制台输出
- 提示:如果你安装karaf到很深的路径或者是非法的java路径,!,%等,你可以创建一个bat文件来执行:subst S: "C:\your very % problematic path!\KARAF" 这样karaf的路径是 s: 这样的短类型。
Unix安装过程
这里属于如何在unix系统上下载和安装二进制文件。
在浏览器输入http://karaf.apache.org/ download.html.
滚动到“Apache Karaf”区域选择需要的链接。源码文件名称类似于:apache-karaf-x.y.tar.gz
解压缩zip文件到你选择的目录中,例如:gunzip apache-karaf-x.y.tar.gz
tar xvf apache-karaf-x.y.tar
请记住非法java路径的限制,比如!,%等。
转到开始karaf一节
安装后的步骤
在开始使用karaf之前强烈建议设置指向JDK的JAVA_HOME用来定位java可执行文件,并且应该配置为指向已安装java se5或者6的根目录。
Karaf安装目录结构如下:
/bin: 启动脚本
/etc: 初始化文件
/data: 工作目录
/cache: OSGi框架包缓存
/generated-bundles: 部署使用的临时文件夹
/log: 日志文件
/deploy: 热部署目录
/instances: 含有子实例的目录
/lib: 包含引导库
/lib/ext:JRE扩展目录
/lib/endorsed: 赞同库目录
/system: OSGi包库,作为一个Maven2存储库
Data文件夹包括karaf所有的工作和临时文件,如果你想从一个初始状态重启,你可以清空这个目录,这和“恢复初始化设置”一样的效果。
启动和停止karaf
本章介绍如何启动和停止Apache Karaf和各种可用的选项。
Windows下:打开一个控制台窗口,更改到安装目录,并运行Karaf。对于二进制文件,运行
[karaf安装目录]
然后输入:bin\karaf.bat
Linux下:打开一个控制台窗口,更改到安装目录,并运行Karaf。运行
[karaf安装目录]
然后输入:bin\karaf
警告:karaf运行后不要关闭控制台,否则会终止karaf(除非用非控制台启动karaf)。
非控制台启动karaf
没有控制台也可以启动karaf,它总可以是用远程SSH访问,是用下面的命令:
bin\karaf.bat server
或者是unix下:bin/karaf server
在后台启动karaf
采用以下命令可以轻易地在后台进程启动karaf:
Bin\start.bat
或者在unix下:bin/start
重置模式启动karaf
清空[karaf安装目录]\data文件夹就可以简单的在重置模式启动karaf,为方便起见,在karaf启动脚本使用以下参数也可以实现重置启动:
bin/start clean
无论是windows还是unix,你都可以在karaf控制台采用以下命令来停止它:
osgi:shutdown,
或者简单的是:shutdown。
Shutdown命令会询问你是否真的想要停止,如果你确认停止并且拒绝确认信息,你可以用-f或者-force选项:
osgi:shutdown –f,
也可以用时间参数来延迟停止,时间参数有不同的形式。
首先,可以是绝对时间各式hh:mm。第二,也可以是+m,其中m是等待的分。现在就是+0。
下面的命令可以在10:35am关闭karaf:
osgi:shutdown 10:35。
下面的命令在10分钟后关闭karaf:
osgi:shutdown +10。
如果你在主控制台运行,用注销或者Ctrl+D退出控制台也可以终止karaf实例。
在控制台你可以运行如下命令:
bin\stop.bat
或者在unix下:
bin/stop。
使用控制台
查看可用的命令
按提示键tab可以在控制台看到可用的命令列表:
root@root& &tab&Display all 182 possibilities? (y or n)
admin:change-opts
admin:change-rmi-registry-port
admin:change-ssh-port
admin:connect
admin:create
admin:destroy
admin:list
admin:rename
admin:start
admin:stop
bundle-level
change-opts
change-rmi-registry-port
change-ssh-port
commandlist
config:cancel
config:edit
config:list
config:propappend
config:propdel
config:proplist
config:propset
config:update
create-dump
dev:create-dump
dev:dynamic-import
dev:framework
dev:print-stack-traces
dev:restart
dev:show-tree
display-exception
dynamic-import
features:addurl
features:info
features:install
features:list
features:listrepositories
features:listurl
features:listversions
features:refreshurl
features:removerepository
features:removeurl
features:uninstall
jaas:cancel
jaas:commandlist
jaas:manage
jaas:roleadd
jaas:roledel
jaas:update
jaas:useradd
jaas:userdel
jaas:userlist
listrepositories
listversions
log:display
log:display-exception
osgi:bundle-level
osgi:headers
osgi:install
osgi:refresh
osgi:resolve
osgi:restart
osgi:shutdown
osgi:start
osgi:start-level
osgi:uninstall
osgi:update
packages:exports
packages:imports
print-stack-traces
propappend
refreshurl
removerepository
shell:clear
shell:each
shell:echo
shell:exec
shell:grep
shell:head
shell:history
shell:info
shell:java
shell:logout
shell:more
shell:printf
shell:sleep
shell:sort
shell:tail
start-level
root@root&
获得命令的帮助
要查看一个特定的命令的帮助,在命令后加--help或使用help命令加上命令的名称:
karaf@root& features:list --help
features:list
列出库中定义的所有功能。
features:list [options]
显示此帮助信息
-i, --installed
只列出已安装的功能列表
所有可用命令列表和它们的用法,也可以在一个专门的章节。
你在开发指南会获得更多的shell语法的深入引导。
如开发指南解释的那样,控制台可以很容易的被新命令扩展。
网络控制台
Karaf Web控制台提供了一个运行时的图形概述。
你可以是用它来:
安装和卸载功能
启动,停止,安装捆绑
创建子实例
查看日志信息
安装web控制台
默认情况下web控制台是不安装的,安装请在karaf提示中运行以下命令:
root@karaf> features:install webconsole
访问Web控制台
访问本地运行的一个karaf实例,在浏览器输入:
http://localhost:8181/system/console
使用karaf用户名和karaf密码来登录系统,如果你修改过用户名或密码,请是用修改后的。
改变web控制台端口号
默认情况下,控制台在8181端口运行,你可以通过创建属性文件etc/org.ops4j.pax.web.cfg并在后面添加如下属性设置(改成任意你想要的端口号)来改变端口:
org.osgi.service.http.port=8181
六 远程控制台
使用远程实例
初始化远程实例
用它本地控制台管理karaf实例不总是有意义的,你可以用远程控制台远程管理karaf。
当你启动karaf时,它使任何其他Karaf控制台或纯SSH客户端可以通过SSH访问远程控制台。远程控制台提供本地控制台的所有功能,并通过运行它里面的容器和服务给远程用户完全控制。
SSH主机名和端口号在配置文件[karaf安装目录]/etc/org.apache.karaf.shell.cfg用以下默认值配置:
sshPort=8101
sshHost=0.0.0.0
sshRealm=karaf
hostKey=${karaf.base}/etc/host.key
你可以用初始化命令或者编辑上面的文件更改这个配置,但是需要重启ssh控制台以便它是用新的参数。
# define helper functions
bundle-by-sn = { bm = new java.util.HashM
each (bundles) { $bm put ($it symbolicName) $it } ; $bm get $1 }
bundle-id-by-sn = { b = (bundle-by-sn $1) ; if { $b } { $b bundleId } { -1 } }
# edit config
config:edit org.apache.karaf.shell
config:propset sshPort 8102
config:update
# force a restart
osgi:restart --force (bundle-id-by-sn org.apache.karaf.shell.ssh)
远程连接和断开
使用ssh:ssh命令
你可以使用ssh:ssh命令来连接远程karaf控制台。
karaf@root> ssh:ssh -l karaf -P karaf -p 8101 hostname
注意:默认的密码是karaf,但是我们强烈建议个更改。在安全模块查看更多信息。
为了确定你已经连接到正确的karaf实例,输入ssh:info在karaf提示符。返回当前连接的实例的信息,如下所示。
Karaf home
/local/apache-karaf-2.0.0
Karaf base
/local/apache-karaf-2.0.0
OSGi Framework
org.eclipse.osgi - 3.5.1.R35x_v
Java Virtual MachineJava HotSpot(TM) Server VM version 14.1-b02
使用karaf客户端
Karaf允许你安全的连接到远程karaf实例而不必运行本地karaf实例。
例如,在同一台机器上快速连接在server模式下运行的karaf实例,在karaf安装目录运行以下命令:
bin/client。
通常情况下,你需要提供主机名,端口,用户名和密码来连接到远程实例。如果你使用的客户端在一个较大的脚本,你可以附加控制台命令如下:
bin/client -a 8101 -h hostname -u karaf -p karaf features:install wrapper
显示可用的客户端选项,输入:
& bin/client --help
Apache Karaf client
-a [port] specify the port to connect to
-h [host] specify the host to connect to
-u [user] specify the user name
-p [password] specify the password
--helpshows this help message
-vraise verbosity
-r [attempts] retry connection establishment (up to attempts times)
-d [delay]intra-retry delay (defaults to 2 seconds)
[commands]commands to run
如果没有指定的命令,客户端将在互动模式。
使用纯SSH客户端
你也可以使用你的unix系统中的纯SSH客户端或者windows SSH客户端像putty来连接。
~$ ssh -p 8101 karaf@localhost
karaf@localhost's password:
从远程控制台断开
按Ctrl+D,shell:logout或者简单的在karaf提示符输入logout就可以断开远程控制台。
关闭远程实例
使用远程控制台
如果你已经用ssh:ssh命令或者karaf客户端连接到远程控制台,你可以用使用osgi:shutdown命令来停止远程实例。
注意:在远程控制台按Ctrl + D键,简单地关闭远程连接并返回到本地shell。
使用karaf客户端
使用karaf客户端停止远程实例,在karaf安装目录/lib目录运行以下命令:
bin/client -u karaf -p karaf -a 8101 hostname osgi:shutdown
管理子实例
一个Karaf的子实例是一个副本,你可以分别启动和部署应用程序。实例不包含的完整副本Karaf,但只有一个配置文件和数据文件夹的副本,其中包含了所有运行中的信息,日志文件和临时文件。
使用管理控制台命令
管理控制台命令允许您在同一台机器创建和管理Karaf实例。每一个新的运行时是运行时创建的子实例。您可以轻松地使用的名称管理子实例,而不是网络地址。有关管理命令的详细信息,请参阅管理命令。
创建子实例
你可以在karaf控制台输入admin:create创建新的运行时实例.
如下例子所示,admin:create将使运行时在活动的运行时{实例/名称}目录创建新的运行时安装。新的实例是一个新的karaf实例并且分配一个SSH端口号基于始于8101的增量和一个RMI注册端口号基于始于1099的增量。
karaf@root&admin:create finn
Creating new instance on SSH port 8106 and RMI port 1100 at: /home/fuse/esb4/instances/finn
Creating dir:
/home/fuse/esb4/instances/finn/bin
Creating dir:
/home/fuse/esb4/instances/finn/etc
Creating dir:
/home/fuse/esb4/instances/finn/system
Creating dir:
/home/fuse/esb4/instances/finn/deploy
Creating dir:
/home/fuse/esb4/instances/finn/data
Creating file: /home/fuse/esb4/instances/finn/etc/config.properties
Creating file: /home/fuse/esb4/instances/finn/etc/java.util.logging.properties
Creating file: /home/fuse/esb4/instances/finn/etc/org.apache.felix.fileinstall-deploy.cfg
Creating file: /home/fuse/esb4/instances/finn/etc/org.apache.karaf.log.cfg
Creating file: /home/fuse/esb4/instances/finn/etc/org.apache.karaf.features.cfg
Creating file: /home/fuse/esb4/instances/finn/etc/org.ops4j.pax.logging.cfg
Creating file: /home/fuse/esb4/instances/finn/etc/org.ops4j.pax.url.mvn.cfg
Creating file: /home/fuse/esb4/instances/finn/etc/startup.properties
Creating file: /home/fuse/esb4/instances/finn/etc/system.properties
Creating file: /home/fuse/esb4/instances/finn/etc/org.apache.karaf.shell.cfg
Creating file: /home/fuse/esb4/instances/finn/etc/org.apache.karaf.management.cfg
Creating file: /home/fuse/esb4/instances/finn/bin/karaf
Creating file: /home/fuse/esb4/instances/finn/bin/start
Creating file: /home/fuse/esb4/instances/finn/bin/stop
karaf@root&
改变子实例端口号
你可以使用admin:change-ssh-port命令来改变分配给子实例的SSH端口号。命令语法是:
admin:change-ssh-port 实例 端口号,需要注意的必须停止子实例才能运行此命令。
同样,你可以使用admin:change-rmi-registry-port命令改变分配给子实例的RMI注册端口号。命令的语法是:
admin:change-rmi-registry-port instance port,需要注意的必须停止子实例才能运行此命令。
启动子实例
新的子实例在停止状态下被创建,用admin:start命令来启动子实例并使之准备主机应用。这个命令需要一个标识你想启动的子实例的instance-name参数。
列出所有容器实例
要查看一个特定的安装下运行的所有Karaf实例的列表,使用admin:list命令。
karaf@root&admin:list
1106] [Started ] [10628] harry
1099] [Started ] [20076] root
1105] [Stopped ] [15924] dick
1104] [Started ] [18224] tom
karaf@root&
连接到子实例
你可以使用admin:connect命令连接到开始的子实例远程控制台,这需要三个参数:
admin:connect [-u username] [-p password] instance,
一旦你连接到子实例,karaf提示符显示现在实例的名字,如下:
karaf@harry>
停止一个子实例
在实例自己内部停止一个子实例,输入osgi:shutdown或者简单的shutdown。
远程停止子实例,换句话说,从父或者兄弟实例,使用admin:stop:
admin:stop instance
注销一个子实例
你可以使用admin:destroy命令永久的删除一个停止的子实例:
*admin:destroy instance*
请注意只有停止的实例可以被注销。
使用管理脚本
你也可以管理本地的karaf实例,在karaf安装目录/bin目录下的管理员脚本提供了像管理员控制台相同的命令,除了admin:connect。
& bin/admin
Available commands:
change-ssh-port - Changes the secure shell port of an existing container instance.
change-rmi-registry-port - Changes the RMI registry port (used by management layer) of an existing container instance.
create - Creates a new container instance.
destroy - Destroys an existing container instance.
list - List all existing container instances.
start - Starts an existing container instance.
stop - Stops an existing container instance.
Type 'command --help' for more help on the specified command.
例如,列出所有本机器的karaf实例,输入:
bin/admin list
管理用户名和密码
默认安全配置使用一个位于 karaf安装目录/etc/users.properties属性文件存储授权的用户和他们的密码。
默认的用户名是karaf,与之相关联的密码也是karaf。我们强烈建议在将karaf转移到产品前通过编辑上面的文件修改默认密码。
在karaf中用户现在被使用在三个地方:
访问SSH控制台
访问JMX管理层
访问web控制台
这三种方式的全部委托基于安全认证的相同的JAAS。
users.properties文件包含一或者多行,每行都定义了一个用户,密码和相关的角色。
user=password[,role][,role]...
JAAS角色可以被各种组件使用。三个管理层(SSH,JMX和web控制台)都使用用基于认证系统的全局角色。默认的角色名称在etc/system.properties中使用karaf.admin.role系统属性配置,并且默认值是admin。对管理层进行身份验证的所有用户必须有这个角色的定义。
这个值的语法如下:
[classname:]principal
其中classname是主要对象的类名(默认以org.apache.karaf.jaas.modules.RolePrincipal),主要是这一类(默认为admin)的主要的名称。
注意,可以使用以下配置ConfigAdmin对于一个给定的层改变角色:
org.apache.karaf.shell
org.apache.karaf.management
org.apache.karaf.webconsole
启用密码加密
为了避免密码是纯文本,密码可以加密存储在配置文件中。
这可以通过以下命令轻易的实现:
# edit config
config:edit org.apache.karaf.jaas
config:propset encryption.enabled true
config:update
# force a restart
dev:restart
用户第一次登录,密码将在 etc/users.properties 配置文件中被自动的加密。加密密码在前面加上{CRYPT},因此很容易识别。
更多关于更改默认领域或者部署新领域信息将会在开发者指南中被提供。
部署安全供应商
有些应用程序需要特定的安全性提供者可用,如BouncyCastle。JVM在这些jar包的使用上施加一些限制:他们必须签署和引导类路径上可用。部署这些供应商的方法之一是把他们放在位于$ JAVAHOME/ JRE/ lib / ext的JRE文件夹中并且修改安全策略配置($JAVAHOME/jre/lib/security/java.security)以登记等供应商。
虽然这种方法工作的很好,他将会有全局的影响并且需要你配置所有相应的服务器。
Karaf提供了一个简单的方式来配置额外的安全性提供者:
把你的供应商jar放在karaf-install-dir/lib/ext中
修改初始化文件 karaf-install-dir/etc/config.properties ,添加如下属性:
org.apache.karaf.security.providers = xxx,yyy
这个属性的值是一个逗号分隔的提供商类名的注册名单。
例如:org.apache.karaf.security.providers = org.bouncycastle.jce.provider.BouncyCastleProvider
此外,你可能想向系统中捆绑的供应商的类提供访问,使所有束可以访问那些。它可以通过在相同的配置文件中修改org.osgi.framework.bootdelegation 属性来实现:
org.osgi.framework.bootdelegation = ...,org.bouncycastle*
九 故障转移部署
Karaf提供故障转移功能,使用一个简单的锁定文件系统或JDBC锁定机制。在这两种情况下,一个容器级锁系统允许绑定预装到副Karaf实例,以提供更快的故障转移性能。
简单文件锁定
简单文件锁定机制用于驻留在同一台主机的实例故障转移配置。
要使用这个功能,按照如下形式编辑$KARAF_HOME/etc/system.properties文件中的每个系统上的主/从设置:
karaf.lock=true
karaf.lock.class=org.apache.felix.karaf.main.SimpleFileLock
karaf.lock.dir=&PathToLockFileDirectory&
karaf.lock.delay=10
说明:确保karaf.lock.dir属性指向相同的主从实例目录,以便当主释放从,从只能获得锁定。
JDBC锁定机制的目的就是为了存在单独机器上的故障转移配置。在此部署中,主实例拥有一个Karaf锁定数据库上的表上的锁,如果主失去了锁,等待从进程获得锁定表,并全面启动它的容器。
要使用这个功能,按照如下形式设置每个系统上的主/从设置:
更新CLASSPATH包含JDBC驱动程序
更新KARAF_HOME/bin/ karaf脚本有独特的JMX远程端口设置,如果实例驻留在同一主机上
更新KARAF_HOME的/ etc/ system.properties文件如下:
karaf.lock=true
karaf.lock.class=org.apache.felix.karaf.main.DefaultJDBCLock
karaf.lock.level=50
karaf.lock.delay=10
karaf.lock.jdbc.url=jdbc:derby://dbserver:1527/sample
karaf.lock.jdbc.driver=org.apache.derby.jdbc.ClientDriver
karaf.lock.jdbc.user=user
karaf.lock.jdbc.password=password
karaf.lock.jdbc.table=KARAF_LOCK
karaf.lock.jdbc.clustername=karaf
karaf.lock.jdbc.timeout=30
如果JDBC驱动程序不在classpath中会失败。
将创建数据库名称“sample”,如果它不存在于数据库。
Karaf的第一个实例来获得锁定表的是主实例。
如果数据库连接丢失,主实例尝试正常关闭,主数据库服务恢复时允许一个从的实例成为主,前主将需要手动重新启动。
Oracle的JDBC锁定
在JDBC锁定情况下如果你采用oracle作为你的数据库,在$KARAF_HOME/etc/system.properties 文件中的karaf.lock.class 属性必须指向org.apache.felix.karaf.main.OracleJDBCLock。
否则,对于你的设置初始化system.properties文件是正常的,例如:
karaf.lock=true
karaf.lock.class=org.apache.felix.karaf.main.OracleJDBCLock
karaf.lock.jdbc.url=jdbc:oracle:thin:@hostname:1521:XE
karaf.lock.jdbc.driver=oracle.jdbc.OracleDriver
karaf.lock.jdbc.user=user
karaf.lock.jdbc.password=password
karaf.lock.jdbc.table=KARAF_LOCK
karaf.lock.jdbc.clustername=karaf
karaf.lock.jdbc.timeout=30
正如默认的JDBC锁定设置,Oracle JDBC驱动包必须在calsspath中,为了确保如此你可以在karaf启动之前复制ojdbc14.jar到karaf的lib文件夹下。
说明:karaf.lock.jdbc.url 需要活动的SID,这意味着在使用这个特定的锁之前你必须手动创建数据库实例。
容器级锁定
容器级锁定允许绑定预装到从内核的实例,以提供更快的故障转移性能。容器级锁被简单的文件和JDBC锁定机制支持。
为了实现容器及说定,添加如下内容到 $KARAF_HOME/etc/system.properties 文件中在每个系统的主从设置上:
karaf.lock=true
karaf.lock.level=50
karaf.lock.delay=10
Karaf.log.level属性告诉karaf实例引导过程带来的OSGI容器有多远。分配相同级别的绑定或者是更低的也会在那个karaf实例中被启动。
绑定开始级别在$KARAF_HOME/etc/startup.properties指定,以jar.name=levle的形式。核心系统绑定级数低于50,用户绑定级别大于50。
一个“冷”的备用实例,核心绑定不会被加载到容器中,从实例将等待指导锁定需要启动服务器。
一个“热”的备用实例,核心捆绑将被加载到容器,从实例等待指导锁需要启动用户级别绑定。控制台对于每个从实例可以在这个级别访问。
这个设置不建议作为用户捆绑被启动。
注意:挡在同一主机上使用“热”备用,你需要设置JMX远程端口为唯一值以避免绑定冲突,你可以编辑karaf启动脚本以包括以下内容:
DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS
-Dcom.sun.management.jmxremote.port=1100
-Dcom.sun.management.jmxremote.authenticate=false"
十 日志系统osgi+camel+karaf运行环境搭建(1)
osgi+camel+karaf运行环境搭建(1)
这几天一直在学习与加深osgi中的一些东西,又去看了下apache felix中的几个example,于是决定将felix中的一些example写出来,但是不在使用felix官网中那样运行,而是从新搭建一个osgi的运行环境进行相应的学习,在这使用了karaf作为osgi的运行容器,同时整合camel进来,因为在后续会有更多的osgi中的运用,因此,本次全部整合进来。
本文在此先对几个框架和容器进行相应介绍。
Karaf是2001年Apache旗下的一个开源项目.Karaf同时也是一个基于OSGi的运行环境,Karaf提供了一个轻量级的OSGi容器。
在此选择karaf作为osgi容器,其中诸多用途在后面运用中会有所讲解,但karaf的各种命令,进本用途就不再单独进行讲解,在本项目中,karaf将会当做组件出现,在maven工程中,会以插件的形式出现。
Apache Camel是Apache基金会下的一个开源项目,它是一个基于规则路由和中介引擎,提供企业集成模式的Java对象的实现,通过应用程序接口(或称为陈述式的Java领域特定语言(DSL))来配置路由和中介的规则。领域特定语言意味着Apache Camel支持你在的集成开发工具中使用平常的,类型安全的,可自动补全的Java代码来编写路由规则,而不需要大量的XML配置文件。同时,也支持在Spring中使用XML配置定义路由和中介规则。
camel集成了大量的开源框架,进行相应微服务开发的时候,非常方便,在单独整合cxf和blueprint的时候很容易。
apache felix是osgi规范的另外一种实现,在此原本就是要对felix官网中10多个example进行编写,因此在此就选择felix实现相应osgi。
项目管理工具maven
在本运行环境整合中,需要用到大量的插件和jar,普通java工程的话,太过麻烦和存在许多问题,因此在此使用maven进行相应依赖和插件管理。
开发工具intellij
intellij有着丰富的插件,与良好的智能提示,并且对maven支持非常好,eclipse在此虽然说插件极多,但是对maven支持并不十分好,因此不选择eclipse当做开发工具。
本文仅只对基本所需的框架和容器进行讲解,下一篇博客将会对具体的环境整合步骤进行描述,涉及到本文中的camel和karaf之类的就不会再进行讲解了。
我的热门文章
即使是一小步也想与你分享

我要回帖

更多关于 框架式电容器 的文章

 

随机推荐