初识OSGi框架--Equinox

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。


猜你喜欢

转载自taft.iteye.com/blog/1396992