1.准备环境
1.1找到eclipse下的/eclipse/plugins/org.eclipse.osgi_3.x.x_xxx.jar,然后拷贝出来。假设拷贝到$OSGI_HOM目录下。
1.2验证是否正常,然后cd 到该目录下。
执行java -jar org.eclipse.osgi_3.7.1.R37x_v20110808-1106.jar -console命令将会进入osgi命令行管理控制台,如下。
2.编写应用代码
2.1创建一个简单的module如下。
package baselib;
import java.util.logging.Logger;
public class BaseService {
Logger log=Logger.getLogger(this.getClass().getName());
public void sayHello() {
log.info("Hello, world!");
}
}
输入命令行编译,并打包。
2.2接下来我们自定义一个管理bundle生命周期的Activator,该calss必须实现org.osgi.framework.BundleActivator 接口。代码如下:
package tutorial;
import baselib.BaseService;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import java.util.logging.Logger;
public class TutorialActivator implements BundleActivator {
Logger log=Logger.getLogger(this.getClass().getName());
public void start(BundleContext bc) {
log.info("started");
new BaseService().sayHello();
}
public void stop(BundleContext bc) {
log.info("stopped.");
}
}
编写好了之后,我们还需要编写一个包含OSGi配置和启动信息的MANIFEST.MF文件,内容如下。
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: com.theserverside.tutorial.osgi.TutorialBundle Bundle-Version: 1 Bundle-Activator: tutorial.TutorialActivator Import-Package: org.osgi.framework;version="1.3.0" Bundle-ClassPath: .,baselib.jar从上边的内容我们可以看出,我们将activator打成的jar包需要将我们前边生产的baselib.jar放到我们新生成jar的跟目录下。
注:上述步骤打出的jar包有问题,jar包中的MANIFEST.MF信息好像跟指定的文件并不完全相同,会导致start bundle失败,这时候可以用指定的文件替换下jar包中即可。
3.完成上述步骤后就可以执行下查看bundle,管理bundle。