由于项目需要, 偶开始研究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 代码
- import java.util.Hashtable;
-
- import org.eclipse.osgi.framework.console.CommandInterpreter;
- import org.eclipse.osgi.framework.console.CommandProvider;
- import org.osgi.framework.BundleActivator;
- import org.osgi.framework.BundleContext;
- import org.osgi.framework.Constants;
-
- public class Activator implements BundleActivator, CommandProvider {
-
- private BundleContext context;
-
- public void start(BundleContext context) throws Exception {
- this.context = context;
-
-
- context.registerService(CommandProvider.class.getName(), this, new Hashtable());
- }
-
- public void stop(BundleContext context) throws Exception {}
-
-
-
-
-
- public String getHelp() {
-
- StringBuffer buffer = new StringBuffer();
-
- buffer.append("\tuname - framework information\n");
-
- return buffer.toString();
-
- }
-
-
-
-
- public void _uname(CommandInterpreter ci) throws Exception {
- String vendor = context.getProperty(Constants.FRAMEWORK_VENDOR);
- String version = context.getProperty(Constants.FRAMEWORK_VERSION);
- String osName = context.getProperty(Constants.FRAMEWORK_OS_NAME);
- String osVersion = context.getProperty(Constants.FRAMEWORK_OS_VERSION);
- System.out.println("\n " + vendor + " " + version + " (" + osName + " " + osVersion + ")");
- }
- }
这样后台输出的结果就是:
osgi>uname
Eclipse 1.3.0 (WindowsXP 5.1)
osgi>
|
分享到:
相关推荐
通过网络实现远程服务器管理,是现代企业级数据中心不可或缺的一部分,尤其在互联网高度发达的今天,这一技术的应用变得尤为重要。远程服务器管理的核心在于实现对服务器的全方位控制,无论是在引导阶段还是在图形...
在各个框架中执行操作如安装、启动、更新和卸载Bundle,可以使用相应的控制台命令,例如在Equinox中: - **安装**: `install file:///path/to/example.jar` - **启动**: `start id` - **更新**: `update id` - **...
Equinox是Eclipse基金会下的一个开源项目,它是一个基于OSGi(Open Service Gateway Initiative)规范的Java应用程序框架和运行时环境。这篇博文“equinox快速入门”将引导我们了解如何开始使用Equinox来构建模块化...
Equinox控制台打印出的信息会包括已安装bundle的列表和它们的当前状态。 在这篇文章中,读者将学会如何搭建OSGi开发环境,并通过基本命令来管理OSGi框架,这是深入学习OSGi开发之前的必要准备工作。文章通过一个...
2. 安装Bundle:使用OSGI控制台(可以通过运行“console”脚本访问),输入命令“install file:/path/to/your/bundle.jar”将Bundle安装到平台上。 六、启动和使用Bundle 1. 启动Bundle:在控制台中,输入命令...
- `org.eclipse.equinox.console`:提供控制台支持。 - `org.apache.felix.gogo.shell`:增强的Shell支持。 - `org.apache.felix.gogo.runtime`:运行时支持。 - `org.apache.felix.gogo.command`:命令支持。 ...
然后,通过控制台或OSGi Console命令来启动你的HelloWorld模块,你会看到预期的输出。 6. **调试和测试**:由于OSGi环境的动态性,你可以方便地进行调试和测试。比如,你可以停止模块,修改代码,然后重新启动模块...
2. **Web Console**: 安装Web控制台,方便进行远程管理和监控。 ```shell features:installwebconsole ``` 3. **JPA Hibernate**: 安装持久化层支持,利用Hibernate实现数据持久化。 ```shell features:...
* `-console`:显示控制台。 * `-data`:指定 OSGI 的数据文件。 * `-debug`:启用调试模式。 * `-dev`:启用开发模式。 * `-nl`:指定 OSGI 的语言。 * `-os`:指定 OSGI 的操作系统。 * `-product`:指定 OSGI 的...
- `org.eclipse.equinox.console`: 控制台支持,方便调试。 - `org.apache.felix.gogo.shell`: 命令行支持,提供更多的调试工具。 - `org.eclipse.rap.ui`: 用户界面支持,包括各种UI组件。 在勾选了所有必要的...
ConsoleView用于控制台输出,适合命令行环境;而FrameView可能是图形用户界面,显示棋盘状态。这两种视图服务都应该订阅Chessboard服务,当棋盘状态改变时,它们能接收到通知并更新界面。 4. **ViewFactory**:用于...
1. **Equinox或Felix Console**:这两个是常见的OSGI运行时,它们提供了控制台工具,用于查看和管理bundle状态,以及进行日志记录和错误追踪。 2. **Bndtools**:这是一个集成开发环境插件,可以帮助创建、管理和...