开发并打包一个OSGi的Bundle
Contents
安装个Eclipse插件
功能:将某个目录下的jar包,添加到buildpath
打包一个Bundle
这只是演示第三方jar包依赖的打包问题,Bundle之间的依赖,通过Import, Export来进行。
创建一个项目:
File
-> New
-> Project
-> Plug-in Project
,然后输入bundle名,target platform
选择 an OSGi framework
, standard
. -> Next
-> 最后一个Next,不要勾选模板即可
然后在项目的根目录,创建一个 lib
目录,将所依赖的jar
,都放到这里(其实最好就做成bundle,运行成服务最好),然后右键项目
-> Properties
-> Java Build Dath
-> Libraries
-> Add library
-> Directory Container
-> 选择刚创建的那个lib
目录即可,这时该目录下的所有jar包,都放到build path
里了。
Activator内容为:
package example;
import org.apache.commons.lang.StringUtils;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private static BundleContext context;
static BundleContext getContext() {
return context;
}
public void start(BundleContext bundleContext) throws Exception {
Activator.context = bundleContext;
System.out.println("Hello World.");
System.out.println(StringUtils.upperCase("Hello OSGi"));
}
public void stop(BundleContext bundleContext) throws Exception {
Activator.context = null;
}
}
** 注意 **
检查下右键项目
-> Properties
-> Java Build Dath
,看看source
有没有其他的jar包文件,有的话,就删除掉,只保留源码目录。
这时,只是对eclipse编译通过了而已,还是还要在Bundle的描述文件里,配置Bundle-Classpath
。
打开META-INF
目录下的MANIFEST.MF
文件,打开Runtime
这个tab,然后在右边的classpath
里,点击Add
来添加所依赖的第三方jar
包(注意,不能直接选择lib目录,而是要定位到具体的jar文件)
这样子,环境方面就做好了。接下来,就是导出这个Bundle。
右键项目
-> Export
-> Plug-in Development
-> Deployable plug-ins and fragments
-> 勾选项目,以及选择导出到某个目录即可。
这样子就OK了。
运行
直接放到 apache felix 安装目录的bundle
目录,然后直接运行以下命令即可。
➜ felix-framework-5.2.0 java -jar bin/felix.jar
Hello World.
HELLO OSGI
____________________________
Welcome to Apache Felix Gogo
g!