osgi 学习系列(三)自定义osgi控制台命令

为了后面demo的结果显示需要先说下自定义osgi控制台命令,自定义命令的类必须实现org.eclipse.osgi.framework.console.CommandProvider接口

该接口中只有一个方法public String getHelp()用于在help方法中添加我们自定义命令的描述

自定义命令也很简单,只要写一个以下划线+命令的方法即可,比如我想自定义一个say命令

public void _say(CommandInterpreter ci) {
     ci.print("said:" + ci.nextArgument());
}

这个CommandInterpreter参数必须要,否则找不到命令,ci.nextArgument()获取osgi控制台命令后跟的参数

通过getHelp方法就可以把该自定义命令的描述加到osgi控制台help命令中

@Override
public String getHelp() {
     return "\tsay – say what you input\n";
}

下面建个bundle来演示一下

New-->Plug-inProject

osgi 学习系列(三)自定义osgi控制台命令

osgi 学习系列(三)自定义osgi控制台命令

Finish完成

打开MANIFEST.MF文件,导入org.eclipse.osgi.framework.console和org.osgi.framework包

osgi 学习系列(三)自定义osgi控制台命令

创建一个类并实现CommandProvider和BundleActivator接口

osgi 学习系列(三)自定义osgi控制台命令

类代码如下

public class CustomizedCommand implements CommandProvider, BundleActivator {

	@Override
	public void start(BundleContext context) throws Exception {
		context.registerService(CommandProvider.class.getName(),
			    new CustomizedCommand(), null);
	}

	@Override
	public void stop(BundleContext arg0) throws Exception {
	}
	
	public void _say(CommandInterpreter ci) {
		 ci.print("said:" + ci.nextArgument());
	}

	@Override
	public String getHelp() {
		return "\tsay – say what you input\n";
	}
}

打开MANIFEST.MF,添加Bundle-Activator

osgi 学习系列(三)自定义osgi控制台命令

osgi 学习系列(三)自定义osgi控制台命令

Run运行后,在osgi控制台输入ss会看到我们建的bundle处于运行状态

osgi 学习系列(三)自定义osgi控制台命令

这里自定义的bundle的id比较大,是因为configuraton的缓存没有清理,我们可以在settings中把Clear the configuration area before launching勾上

osgi 学习系列(三)自定义osgi控制台命令

输入自定义命令say后会调用 _say方法

osgi 学习系列(三)自定义osgi控制台命令http://

在help方法中也能找到我们自定义的命令描述

osgi 学习系列(三)自定义osgi控制台命令

osgi控制台自定义命令就说到这,这个demo中用到的jar包为

org.eclipse.osgi_3.7.2.v20120110-1415.jar

对于刚接触osgi,流程可能不太熟悉所以前面几章截图比较多,后面章节对基础的东西就不多加赘述。


点击下载demo代码



你可能感兴趣的:(osgi)