Я использую 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));