@liyuj
2018-06-20T09:23:23.000000Z
字数 1625
阅读 4480
Apache-Ignite-2.3.0-中文开发手册
Ignite的插件系统可以使第三方扩展Ignite的核心功能,理解Ignite插件工作方式的最佳途径是去看一下Ignite的生命周期插件。
每个插件都需要一个PluginConfiguration,然后在IgniteConfiguration.pluginConfigurations属性中注册,如下所示:
XML:
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"><!-- Plugin Configuration --><property name="pluginConfigurations"><bean class="ignite.myexamples.MyPluginConfiguration"/></property><!--Other Ignite configurations --></bean>
Java:
IgniteConfiguration cfg = new IgniteConfiguration();MyPluginConfiguration mpc = new MyPluginConfiguration();cfg.setPluginConfigurations(mpc);Ignition.start(cfg);// Start Ignite node.Ignite ignite = Ignition.start(cfg);
一个PluginConfiguration的实现,如下所示:
public class MyPluginConfiguration implements PluginConfiguration {// Get and Set some plugin related properties}
这个类可以为空,也可以包括部分插件特有的属性,但是它必须存在。
PluginProvider<PluginConfiguration>实现是新添加的插件的构造器,它在节点启动时创建了插件。这个接口有很多的方法,根据需要可以实现或者置空,但是,name()和plugin()方法不能为空。
public class MyPluginProvider implements PluginProvider<MyPluginConfiguration> {@Overridepublic String name() {return "IGNITE";}@Overridepublic <T extends IgnitePlugin> T plugin() {return (T)new MyPlugin();}@Nullable@Overridepublic <T> T createComponent(PluginContext pluginContext, Class<T> aClass) {return null;}// Other methods can be no-op}
PluginProvider<PluginConfiguration>接口有三个重要的方法:
name():插件的名字;plugin():创建插件;createComponent():这个方法用于创建Ignite中的已有组件,比如数据快照、网格安全、节点发现、以及第三方Java API的跨平台支持等。Ignite的插件使用JDK的ServiceLoader类进行加载,对于要加载的插件构造器,需要在META-INF文件夹中创建一个名为org.apache.ignite.plugin.PluginProvider的文件:
然后在该文件中提供插件构造器的实现类:

