[关闭]
@liyuj 2018-06-20T09:23:23.000000Z 字数 1625 阅读 2227

Apache-Ignite-2.3.0-中文开发手册

13.插件

13.1.插件

13.1.1.摘要

Ignite的插件系统可以使第三方扩展Ignite的核心功能,理解Ignite插件工作方式的最佳途径是去看一下Ignite的生命周期插件。

13.1.2.插件的配置

每个插件都需要一个PluginConfiguration,然后在IgniteConfiguration.pluginConfigurations属性中注册,如下所示:
XML:

  1. <bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
  2. <!-- Plugin Configuration -->
  3. <property name="pluginConfigurations">
  4. <bean class="ignite.myexamples.MyPluginConfiguration"/>
  5. </property>
  6. <!--Other Ignite configurations -->
  7. </bean>

Java:

  1. IgniteConfiguration cfg = new IgniteConfiguration();
  2. MyPluginConfiguration mpc = new MyPluginConfiguration();
  3. cfg.setPluginConfigurations(mpc);
  4. Ignition.start(cfg);
  5. // Start Ignite node.
  6. Ignite ignite = Ignition.start(cfg);

一个PluginConfiguration的实现,如下所示:

  1. public class MyPluginConfiguration implements PluginConfiguration {
  2. // Get and Set some plugin related properties
  3. }

这个类可以为空,也可以包括部分插件特有的属性,但是它必须存在

13.1.3.插件提供者

PluginProvider<PluginConfiguration>实现是新添加的插件的构造器,它在节点启动时创建了插件。这个接口有很多的方法,根据需要可以实现或者置空,但是,name()plugin()方法不能为空

  1. public class MyPluginProvider implements PluginProvider<MyPluginConfiguration> {
  2. @Override
  3. public String name() {
  4. return "IGNITE";
  5. }
  6. @Override
  7. public <T extends IgnitePlugin> T plugin() {
  8. return (T)new MyPlugin();
  9. }
  10. @Nullable
  11. @Override
  12. public <T> T createComponent(PluginContext pluginContext, Class<T> aClass) {
  13. return null;
  14. }
  15. // Other methods can be no-op
  16. }

PluginProvider<PluginConfiguration>接口有三个重要的方法:

13.1.3.1.加载插件提供者

Ignite的插件使用JDK的ServiceLoader类进行加载,对于要加载的插件构造器,需要在META-INF文件夹中创建一个名为org.apache.ignite.plugin.PluginProvider的文件:

然后在该文件中提供插件构造器的实现类:

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注