i m trying to integrate Apache Ignite with Apache Cassandra(Cassandra 3.11.10) as I want to use Ignite to cache the data present in Cassandra. I Created 3 xml files :
- content of cassandra-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Cassandra connection settings -->
<import resource="file:/opt/ignite/config/connection-settings.xml"/>
<!--<import resource="classpath:org/apache/ignite/tests/cassandra/connection-settings.xml" /> -->
<!-- Persistence settings for 'cache1' -->
<bean id="cache1_persistence_settings" class="org.apache.ignite.cache.store.cassandra.persistence.KeyValuePersistenceSettings">
<constructor-arg type="org.springframework.core.io.Resource" value="file:/opt/ignite/config/persistance-settings.xml" />
</bean>
<!-- Ignite configuration -->
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="cache1"/>
<property name="readThrough" value="true"/>
<property name="writeThrough" value="true"/>
<property name="cacheStoreFactory">
<bean class="org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory">
<property name="dataSourceBean" value="cassandraAdminDataSource"/>
<!--
- instance de la classe org.apache.ignite.cache.store.cassandra.datasource.DataSource
responsable de tous les aspects de la connexion à la base de données Cassandra
(identifiants, points de contact, niveau de cohérence en lecture/écriture, politique d'équilibrage de charge et etc…)
-->
<property name="persistenceSettingsBean" value="cache1_persistence_settings"/>
<!--
- instance de la classe org.apache.ignite.cache.store.cassandra.persistence.KeyValuePersistenceSettings
responsable de tous les aspects de la persistance des objets dans Cassandra (keyspace et ses options,
table et ses options, options de clé de partition et de cluster, Mappage des champs d'objet POJO,
index secondaires, sérialiseur pour les objets BLOB et etc…)
-->
</bean>
</property>
</bean>
</property>
</bean>
</beans>
- content of connection-settings.xml:
- content of persistance-settings.xml :
<persistence keyspace="K_ignite" table="T_ignite">
<keyspaceOptions>
REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1}
AND DURABLE_WRITES = true
</keyspaceOptions>
<keyPersistence class="java.lang.String" strategy="PRIMITIVE"/>
<valuePersistence class="org.mycompany.MyValueClass" strategy="BLOB"/>
</persistence>
I run the following command to start Ignite
$ ignite.sh cassandra-config.xml
i get this error :
class org.apache.ignite.IgniteException: Failed to instantiate Spring XML application context (make sure all classes used in Spring configuration are present at CLASSPATH) [springUrl=file:/opt/ignite/config/cassandra-config.xml]
at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1098)
at org.apache.ignite.Ignition.start(Ignition.java:356)
at org.apache.ignite.startup.cmdline.CommandLineStartup.main(CommandLineStartup.java:367)
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to instantiate Spring XML application context (make sure all classes used in Spring configuration are present at CLASSPATH) [springUrl=file:/opt/ignite/config/cassandra-config.xml]
at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.applicationContext(IgniteSpringHelperImpl.java:387)
at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:104)
at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.loadConfigurations(IgniteSpringHelperImpl.java:98)
at org.apache.ignite.internal.IgnitionEx.loadConfigurations(IgnitionEx.java:741)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:942)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:851)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:721)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:690)
at org.apache.ignite.Ignition.start(Ignition.java:353)
... 1 more
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.datastax.driver.core.policies.TokenAwarePolicy] for bean with name 'loadBalancingPolicy' defined in URL [file:/opt/ignite/config/connection-settings.xml]; nested exception is java.lang.ClassNotFoundException: com.datastax.driver.core.policies.TokenAwarePolicy
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1397)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:638)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:607)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1496)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1018)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:737)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
at org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl.applicationContext(IgniteSpringHelperImpl.java:381)
... 9 more
Caused by: java.lang.ClassNotFoundException: com.datastax.driver.core.policies.TokenAwarePolicy
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:251)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408)
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1444)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1389)
... 17 more
Failed to start grid: Failed to instantiate Spring XML application context (make sure all classes used in Spring configuration are present at CLASSPATH) [springUrl=file:/opt/ignite/config/cassandra-config.xml]
Note! You may use 'USER_LIBS' environment variable to specify your classpath.
NB I'm using the same node for both Cassandra and Ignite (localhost)
please, any suggestions or tips to follow to solve this problem
thanks in advance