felix是一个apache旗下osgi实现的开源框架。可能很多人知道eclipse-equinox,但不知道felix,其实felix跟quuinox一样都实现osgi-r4。
开始动手。
准备环境jdk1.5+eclipse+maven。felix源代码下载:http://svn.apache.org/repos/asf/felix/trunk。
下载完毕后目录结构中,我们先挑选felix核心bundle来运行下。在dos中进入到framework\目录,执行mvn install将framework bundle发布到m2中。同样进入到main中执行mvn install编译出felix启动的felix.jar。在dos执行
java -jar felix.jar。应该可以看到下面的结果。
Welcome to Felix.
=================
执行ps命令
[ 0] [Active ] [ 0] System Bundle (1.9.0.SNAPSHOT)
[ 1] [Active ] [ 1] Apache Felix Shell Service (1.3.0.SNAPSHOT)
[ 2] [Active ] [ 1] Apache Felix Shell TUI (1.3.0.SNAPSHOT)
[ 3] [Active ] [ 1] Apache Felix Bundle Repository (1.5.0.SNAPSHOT)
可以看到几个系统的bundle已经启动啦。
回过头我们看看main里面的源代码。mvn eclipse:eclipse下,将main中的工程导入到eclipse中。跟踪一下代码很简单可以找到启动函数Main中的的main函数。它通过AutoActivator去启动config.properties中配置的bundle。可以通过修改felix.auto.start.1的属性值测试sample中的一些bundle。
下次,我们需要改造felix.auto.start.1的配置方式,实现将classpath中的jar发布到 felix.auto.start.1中去。