【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

对于不支持8.0的插件,对功能点记录的检查更加严格,同时也简化了功能点的写法,提供了注解的形式,具体如下:

注解形式添加功能记录点

9.0中添加了两个注解:@FunctionRecorder(id,localKey)@ExecuteFunctionRecord,分别代表注册一个功能点和记录当前功能点被使用。

FunctionRecorder注解

该注解用于描述一个类,使用了该注解的类会在运行时自动生成一个private static final FunctionProcessor __FUNCTION_PROCESSOR字段。

  1. id:可为空,表示使用插件ID作为id
  2. localKey:可为空,表示使用插件名作为描述

ExecuteFunctionRecord注解

该注解用于描述一个方法,每次调用被注解的方法时,都会执行recordFunction方法,将功能的使用此时记录到数据库中。

使用注解添加功能记录点
@FunctionRecorder
public class PoolProcessorImpl extends AbstractDataSourcePoolProcessor {
    @Override
    @ExecuteFunctionRecord
    public void createDataSourcePool(ObjectHolder ca, Set<String> cellTableDataSet) {
       //do something
    }
}

更严格的功能点检查

对于不需兼容8.0的插件,在运行前会对插件中是否添加了功能点进行检查,没有发现功能记录点的话,则不允许运行。为了更快的使插件引擎定位到记录功能点的类,需要在plugin.xml中添加<function-recorder>标签,指向定义了功能记录点的类。

xml中指向
<function-recorder class="com.fr.plugin.performance.datasourcepool.PoolProcessorImpl"/>

定义主包名

在插件ClassLoader加载插件的类时,会对class文件做一些修改,比如解析功能点注解、给主类(即xml的extra-core等标签内部描述的类)添加Closeable接口等操作。基于性能的考虑,只有指定包下的类会被处理,默认时com.fr.plugin,如果主类不在com.fr.plugin下,则不能正常运行。同时在xml中提供了自定义主包名的途径:

自定义主类包名
//xml中用这个标签来描述
<main-package>com.test.pack</main-package>
  • No labels

6 Comments

  1. Anonymous

    这两个注解需要import什么包?

  2. 功能点是个什么概念,能否详细讲解下

  3. 补充:@FunctionRecorder 注解仅写在designer模块可能造成tomcat下载插件时无法读取

     

  4. 功能点是个什么概念,能否详细讲解下

  5. Anonymous

    哪些类哪些方法需要功能点?能不能详细一点?总不能每个类每个方法都加吧,检查功能点是否存在的标准是什么?稍微详细一点啊,还有依赖于其他插件的情况,功能点怎么加?