当前位置: 首页 > 知识库问答 >
问题:

是否有方法设置一个Ignite瘦客户端类加载器?

师向文
2023-03-14
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setClassLoader(MyClass.class.getClassLoader());
Ignite ig = Ignition.start(cfg);
IgniteCache<Integer,MyClass> myCache = ig.getOrCreateCache("MyClass");
MyClass mc = myCache.get( 0 ); //throws java.lang.ClassNotFoundException without line 2
ClientConfiguration cfg = new ClientConfiguration();
ClientIgnite ig = Ignition.startClient(cfg);
ClientCache<Integer,MyClass> myCache = ig.getOrCreateCache("MyClass");
MyClass mc = myCache.get( 0 ); //throws java.lang.ClassNotFoundException

共有1个答案

徐焱
2023-03-14

在仔细考虑这个问题之后,我决定尝试从tomcat方面解决这个问题,而不是点燃这个问题。下面是帮助我更好地理解这个问题的链接。

最后,问题是ignite类是由一个类加载器加载的,这个类加载器是我的web应用程序类加载器的父类。

  • 启动时,我的WebApp的类加载器将检查其父加载器中的我的键值对,而不是找到它们,然后自己加载它们。
  • 接下来当我使用Ignite类时,WebApp的类将查看其父类加载器(公共类加载器),发现父类已经加载了类,并将该类加载器用于Ignite类。
  • 当Ignite类试图将我的类转换为二进制文件时,它将在其父类加载器中查找类,而不是自己查找并加载它们。
  • 当我试图从缓存中获取值时,会出现冲突,因为Ignite和Tomcat各自加载了类。
 类似资料:
  • 我正在尝试使用apache-spark读取和写入Ignite集群,我可以使用JDBC瘦客户机,但不是本机方法,正如几个spark+Ignite示例中提到的那样。 现在,所有的spark+ignite示例都启动了一个本地ignite集群,但我希望我的代码作为客户端连接到已经存在的集群。 完整代码:-(sparkDSLExample)函数无法使用thin连接ignite远程群集 示例-default.

  • 现在我使用的是瘦客户机的ignite ClientCache,我没有找到ClientCache的分布式锁,如果要使用分布式锁,必须使用ignition.start()

  • 我使用Apache Ignite 2.7.5作为.NET核心中服务器和瘦客户机。当我做与缓存相关的操作时,put、get和load等.net核心应用程序会自动崩溃。 因此,我想处理for循环内部的异常,例如、、等,然后从catch块抛出for循环,否则如果只有异常块,则继续循环迭代。

  • 我有一个正在运行的Ignite集群,并且我使用进行节点发现: 它工作得很好,我可以使用节点连接到这个集群。 null

  • 我有两个节点ignite集群,在运行我的dropwizard配置文件中的java进程时,我给出了url作为 ,但它给出的错误为。 我尝试将url添加为 我的Java进程无法连接到ignite。有人能帮帮我吗?

  • 当使用.NET瘦客户端时,是否可以启动和提交/回滚Ignite事务?我没有找到开始交易的方法。谢谢你!