Plugin动态加载Extension,达到plugin.xml中配置的效果
来源:互联网 发布:电脑模拟攒机软件 编辑:程序博客网 时间:2024/05/05 23:54
在plugin.xml中配置扩展点和扩展内容是一种静态的让Osgi认识我们自己写的程序内容的方法。这个方法具有一定的局限性。
笔者最近在写一套通用组件的时候遇到了需要通过其他途径动态Osgi加载组件/类的情况。例如动态记载 快捷键 捆绑命令。
于是利用Osgi的ExtensionRegistry实现动态加载扩展。
以下以加载首选项Page扩展举例:
- public static void registryPreferencePageExtension(Bundle bundle) throws FileNotFoundException, UnsupportedEncodingException{
- ByteArrayInputStream is =
- new ByteArrayInputStream(getFile().getBytes("UTF-8"));
- // use Eclipse Dynamic Extension API
- IExtensionRegistry reg = RegistryFactory.getRegistry();
- Object key = ((ExtensionRegistry)reg).getTemporaryUserToken();
- IContributor contributor =
- ContributorFactoryOSGi.createContributor(bundle);
- reg.addContribution(is, contributor, false, null, null, key);
- }
- public static String getFile() {
- StringBuffer sb = new StringBuffer();
- sb.append("<?xml version=/"1.0/" encoding=/"UTF-8/"?>");
- sb.append("<plugin>");
- sb.append("<extension point=/"org.eclipse.ui.preferencePages/">");
- sb.append("<page category=/"com.ibm.chas.ui.preference.MainPreferencePage/"");
- sb.append(" class=/"com.ibm.chas.emr.tmpltdesigner.preferences.MyPreferencePage/"");
- sb.append(" id=/"com.ibm.chas.emr.tmpltdesigner.preferences.MyPreferencePage/"");
- sb.append(" name=/"Template Designer Preference/"/>");
- sb.append("</extension>");
- sb.append("</plugin>");
- return sb.toString();
- }
0 0
- Plugin动态加载Extension,达到plugin.xml中配置的效果
- pom.xml中配置plugin
- plugin.xml配置中关于Classpath的思考
- pom.xml中maven-compiler-plugin插件配置的使用
- Jenkins邮件插件的配置(Email Extension Plugin)
- jenkins邮件插件Email Extension Plugin的安装与配置
- Qt plugin 的创建和动态加载
- pom.xml中配置plugin补充
- MySQL 动态加载Innodb Plugin
- MySQL 动态加载Innodb Plugin
- plugin.xml 中 PostBufferSize 的含义
- chorme extension plugin
- Jenkins-Email Extension Plugin
- 动态加载js和css的jquery plugin
- NEUTRON中的plugin和extension介绍及加载机制
- Plugin中plugin.properties的用法
- plugin.xml
- 截断加载plugin的具体位置
- 第一篇 演示如何访问 Email 字段 并调用出来
- 在Ubuntu Kylin中使用SVN管理代码
- JSON.stringify
- Java判断字符串中是否包含中文
- linux常用命令(17):whereis命令
- Plugin动态加载Extension,达到plugin.xml中配置的效果
- 最佳路径
- 关于多表的leftJoin
- Python 学习笔记-面向对象编程
- 第六周第二天
- 对数组进行直接插入排序
- volatile 易失变量
- 华为机试题:图片整理
- Hello World