【仅供内部供应商使用,不提供对外解答和培训】
对于不支持8.0的插件,对功能点记录的检查更加严格,同时也简化了功能点的写法,提供了注解的形式,具体如下:
9.0中添加了两个注解:@FunctionRecorder(id,localKey)和@ExecuteFunctionRecord,分别代表注册一个功能点和记录当前功能点被使用。
该注解用于描述一个类,使用了该注解的类会在运行时自动生成一个private static final FunctionProcessor __FUNCTION_PROCESSOR字段。
该注解用于描述一个方法,每次调用被注解的方法时,都会执行recordFunction方法,将功能的使用此时记录到数据库中。
| Code Block | ||||
|---|---|---|---|---|
| ||||
@FunctionRecorder
public class PoolProcessorImpl extends AbstractDataSourcePoolProcessor {
@Override
@ExecuteFunctionRecord
public void createDataSourcePool(ObjectHolder ca, Set<String> cellTableDataSet) {
//do something
}
} |
对于不需兼容8.0的插件,在运行前会对插件中是否添加了功能点进行检查,没有发现功能记录点的话,则不允许运行。为了更快的使插件引擎定位到记录功能点的类,需要在plugin.xml中添加<function-recorder>标签,指向定义了功能记录点的类。
| Code Block | ||||
|---|---|---|---|---|
| ||||
<function-recorder class="com.fr.plugin.performance.datasourcepool.PoolProcessorImpl"/> |
在插件ClassLoader加载插件的类时,会对class文件做一些修改,比如解析功能点注解、给主类(即xml的extra-core等标签内部描述的类)添加Closeable接口等操作。基于性能的考虑,只有指定包下的类会被处理,默认时com.fr,如果主类不在.plugin,如果主类不在com.fr下,则不能正常运行。同时在xml中提供了自定义主包名的途径:.plugin下,则不能正常运行。同时在xml中提供了自定义主包名的途径:
| Code Block | ||||
|---|---|---|---|---|
| ||||
//xml中用这个标签来描述 <main-package>com.test.pack</main-package> |