本例子是基于felix容器运行的例子
一:
使用eclipse新建一个 Plug-in Project 项目
注意,
1:Project name 建议用包名加项目名的形式
2:这里的 an OSGI framework 选择 stadard 表示这是一个标准的OSGI程序,可以运行在任何OSGI容器中
然后,继续下一步,Finish即可
二:编辑Activator.java
package com.lala.shop;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator
{
static BundleContext bundleContext;
public void start(BundleContext context) throws Exception
{
bundleContext = context;
context.addBundleListener((event) -> {
System.out.println("-------bundleChanged-----");
System.out.println(event.getBundle().getSymbolicName() + " bundleChanged , type="+event.getType());
});
System.out.println("----------start----------");
}
public void stop(BundleContext context) throws Exception
{
bundleContext = null;
System.out.println("----------stop----------");
}
}
然后,编辑META-INF/MANIFEST.MF文件
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Shop
Bundle-SymbolicName: com.lala.shop
Bundle-Version: 1.0.0
Bundle-Activator: com.lala.shop.Activator
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: org.osgi.framework;version="1.3.0"
这里需要注意的是:Bundle-Activator ,需要写全路径
三:导出bundle
右键项目,选择Export ,
选择 Deployable plug-ins and fragments
下一步
在Distation中,选择第二个,Archive file,选择导出目录
四:安装felix
下载最新版felix
org.apache.felix.main.distribution-5.0.1.tar.gz
解压之后,cd felix-framework-5.0.1
执行 java -jar bin/felix.jar [注意,不要进入到bin 目录下,执行 java -jar felix.jar]
进入到felix的控制台
输入help之后,可以看到全部命令
把刚才导出的*.zip文件解压开来,会在plugins目录下生成一个*.jar文件
在felix控制台上执行
install file:/tmp/*.jar
然后,执行lb即可查看容器中的全部bundle
执行 start id
即可看到输出
----------start----------
-------bundleChanged-----
com.lala.cctv bundleChanged , type=2