Freud's Blog

Stay hungry, stay foolish. 少年辛苦终身事,莫向光阴惰寸功。

JAVA OSGi(二)-第一个OSGI程序

Posted on By Freud Kang

  • 新建一个Plug-in Project,命名为osgi_equinox_activator, 并在OSGI framework中选中standard,如下图

create a new project

  • 下一步:
ID: com.freud.osgi
Version: 1.0.0.qualifier
Name: Osgi_equinox_activator
  • 勾选Generate an activator, a Java class that controls the plug-in’s life cycle Activator: com.freud.osgi.activator.Activator 如下图

configue_project

  • 下一步,取消对Create a plug-in using one of the templatesCheck,并且Finish
  • 修改com.freud.osgi.activator.Activator内容为
package com.freud.osgi.activator;

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 {
		System.out.println("[freud]Bundle started!");
	}

	public void stop(BundleContext bundleContext) throws Exception {
		System.out.println("[freud]Bundle stoped!");
	}

}
  • 运行,在Project上右键run as -> Run Configurations
  • 在弹出的对话框中,选择OSGi Framework,然后右键 -> new 在新建的Configuration中做如下配置

before_run

  • ApplyRun,将会在控制台中输出如下

console_out_started

  • 在控制台中输入ss可以看到所有被加载的Bundles

console_out_ss

  • 输入stop ${id}可以停止已加载的Bundle,例如stop 3就可以停止我们自己刚刚写的Bundle

console_out_stop

  • 输入start ${id}可以启动Bundle,例如start 3就可以重新启动我们刚刚写的Bundle

console_out_restart


参考资料

视频教程 : http://v.youku.com/v_show/id_XNDE1NzU0OTY0.html
Equinox OSGi官网 : http://www.eclipse.org/equinox/
林昊 : 《OSGi原理与最佳实践》
Richard S. Hall : 《OSGi实战》