快速业务通道

使用JavaScript脚本化Java应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
能,包括获取插件名称、获取插件描述、以及将键值对 插入到插件的上下文、执行插件公开的功能等方法。

插件管理器接口:

定义管理所有插件的管理器,包括安装插件、卸载插件、激活插件、按名称获取插件 等方法。

好了,这个简单的框架基本满足我们的需求。在实现中,我们可以比较简单地将 JDK 6 提供的脚本引擎做一个包装。

由于插件管理器(PluginManager)的作用范围是全局的,所以我们将其实现为一个单 例的对象:

代码 1. sTodo 插件管理器

public class TodoPluginManager implements PluginManager {    private List<Plugin> plist;    private static TodoPluginManager instance;    public static TodoPluginManager getInstance() {      if (instance == null) {        instance = new TodoPluginManager();      }      return instance;    }    private TodoPluginManager() {      plist = new ArrayList<Plugin>(1);    }    public void activate(Plugin plugin) {    }    public void deactivate(Plugin plugin) {    }    public Plugin getPlugin(String name) {      for (Plugin p : plist) {        if (p.getName().equals(name)) {          return p;        }      }      return null;    }    public void install(Plugin plugin) {      plist.add(plugin);    }    public List<Plugin> listPlugins() {      return plist;    }    public void removePlugin(String name) {      for (int i = 0; i < plist.size(); i++) {        plist.get(i).getName().equals(name);        plist.remove(i);        break;      }    }    public void uninstall(Plugin plugin) {      plist.remove(plugin);    }    public int getPluginNumber() {      return plist.size();    } }

使用JavaScript脚本化Java应用(4)

时间:2011-04-03 IBM 邱俊涛

插件本身比较容易实现,包含一个名为 context 的 Map,以及一些 getter/setter:

代码 2. sTodo 插件实现

public class TodoPlugin implements Plugin {    private String name;    private String desc;    private Map<String, Object> context;    private ScriptEngine sengine;    private Invocable engine;    public TodoPlugin(String file, String name, String desc) {      this.name = name;      this.desc = desc;      context = new HashMap<String, Object>();      sengine = RuntimeEnv.getScriptEngine();      engine = RuntimeEnv.getInvocableEngine();      try {        sengine.eval(new java.io.FileReader(file));      } catch (FileNotFoundException e) {        e.printStackTrace();      } catch (ScriptException e) {        e.printStackTrace();      }    }    public TodoPlugin(URL url) {    }    public Object execute(String function, Object... objects) {      Object result = null;      try {        result = engine.invokeFunction(function, objects);      } catch (ScriptException e) {        e.printSta

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号