Hi Belyakov,

Thank you so much. This is very helpful.

I am facing the following error when i am using this approach

Failed to start component: class org.apache.ignite.IgniteException: Failed
to initialize cache store (data source is not provided).

Below is the code used for implementation.I have configured the data source
property correctly but not sure why this error pops up.Can you please help
me on this.

package ignite.example.ignite_read;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Set;

//import javax.activation.DataSource;
import javax.cache.configuration.Factory;
import javax.cache.integration.CacheLoaderException;
import javax.sql.DataSource;

import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteException;
import org.apache.ignite.Ignition;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory;
import org.apache.ignite.cache.store.jdbc.JdbcType;
import org.apache.ignite.cache.store.jdbc.JdbcTypeField;
import org.apache.ignite.cache.store.jdbc.dialect.OracleDialect;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import
org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;

import oracle.jdbc.pool.OracleDataSource;

public class IgniteCacheload {
        
        @SuppressWarnings("unchecked")
        public static void main(String[] args) throws IgniteException, 
SQLException
{
                
                
        
                
                 IgniteConfiguration config = new IgniteConfiguration();
                 /*
                // config code
                 *
   
             try (Ignite ignite = Ignition.start(config)){

                CacheConfiguration<ProductKey,Products> prdCacheCfg = new
CacheConfiguration<>();

                prdCacheCfg.setName("ProdCache");
                prdCacheCfg.setCacheMode(CacheMode.PARTITIONED);
                prdCacheCfg.setAtomicityMode(CacheAtomicityMode.ATOMIC);

                //personCacheCfg.setReadThrough(true);
                //personCacheCfg.setWriteThrough(true);

                CacheJdbcPojoStoreFactory<ProductKey,Products> factory = new
CacheJdbcPojoStoreFactory<>();
                
                
                factory.setDialect(new OracleDialect());
                //factory.setDataSource(dsdetails());
                factory.setDataSourceFactory(dsdetails());

                JdbcType productType = new JdbcType();
                productType.setCacheName("ProdCache");
                productType.setKeyType(ProductKey.class);
                productType.setValueType(Products.class);
                // Specify the schema if applicable
                
                productType.setDatabaseTable("table");

                productType.setKeyFields(new 
JdbcTypeField(java.sql.Types.VARCHAR, "fid",
ProductKey.class, "FID"));
                productType.setValueFields(new 
JdbcTypeField(java.sql.Types.VARCHAR,
"scode", Products.class, "scode"));
                

                factory.setTypes(productType);

                prdCacheCfg.setCacheStoreFactory(factory);

                
                config.setCacheConfiguration(prdCacheCfg);
                
                
                        
                        IgniteCache<ProductKey, Products> cache =
ignite.getOrCreateCache(prdCacheCfg);
                        
                          cache.clear();

              // Load cache on all data nodes with default SQL statement.
              System.out.println(">>> Load ALL data to cache from DB...");
              cache.loadCache(null);
              

              System.out.println(">>> Loaded cache entries: " +
cache.size());
                        
                }
         catch (Exception e) {
                throw new CacheLoaderException("Failed to load the cache"+
e.getMessage());
        
        }
                
                
        }
        
        public static Factory<DataSource> dsdetails() throws SQLException{
        //public static DataSource dsdetails() throws SQLException{
                    OracleDataSource oraDataSrc = new OracleDataSource();
                    oraDataSrc.setURL("url");
                        oraDataSrc.setUser("username");
                        oraDataSrc.setPassword("pswd");
                    //return oraDataSrc;
                        return (Factory<DataSource>)oraDataSrc;
        
        }

}






--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to