首先介绍一下Nutch插件使用到的几个类:
1.PluginRepository:存储了PluginDescriptor,Extension,ExtensionPoint
2.PluginDescriptor:描述插件的元数据,从plugin.xml处获得
3.Plugin:插件的一个抽象
4.ExtensionPoint:扩展点,nutch有15个扩展点,所有插件都集中在nutch-extensionpoints中,它本身也是个插件
5.extension:对扩展点的实现,一个插件点可以有多个实现
6.PluginManifestParse:解析plugin.xml,生成对应PluginDescriptor
7.PluginClassLoader:根据urls动态生成相应的插件实现对象
具体讲解几个类:(1)一个ExtensionPoint 包含多个Extension,Extention是对Extensionpoint的实现。(2)PluginManifestParser负责对插件目录列表中的每个插件描述文件plugin.xml进行解析,然后将结果保存在PluginDescriptor中。(3)可以理解为PluginDescriptor时plugin.xml的java描述。
整个插件系统的加载过程是:
1.初始化PluginRespository,读取各种配置文件,主要来自nutch-site.xml,nutch-default.xml
2.得到PluginManifestParser,对所有插件文件进行遍历,然后对每一个plugin.xml生成一个对应的PluginDexcriptor,最后得到一个List,存放所有对象
3.根据配置文件,过滤掉一些插件
4.插件依赖关系检查,调用getDependencyCheckedPlugins(),将所有依赖的插件加入到集合中
5.安装插件
更详细的介绍请看: http://blog.csdn.net/amuseme_lu/article/details/6786261