`
yipsilon
  • 浏览: 246268 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

为Equinox的控制台(Console)增加自己的命令

阅读更多

        由于项目需要, 偶开始研究Equinox, 发现它的console做得很不错, 于是就想, 如果能把项目整合到equinox, 让console也支持项目特定的命令就好了, 于是开始研究可行性, 发现这是很简单的事情, 下面就来说说如何把自定义的命令添加到Equinox上的...

        开说之前先提一句: Console并不是OSGi规范所要求的, 也就是说, 如果实现这个功能, 那项目就对Equinox有所依赖了. 所以大家在使用这个功能之前要确定自己的项目有没有跨OSGi实现的要求, 如果有的话, 那本方法就不能使用了.

        Equinox 定义了命令提供商接口 CommandProvider, 它位于 org.eclipse.osgi.framework.console 包下, 大家可以在 org.eclipse.osgi_x.x.x.xxxxxx.jar 包中找到. CommandProvider 接口只有一个方法 getHelp(), 该方法用于在用户敲入 help 命令时显示所列出的命令帮助. 而自定义命令就是创建公共的(public)、以下划线("_")开头且带有一个类型为org.eclipse.osgi.framework.console.CommandInterpreter 参数的方法, 其中下划线后面的方法名称就是命令的名称, 例如 _uname(CommandInterpreter ci) 就是 Console 中的 uname 命令. 最后, 把实现类通过 BundleContext .registerService(...) 方法, 注册 名称为 org.eclipse.osgi.framework.console.CommandProvider  的服务. 下面有完整的代码供大家参考:

java 代码
  1. import java.util.Hashtable;   
  2.   
  3. import org.eclipse.osgi.framework.console.CommandInterpreter;   
  4. import org.eclipse.osgi.framework.console.CommandProvider;   
  5. import org.osgi.framework.BundleActivator;   
  6. import org.osgi.framework.BundleContext;   
  7. import org.osgi.framework.Constants;   
  8.   
  9. public class Activator implements BundleActivator, CommandProvider {   
  10.   
  11.   private BundleContext context;   
  12.   
  13.   public void start(BundleContext context) throws Exception {   
  14.     this.context = context;   
  15.   
  16.     // 注册服务   
  17.     context.registerService(CommandProvider.class.getName(), thisnew Hashtable());   
  18.   }   
  19.   
  20.   public void stop(BundleContext context) throws Exception {}   
  21.   
  22.   /**  
  23.    * 在控制台输入 help 命令时, 所显示的帮助.  
  24.    * @see CommandProvider#getHelp()  
  25.    */  
  26.   public String getHelp() {   
  27.   
  28.     StringBuffer buffer = new StringBuffer();   
  29.   
  30.     buffer.append("\tuname - framework information\n");   
  31.        
  32.     return buffer.toString();   
  33.   
  34.   }   
  35.      
  36.   /**  
  37.    * uname 命令.  
  38.    */  
  39.   public void _uname(CommandInterpreter ci) throws Exception {   
  40.     String vendor = context.getProperty(Constants.FRAMEWORK_VENDOR);   
  41.     String version = context.getProperty(Constants.FRAMEWORK_VERSION);   
  42.     String osName = context.getProperty(Constants.FRAMEWORK_OS_NAME);   
  43.     String osVersion = context.getProperty(Constants.FRAMEWORK_OS_VERSION);   
  44.     System.out.println("\n " + vendor + " " + version + " (" + osName + " " + osVersion + ")");   
  45.   }   
  46. }  

这样后台输出的结果就是:

osgi>uname

Eclipse 1.3.0 (WindowsXP 5.1)

osgi>

分享到:
评论
1 楼 gembin 2007-08-28  
不错啊

相关推荐

    通过网络实现远程服务器管理

    通过网络实现远程服务器管理,是现代企业级数据中心不可或缺的一部分,尤其在互联网高度发达的今天,这一技术的应用变得尤为重要。远程服务器管理的核心在于实现对服务器的全方位控制,无论是在引导阶段还是在图形...

    osgi选型比较 实例Equinox、Apache Felix与Spring DM

    在各个框架中执行操作如安装、启动、更新和卸载Bundle,可以使用相应的控制台命令,例如在Equinox中: - **安装**: `install file:///path/to/example.jar` - **启动**: `start id` - **更新**: `update id` - **...

    equinox快速入门

    Equinox是Eclipse基金会下的一个开源项目,它是一个基于OSGi(Open Service Gateway Initiative)规范的Java应用程序框架和运行时环境。这篇博文“equinox快速入门”将引导我们了解如何开始使用Equinox来构建模块化...

    Getting Started with OSGi_ Part1

    Equinox控制台打印出的信息会包括已安装bundle的列表和它们的当前状态。 在这篇文章中,读者将学会如何搭建OSGi开发环境,并通过基本命令来管理OSGi框架,这是深入学习OSGi开发之前的必要准备工作。文章通过一个...

    把OSGI部署成一个可运行的例子

    2. 安装Bundle:使用OSGI控制台(可以通过运行“console”脚本访问),输入命令“install file:/path/to/your/bundle.jar”将Bundle安装到平台上。 六、启动和使用Bundle 1. 启动Bundle:在控制台中,输入命令...

    ‪第一个OSGi框架工程

    - `org.eclipse.equinox.console`:提供控制台支持。 - `org.apache.felix.gogo.shell`:增强的Shell支持。 - `org.apache.felix.gogo.runtime`:运行时支持。 - `org.apache.felix.gogo.command`:命令支持。 ...

    OSGi HelloWorld实例

    然后,通过控制台或OSGi Console命令来启动你的HelloWorld模块,你会看到预期的输出。 6. **调试和测试**:由于OSGi环境的动态性,你可以方便地进行调试和测试。比如,你可以停止模块,修改代码,然后重新启动模块...

    Fuse ESB 4.3.1使用笔记

    2. **Web Console**: 安装Web控制台,方便进行远程管理和监控。 ```shell features:installwebconsole ``` 3. **JPA Hibernate**: 安装持久化层支持,利用Hibernate实现数据持久化。 ```shell features:...

    Eclipse 的启动参数

    * `-console`:显示控制台。 * `-data`:指定 OSGI 的数据文件。 * `-debug`:启用调试模式。 * `-dev`:启用开发模式。 * `-nl`:指定 OSGI 的语言。 * `-os`:指定 OSGI 的操作系统。 * `-product`:指定 OSGI 的...

    第一个RAP例子程序(图示)

    - `org.eclipse.equinox.console`: 控制台支持,方便调试。 - `org.apache.felix.gogo.shell`: 命令行支持,提供更多的调试工具。 - `org.eclipse.rap.ui`: 用户界面支持,包括各种UI组件。 在勾选了所有必要的...

    JAVA OSGI方式实现8皇后问题

    ConsoleView用于控制台输出,适合命令行环境;而FrameView可能是图形用户界面,显示棋盘状态。这两种视图服务都应该订阅Chessboard服务,当棋盘状态改变时,它们能接收到通知并更新界面。 4. **ViewFactory**:用于...

    OSGI错误分析解决

    1. **Equinox或Felix Console**:这两个是常见的OSGI运行时,它们提供了控制台工具,用于查看和管理bundle状态,以及进行日志记录和错误追踪。 2. **Bndtools**:这是一个集成开发环境插件,可以帮助创建、管理和...

Global site tag (gtag.js) - Google Analytics