OSGI 注册command

Felix提供了一个简单且可扩展的shell服务,允许bundle暴露命令给shell用户。Shell Service 可以自动检测bundle 注册的命令,并且通过控制台的方式提供给用户使用。

注册command时需要添加两个属性

 osgi.command.scope:被注册命令所在的域

 osgi.command.function: String的数组,对应Command类中的方法名

注册command实现如下:

1     Dictionary properties = new Hashtable();
2     String[] funcParam = new String[]{"testprint"};
3     properties.put("osgi.command.scope", "test");
4     properties.put("osgi.command.function",funcParam);
5     bundleContext.registerService(TestCommand.class, new TestCommand(bundleContext), properties);

简单实现一个打印字符串的命令类

 1 public class TestCommand {
 2     private BundleContext bundleContext;
 3     
 4     public TestCommand(BundleContext bundleContext) {
 5         this.bundleContext = bundleContext;
 6     }
 7     
 8 
 9     public void testprint(String value){
10         System.out.println(value);
11     }
12 }

 

进入osgi控制台,就可以通过注册的命令远程控制osgi

posted on 2014-05-27 19:32  remagon  阅读(316)  评论(0编辑  收藏  举报