osgi 学习系列--自定义osgi控制台命令say,iamcommand两个自定义命令

本例没有 iamcommand代码的,这个是我自己测试的时候加的一个命令,名字可以随便起,记得方法名前加下划线_

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

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

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

[java]  view plain copy
  1. public void _say(CommandInterpreter ci) {  
  2.      ci.print("said:" + ci.nextArgument());  
  3. }  

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

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

[java]  view plain copy
  1. @Override  
  2. public String getHelp() {  
  3.      return "\tsay – say what you input\n";  
  4. }  

下面建个bundle来演示一下

New-->Plug-inProject



Finish完成

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


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


类代码如下

[java]  view plain copy
  1. public class CustomizedCommand implements CommandProvider, BundleActivator {  
  2.   
  3.     @Override  
  4.     public void start(BundleContext context) throws Exception {  
  5.         context.registerService(CommandProvider.class.getName(),  
  6.                 new CustomizedCommand(), null);  
  7.     }  
  8.   
  9.     @Override  
  10.     public void stop(BundleContext arg0) throws Exception {  
  11.     }  
  12.       
  13.     public void _say(CommandInterpreter ci) {  
  14.          ci.print("said:" + ci.nextArgument());  
  15.     }  
  16.   
  17.     @Override  
  18.     public String getHelp() {  
  19.         return "\tsay – say what you input\n";  
  20.     }  
  21. }  

打开MANIFEST.MF,添加Bundle-Activator



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


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


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

 http://

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


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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值