如何加载学习插件

ElasticSearch是一个基于Lucene的搜索服务器它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口

最近工作需要,然后就研究了下ES顺便就记录下学习的过程,也方便时间久了再佽查看或者其他环境再次配置时参考。

  1. 先看下效果194、196两台机器集群安装head插件浏览访问

  2. ES依赖于java,所以先保证你安装好了jdk

    1. 安装之后方便elasticsearch嘚启动,停止等等一系列操作

      1. 浏览器访问head界面查看效果

      1. 查看效果环境差不多了。后面继续。

      经验内容仅供参考如果您需解决具体问題(尤其法律、医学等领域),建议您详细咨询相关领域专业人士

      作者声明:本篇经验系本人依照真实经历原创,未经许可谢绝转载。

在工作中遇到了一个问题 —— 某個业务流程分为几个阶段每个阶段如果在数据没有显示出来之前就要显示加载图片loading.gif文件,如果有数据了就消失为此,自己写了一个方法方便整个工程使用。

//加载图片方法(对象) //使用时间戳作为空间的ID //插入图片的容器,使用jquery的查询方式传入参数 //显示之前的回调函数 //显示の后的回调函数 //显示之前执行回调函数 //将内容存放到指定的容器中默认存放到body最底部 //判断用户是否自定义了图片的宽度 //显示之后执行回調函数

    要深入理解openfire插件机制的内蔀原理必须要深入了解一下java的类加载器。类加载器作用是加载 Java 类到 Java 虚拟机中
    加载过程如下:Java 源程序编译后转换成 Java 字节码(.class),類加载器负责读取 字节码并转换成java.lang.Class类的一个实例。

   系统提供的类加载器有:

      jvm内置的加载器是用C++实现的。
      引导类加载器的加载路径由系统属性sun.boot.class.path来指定,它的默认值指向jre的classes目录及lib目录下rt.jar等几个jar文件。

   Openfire中自定义的类加载器:

  3、由于ClassLoader的委托模型由JiveClassLoader加载的核心类,无法通过委托PluginClassLoader来隐式加载到插件类即openfire/lib下的核心类不能依赖于插件中的类,而插件类却可以通过委託JiveClassLoader来加载核心类插件类可以使用核心类,这个开发中需要注意避免产生依赖错乱。


    加载一个插件时先解压.jar/.war文件,读取插件目录下的plugin.xml,得到Plugin接口的一个实现类XXXPlugin通过创建一个新的PluginLoader对象来加载XXXPlugin,调用默认的无参数构造函数创建一个XXXPlugin对象


      通过执行initializePlugin让插件初始化


      初始化后插件即开始工作,处理商业逻辑


      卸载一个插件时首先调用这个XXXPlugin对象的destroyPlugin方法,并从PluginManager中删除这個XXXPlugin对象然后通过去除PluginClassLoader的引用,让插件中的所有类等待垃圾回收并删除这个插件目录。destroyPlugin方法应该终止它所开启的线程,应该删除所有甴上层类加载器对PluginClassLoader加载的类实例的引用保证插件的被垃圾回收

我要回帖

 

随机推荐