OSGi控制台在Eclipse插件开发中的妙用
2015-07-28 18:34
375 查看
OSGi的实现本身有一个控制台,提供插件的查看和管理功能。而Eclipse是基于OSGi的平台应用,这样我们可以使用这个控制台辅助进行插件的管理,调试等工作…
从事插件开发的各位同行也许都遇到过这样的问题:某个插件在发布以后无法启动,在Eclipse的插件列表中也看不到。这种情况一般是插件打包的时候出错,或者插件的依赖项不能满足。 如果项目的插件本身就比较多,或者依赖项比较多,这种问题查起来就非常痛苦。(Eclipse的插件列表会自动忽略某些无法启动的插件,无法通过Eclipse本身的插件列表排查问题)
而OSGi的控制台,允许你通过命令行的方式,对插件进行安装,卸载,启动,更新等操作,通过这样的方式进行排查。
例如,我们创建两个插件,example.TestA和example.TestB,插件B依赖插件A。然后只把插件B放到Eclipse的dropins目录下,这样我们是看不到example.TestB这个插件的,也无法使用它提供的功能。
此时,我们在启动eclipse的时候增加一个参数”- console”,就会同时启动一个控制台窗口,输入ss命令,会看到所有的bundle的信息列表:
![](http://dl.iteye.com/upload/picture/pic/84263/f3061313-388d-3d5d-bf72-d1b40c0010a3.gif)
还可以在命令后面增加参数过滤:
![](http://dollyn.iteye.com/upload/picture/pic/84265/512dee6d-8d11-33e4-8b5f-76c85f98aba5.gif)
有的时候,这里也看不到插件,还可以使用install命令安装。
使用diag命令,可以对某个插件进行诊断:
![](http://dl.iteye.com/upload/picture/pic/84267/1b75ac44-b393-3823-86ce-ccda9a89e00f.gif)
在插件开发过程中,我们调试插件,一般情况下,只要不是对类的结构进行改变,都可以在DEBUG模式下,进行代码的热替换,即debug模式修改代码,无需重启,即可看到最新的效果。 但是,一般情况下,对于plugin.xml等文件进行的修改,则必须重新启动debug才可以看到修改的效果。
而使用OSGi的update命令,就可以省去这个麻烦。
首先,在调试启动的时候,需要增加-console参数:
![](http://dl.iteye.com/upload/picture/pic/84269/d94b46f8-7322-3aaf-a2bd-8c7a6aba6671.gif)
这样在启动后,就可以在eclipse的控制台输入OSGi的命令了:
![](http://dollyn.iteye.com/upload/picture/pic/84271/e25830ab-9eaa-38ea-888a-8efad546e28b.gif)
我们的插件B,在提供了一个菜单:
![](http://dollyn.iteye.com/upload/picture/pic/84273/e63ab6b3-36a2-329a-b37f-eec938115893.gif)
这个菜单的Label是配置在plugin.xml里的,我们修改一下这个值,然后在控制台输入下面的命令:
![](http://dollyn.iteye.com/upload/picture/pic/84275/12b200d1-3c9a-35ac-84f7-8ade686cb744.gif)
也可以输入update <id>,id就是你的插件bundle的id,这里就是760。
可以看到无需重新启动,菜单项已经改变:
![](http://dollyn.iteye.com/upload/picture/pic/84277/2f9605e7-cbe1-341d-88fe-fbe607e1abeb.gif)
2011-09-28 补充: 也可以不添加参数,Eclipse自带了一个OSGi的控制台,可以在Debug起来的那个Run-time的Eclipse中,打开Console视图,切换到Host OSGi 这个控制台,有和上面同样的功能.
一、管理和诊断
从事插件开发的各位同行也许都遇到过这样的问题:某个插件在发布以后无法启动,在Eclipse的插件列表中也看不到。这种情况一般是插件打包的时候出错,或者插件的依赖项不能满足。 如果项目的插件本身就比较多,或者依赖项比较多,这种问题查起来就非常痛苦。(Eclipse的插件列表会自动忽略某些无法启动的插件,无法通过Eclipse本身的插件列表排查问题)而OSGi的控制台,允许你通过命令行的方式,对插件进行安装,卸载,启动,更新等操作,通过这样的方式进行排查。
例如,我们创建两个插件,example.TestA和example.TestB,插件B依赖插件A。然后只把插件B放到Eclipse的dropins目录下,这样我们是看不到example.TestB这个插件的,也无法使用它提供的功能。
此时,我们在启动eclipse的时候增加一个参数”- console”,就会同时启动一个控制台窗口,输入ss命令,会看到所有的bundle的信息列表:
![](http://dl.iteye.com/upload/picture/pic/84263/f3061313-388d-3d5d-bf72-d1b40c0010a3.gif)
还可以在命令后面增加参数过滤:
![](http://dollyn.iteye.com/upload/picture/pic/84265/512dee6d-8d11-33e4-8b5f-76c85f98aba5.gif)
有的时候,这里也看不到插件,还可以使用install命令安装。
使用diag命令,可以对某个插件进行诊断:
![](http://dl.iteye.com/upload/picture/pic/84267/1b75ac44-b393-3823-86ce-ccda9a89e00f.gif)
二、在调试中应用
在插件开发过程中,我们调试插件,一般情况下,只要不是对类的结构进行改变,都可以在DEBUG模式下,进行代码的热替换,即debug模式修改代码,无需重启,即可看到最新的效果。 但是,一般情况下,对于plugin.xml等文件进行的修改,则必须重新启动debug才可以看到修改的效果。而使用OSGi的update命令,就可以省去这个麻烦。
首先,在调试启动的时候,需要增加-console参数:
![](http://dl.iteye.com/upload/picture/pic/84269/d94b46f8-7322-3aaf-a2bd-8c7a6aba6671.gif)
这样在启动后,就可以在eclipse的控制台输入OSGi的命令了:
![](http://dollyn.iteye.com/upload/picture/pic/84271/e25830ab-9eaa-38ea-888a-8efad546e28b.gif)
我们的插件B,在提供了一个菜单:
![](http://dollyn.iteye.com/upload/picture/pic/84273/e63ab6b3-36a2-329a-b37f-eec938115893.gif)
这个菜单的Label是配置在plugin.xml里的,我们修改一下这个值,然后在控制台输入下面的命令:
![](http://dollyn.iteye.com/upload/picture/pic/84275/12b200d1-3c9a-35ac-84f7-8ade686cb744.gif)
也可以输入update <id>,id就是你的插件bundle的id,这里就是760。
可以看到无需重新启动,菜单项已经改变:
![](http://dollyn.iteye.com/upload/picture/pic/84277/2f9605e7-cbe1-341d-88fe-fbe607e1abeb.gif)
2011-09-28 补充: 也可以不添加参数,Eclipse自带了一个OSGi的控制台,可以在Debug起来的那个Run-time的Eclipse中,打开Console视图,切换到Host OSGi 这个控制台,有和上面同样的功能.
相关文章推荐
- 第三周第二天( 【Class类与Java反射 】 【Method类的常用方法 】 【注解】)
- Java 中的方法内部类
- 【Java】对于空值null的判断
- Java 中的静态内部类
- Java集合框架
- java基础第二讲——java语法、变量、标识符规则
- 在做java web开发时常遇到的问题:mysql只能用localhost或127.0.0.1连接
- Eclipse SVN插件安装
- 搭建Spring MVC环境进行简单的增、删、改、查(二)
- 搭建Spring MVC环境进行简单的增、删、改、查(一)
- 细数JDK里的设计模式
- thrift -java
- SpringSide的技术选型
- java 生产者消费者问题以及线程池的使用
- java基础知识回顾(4)
- split分隔符总结(特殊字符)
- MyEclipse10在线安装Freemarker IDE插件问题的解决办法
- Spring各个jar包的简介
- Java Ldap验证
- springMVC --DispatcherServlet详解