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