Apache Ignite: включение загрузки однорангового класса не привело к автоматическому развертыванию классов StoreAdapter и Pojo

Я использую Apache Ignite 2.10.0, мне нужна функция чтения / записи для загрузки / записи данных в кеш из стороннего хранилища и в него, для этого я реализовал PersonStore, который расширяет класс CacheStoreAdapter. Я хочу, чтобы мои классы (PersonStore, pojo и другие) автоматически развертывались удаленно на серверный узел Ignite с клиентского узла, для этого я включил peerClassLoading в CacheConfiguration, на стартовом сервере я вижу

java.lang.RuntimeException: Failed to create an instance of com.demoIgnite.adapter.PersonStore
        at javax.cache.configuration.FactoryBuilder$ClassFactory.create(FactoryBuilder.java:134)
        .....
        at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
        at java.lang.Thread.run(Thread.java:745) 
Caused by:java.lang.ClassNotFoundException: com.demoIgnite.adapter.PersonStore
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at javax.cache.configuration.FactoryBuilder$ClassFactory.create(FactoryBuilder.java:130)

Однако, если я вручную попытаюсь поместить банку в библиотеки ignite, она будет работать абсолютно нормально. Но при таком подходе мне приходилось перестраивать, заменять и перезапускать сервер Ignite каждый раз, когда происходило изменение кода, которого я хотел избежать. Я новичок в Apache Ignite, и после прочтения документов ignite предположил, что это можно сделать автоматически, если включен peerClassLoading, пожалуйста, помогите мне, если мне что-то там не хватает. Также, пожалуйста, предложите мне способ сделать это автоматизированным.

Конфигурация моего кеша:

CacheConfiguration ‹String, Person› cachecfg = new CacheConfiguration ‹String, Person› (); cachecfg.setName (персональный магазин); cachecfg.setCacheMode (CacheMode.PARTITIONED); cachecfg.setAtomicityMode (CacheAtomicityMode.ATOMIC); cachecfg.setWriteSynchronizationMode (CacheWriteSynchronizationMode.FULL_SYNC); cachecfg.setReadThrough (истина); cachecfg.setWriteThrough (истина); cachecfg.setCacheStoreFactory (FactoryBuilder.factoryOf (PersonStore.class));

IgniteConfiguration:

IgniteConfiguration cfg = new IgniteConfiguration (); cfg.setIgniteInstanceName (my-ignite);
cfg.setClientMode (true); cfg.setPeerClassLoadingEnabled (истина); cfg.setDeploymentMode (DeploymentMode.CONTINUOUS); cfg.setCacheConfiguration (cacheCfg); TcpDiscoveryMulticastIpFinder ipFinder = новый TcpDiscoveryMulticastIpFinder (); ipFinder.setAddresses (Collections.singletonList (127.0.0.1:10800)); cfg.setDiscoverySpi (новый TcpDiscoverySpi (). setIpFinder (ipFinder));


person arun    schedule 08.04.2021    source источник


Ответы (1)


Кэш-хранилища и классы POJO не могут быть загружены одноранговыми узлами.

Одноранговая загрузка в основном предназначена для вызываемых вычислений, служб (режим на основе событий), некоторых слушателей и т. Д.

person alamar    schedule 08.04.2021