【问题标题】:Apache Ignite Cache ClassNotFoundExceptionApache Ignite 缓存 ClassNotFoundException
【发布时间】:2018-03-28 08:23:03
【问题描述】:

我有一个 apache ignite 集群。

所有节点都分为两个逻辑组:平台级节点 (PLN) 和应用程序级节点 (ALN)。集群中的每个节点都有:

  • xml 配置文件(ALN 包含 PLN 配置和特定于应用程序的缓存配置)
  • 检测 ALN 的过滤器类

ALN 包含与 Ignite 缓存一起使用的 POJO 类,PLN 不包含此类并且不适合 nodeFilter

BUT PLN 在启动时(使用 ALN 加入集群)尝试应用 ALN 缓存配置并捕获与应用程序 POJO 类相关的 ClassNotFoundException

如果不适合 nodeFilter 是否可以点燃服务器节点忽略缓存配置?

【问题讨论】:

    标签: classnotfoundexception ignite


    【解决方案1】:

    所有Ignite节点都需要在集群中有所有缓存配置。

    nodeFilter 仅约束保存数据用于缓存的节点集。集群中的所有节点都可以查询任何缓存,因此它们需要这些信息。

    如果需要,您可以拥有两个集群,即使在单个 JVM(每个节点)内也是如此。这样他们就不会以任何方式进行交互。

    【讨论】:

      【解决方案2】:

      如果在应该在服务器端执行的用户代码中使用二进制对象概念[1],则在大多数情况下,Ignite 不需要在服务器端的类路径中包含 Key/Value 类。

      但是,Ignite 配置中提到的用户类必须在所有节点的类路径中。如果您需要 SQL 索引并使用二进制对象,则可以在网格启动时通过 SQL 查询动态创建索引。

      请看一下 BinaryObject 概念 [1]。希望对您有所帮助。

      [1]https://apacheignite.readme.io/docs/binary-marshaller#section-basic-concepts

      【讨论】:

      • 感谢您的澄清
      猜你喜欢
      • 2017-10-01
      • 2021-11-17
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      相关资源
      最近更新 更多