java - 使用CacheJdbcPojoStoreFactory加载缓存时出现异常

标签 java mysql ignite

我的 dDcker 容器中有一个简单的 MySQL 数据库,它工作得很好。

我正在尝试使用最新版本实现 Apache Ignite 内存中功能。

这是我所做的:

import java.net.InetSocketAddress;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import org.apache.ignite.Ignite;
import org.apache.ignite.Ignition;
import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory;
import org.apache.ignite.cache.store.jdbc.dialect.JdbcDialect;
import org.apache.ignite.cache.store.jdbc.dialect.MySQLDialect;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.lang.IgniteBiPredicate;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder;

import com.mysql.cj.jdbc.MysqlDataSource;

public class Main {

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        IgniteConfiguration cfg = new IgniteConfiguration();

        CacheConfiguration cacheCfg = new CacheConfiguration();

        CacheJdbcPojoStoreFactory jdbcPojoFacotry = new CacheJdbcPojoStoreFactory();
        MysqlDataSource jdbcDatasource = new MysqlDataSource();
        jdbcDatasource.setCreateDatabaseIfNotExist(true);
        jdbcDatasource.setUser("root");
        jdbcDatasource.setPassword("123456");
        jdbcDatasource.setURL("jdbc:mysql://172.17.0.2:3306/wanasis");
        jdbcPojoFacotry.setDataSource(jdbcDatasource);
        JdbcDialect dialect= new MySQLDialect();
        jdbcPojoFacotry.setDialect(dialect);
        cacheCfg.setCacheStoreFactory(jdbcPojoFacotry);
        cacheCfg.setName("wanasis");
        
        cfg.setCacheConfiguration(cacheCfg);
        
        
        TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
        TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
        Collection<InetSocketAddress> addrs = new ArrayList<InetSocketAddress>();
        InetSocketAddress localhost;
        for (int i = 0; i < 6; i++) {

            localhost = new InetSocketAddress("127.0.0.1", 47500+i);
            addrs.add(localhost);

        }
        
        ipFinder.registerAddresses(addrs);
        discoSpi.setIpFinder(ipFinder);
        cfg.setDiscoverySpi(discoSpi);

        Ignite ignite = Ignition.start(cfg);

         IgniteBiPredicate<Object, Object> predicate = new IgniteBiPredicate<Object, Object>() {
            
            @Override
            public boolean apply(Object e1, Object e2) {
                // TODO Auto-generated method stub
                return true;
            }
        };
        ignite.cache("wanasis").loadCache(predicate );
        
        System.out.println();

        // Register JDBC driver.
        Class.forName("org.apache.ignite.IgniteJdbcThinDriver");

        // Open JDBC connection.
        Connection conn = DriverManager.getConnection("jdbc:ignite:thin://127.0.0.1/");

        // Create database tables.
        try (Statement stmt = conn.createStatement()) {

            // Create table based on REPLICATED template.
            stmt.executeUpdate(
                    "CREATE TABLE City (" + " id LONG PRIMARY KEY, name VARCHAR) " + " WITH \"template=replicated\"");

            // Create table based on PARTITIONED template with one backup.
            stmt.executeUpdate("CREATE TABLE Person (" + " id LONG, name VARCHAR, city_id LONG, "
                    + " PRIMARY KEY (id, city_id)) " + " WITH \"backups=1, affinityKey=city_id\"");

            // Create an index on the City table.
            stmt.executeUpdate("CREATE INDEX idx_city_name ON City (name)");

            // Create an index on the Person table.
            stmt.executeUpdate("CREATE INDEX idx_person_name ON Person (name)");
        }

        // Populate City table
        try (PreparedStatement stmt = conn.prepareStatement("INSERT INTO City (id, name) VALUES (?, ?)")) {

            stmt.setLong(1, 1L);
            stmt.setString(2, "Forest Hill");
            stmt.executeUpdate();

            stmt.setLong(1, 2L);
            stmt.setString(2, "Denver");
            stmt.executeUpdate();

            stmt.setLong(1, 3L);
            stmt.setString(2, "St. Petersburg");
            stmt.executeUpdate();
        }

        // Populate Person table
        try (PreparedStatement stmt = conn
                .prepareStatement("INSERT INTO Person (id, name, city_id) VALUES (?, ?, ?)")) {

            stmt.setLong(1, 1L);
            stmt.setString(2, "John Doe");
            stmt.setLong(3, 3L);
            stmt.executeUpdate();

            stmt.setLong(1, 2L);
            stmt.setString(2, "Jane Roe");
            stmt.setLong(3, 2L);
            stmt.executeUpdate();

            stmt.setLong(1, 3L);
            stmt.setString(2, "Mary Major");
            stmt.setLong(3, 1L);
            stmt.executeUpdate();

            stmt.setLong(1, 4L);
            stmt.setString(2, "Richard Miles");
            stmt.setLong(3, 2L);
            stmt.executeUpdate();
        }
        try (Statement stmt = conn.createStatement()) {
            try (ResultSet rs = stmt
                    .executeQuery("SELECT p.name, c.name " + " FROM Person p, City c " + " WHERE p.city_id = c.id")) {

                while (rs.next())
                    System.out.println(rs.getString(1) + ", " + rs.getString(2));
            }
        }
    }

}

这是控制台日志

[01:08:29]    __________  ________________ 
[01:08:29]   /  _/ ___/ |/ /  _/_  __/ __/ 
[01:08:29]  _/ // (7 7    // /  / / / _/   
[01:08:29] /___/\___/_/|_/___/ /_/ /___/  
[01:08:29] 
[01:08:29] ver. 2.7.6#20190911-sha1:21f7ca41
[01:08:29] 2019 Copyright(C) Apache Software Foundation
[01:08:29] 
[01:08:29] Ignite documentation: http://ignite.apache.org
[01:08:29] 
[01:08:29] Quiet mode.
[01:08:29]   ^-- Logging by 'JavaLogger [quiet=true, config=null]'
[01:08:29]   ^-- To see **FULL** console log here add -DIGNITE_QUIET=false or "-v" to ignite.{sh|bat}
[01:08:29] 
[01:08:30] OS: Linux 5.0.0-32-generic amd64
[01:08:30] VM information: OpenJDK Runtime Environment 1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10 Private Build OpenJDK 64-Bit Server VM 25.222-b10
[01:08:30] Please set system property '-Djava.net.preferIPv4Stack=true' to avoid possible problems in mixed environments.
[01:08:30] Initial heap size is 124MB (should be no less than 512MB, use -Xms512m -Xmx512m).
[01:08:30] Configured plugins:
[01:08:30]   ^-- None
[01:08:30] 
[01:08:30] Configured failure handler: [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0, super=AbstractFailureHandler [ignoredFailureTypes=[SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]]]
[01:08:30] Message queue limit is set to 0 which may lead to potential OOMEs when running cache operations in FULL_ASYNC or PRIMARY_SYNC modes due to message queues growth on sender and receiver sides.
[01:08:30] Security status [authentication=off, tls/ssl=off]
[01:08:34] Persistence store is configured, but both read-through and write-through are disabled for cache: wanasis
[01:08:34] Performance suggestions for grid  (fix if possible)
[01:08:34] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true
[01:08:34]   ^-- Enable G1 Garbage Collector (add '-XX:+UseG1GC' to JVM options)
[01:08:34]   ^-- Specify JVM heap max size (add '-Xmx<size>[g|G|m|M|k|K]' to JVM options)
[01:08:34]   ^-- Set max direct memory size if getting 'OOME: Direct buffer memory' (add '-XX:MaxDirectMemorySize=<size>[g|G|m|M|k|K]' to JVM options)
[01:08:34]   ^-- Disable processing of calls to System.gc() (add '-XX:+DisableExplicitGC' to JVM options)
[01:08:34] Refer to this page for more performance suggestions: https://apacheignite.readme.io/docs/jvm-and-system-tuning
[01:08:34] 
[01:08:34] To start Console Management & Monitoring run ignitevisorcmd.{sh|bat}
[01:08:34] Data Regions Configured:
[01:08:34]   ^-- default [initSize=256.0 MiB, maxSize=1.5 GiB, persistence=false]
[01:08:34] 
[01:08:34] Ignite node started OK (id=a13fb078)
[01:08:34] Topology snapshot [ver=1, locNode=a13fb078, servers=1, clients=0, state=ACTIVE, CPUs=4, offheap=1.5GB, heap=1.7GB]
Nov 15, 2019 1:09:49 AM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Failed to execute job [jobId=c68c36c6e61-a13fb078-fed3-426b-a312-6bc83349df86, ses=GridJobSessionImpl [ses=GridTaskSessionImpl [taskName=o.a.i.i.processors.cache.GridCacheAdapter$LoadCacheJobV2, dep=LocalDeployment [super=GridDeployment [ts=1573776510740, depMode=SHARED, clsLdr=sun.misc.Launcher$AppClassLoader@18b4aac2, clsLdrId=658c36c6e61-a13fb078-fed3-426b-a312-6bc83349df86, userVer=0, loc=true, sampleClsName=java.lang.String, pendingUndeploy=false, undeployed=false, usage=0]], taskClsName=o.a.i.i.processors.cache.GridCacheAdapter$LoadCacheJobV2, sesId=b68c36c6e61-a13fb078-fed3-426b-a312-6bc83349df86, startTime=1573776519235, endTime=9223372036854775807, taskNodeId=a13fb078-fed3-426b-a312-6bc83349df86, clsLdr=sun.misc.Launcher$AppClassLoader@18b4aac2, closed=false, cpSpi=null, failSpi=null, loadSpi=null, usage=1, fullSup=false, internal=true, topPred=null, subjId=a13fb078-fed3-426b-a312-6bc83349df86, mapFut=IgniteFuture [orig=GridFutureAdapter [ignoreInterrupts=false, state=INIT, res=null, hash=730955696]], execName=null], jobId=c68c36c6e61-a13fb078-fed3-426b-a312-6bc83349df86]]
class org.apache.ignite.IgniteException: java.lang.NullPointerException
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.execute(GridClosureProcessor.java:1858)
    at org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:568)
    at org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6820)
    at org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:562)
    at org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:491)
    at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
    at org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1125)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1420)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:666)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:538)
    at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
    at org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:764)
    at org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:452)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:449)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:420)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:404)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.globalLoadCacheAsync(GridCacheAdapter.java:3869)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.globalLoadCache(GridCacheAdapter.java:3842)
    at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.loadCache(IgniteCacheProxyImpl.java:298)
    at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.loadCache(GatewayProtectedCacheProxy.java:275)
    at com.wanasis.ignite.Main.main(Main.java:77)
Caused by: class org.apache.ignite.IgniteException: java.lang.NullPointerException
    at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1029)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$LoadCacheJob.localExecute(GridCacheAdapter.java:5681)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$LoadCacheJobV2.localExecute(GridCacheAdapter.java:5725)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$TopologyVersionAwareJob.execute(GridCacheAdapter.java:6361)
    at org.apache.ignite.compute.ComputeJobAdapter.call(ComputeJobAdapter.java:132)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.execute(GridClosureProcessor.java:1855)
    ... 20 more
Caused by: class org.apache.ignite.IgniteCheckedException: java.lang.NullPointerException
    at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadCache(GridCacheStoreManagerAdapter.java:546)
    at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter.localLoadCache(GridDhtCacheAdapter.java:630)
    at org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.localLoadCache(GridCacheProxyImpl.java:222)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$LoadCacheJob.localExecute(GridCacheAdapter.java:5676)
    ... 24 more
Caused by: javax.cache.integration.CacheLoaderException: java.lang.NullPointerException
    ... 28 more
Caused by: java.lang.NullPointerException
    at org.apache.ignite.cache.store.jdbc.CacheAbstractJdbcStore.getOrCreateCacheMappings(CacheAbstractJdbcStore.java:591)
    at org.apache.ignite.cache.store.jdbc.CacheAbstractJdbcStore.loadCache(CacheAbstractJdbcStore.java:691)
    at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadCache(GridCacheStoreManagerAdapter.java:520)
    ... 27 more

Nov 15, 2019 1:10:02 AM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Failed to obtain remote job result policy for result from ComputeTask.result(..) method (will fail the whole task): GridJobResultImpl [job=C2 [c=LoadCacheJobV2 [keepBinary=false]], sib=GridJobSiblingImpl [sesId=b68c36c6e61-a13fb078-fed3-426b-a312-6bc83349df86, jobId=c68c36c6e61-a13fb078-fed3-426b-a312-6bc83349df86, nodeId=a13fb078-fed3-426b-a312-6bc83349df86, isJobDone=false], jobCtx=GridJobContextImpl [jobId=c68c36c6e61-a13fb078-fed3-426b-a312-6bc83349df86, timeoutObj=null, attrs={}], node=TcpDiscoveryNode [id=a13fb078-fed3-426b-a312-6bc83349df86, addrs=[0:0:0:0:0:0:0:1%lo, 127.0.0.1, 172.17.0.1, 192.168.1.108], sockAddrs=[/192.168.1.108:47500, /172.17.0.1:47500, /0:0:0:0:0:0:0:1%lo:47500, /127.0.0.1:47500], discPort=47500, order=1, intOrder=1, lastExchangeTime=1573776512431, loc=true, ver=2.7.6#20190911-sha1:21f7ca41, isClient=false], ex=class o.a.i.IgniteException: java.lang.NullPointerException, hasRes=true, isCancelled=false, isOccupied=true]
class org.apache.ignite.IgniteException: Remote job threw user exception (override or implement ComputeTask.result(..) method if you would like to have automatic failover for this exception): java.lang.NullPointerException
    at org.apache.ignite.compute.ComputeTaskAdapter.result(ComputeTaskAdapter.java:102)
    at org.apache.ignite.internal.processors.task.GridTaskWorker$5.apply(GridTaskWorker.java:1053)
    at org.apache.ignite.internal.processors.task.GridTaskWorker$5.apply(GridTaskWorker.java:1046)
    at org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6852)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.result(GridTaskWorker.java:1046)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:864)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.processDelayedResponses(GridTaskWorker.java:713)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:544)
    at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
    at org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:764)
    at org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:452)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:449)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:420)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:404)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.globalLoadCacheAsync(GridCacheAdapter.java:3869)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.globalLoadCache(GridCacheAdapter.java:3842)
    at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.loadCache(IgniteCacheProxyImpl.java:298)
    at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.loadCache(GatewayProtectedCacheProxy.java:275)
    at com.wanasis.ignite.Main.main(Main.java:77)
Caused by: class org.apache.ignite.IgniteException: java.lang.NullPointerException
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.execute(GridClosureProcessor.java:1858)
    at org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:568)
    at org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6820)
    at org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:562)
    at org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:491)
    at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
    at org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1125)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1420)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:666)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:538)
    ... 11 more
Caused by: class org.apache.ignite.IgniteException: java.lang.NullPointerException
    at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1029)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$LoadCacheJob.localExecute(GridCacheAdapter.java:5681)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$LoadCacheJobV2.localExecute(GridCacheAdapter.java:5725)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$TopologyVersionAwareJob.execute(GridCacheAdapter.java:6361)
    at org.apache.ignite.compute.ComputeJobAdapter.call(ComputeJobAdapter.java:132)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.execute(GridClosureProcessor.java:1855)
    ... 20 more
Caused by: class org.apache.ignite.IgniteCheckedException: java.lang.NullPointerException
    at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadCache(GridCacheStoreManagerAdapter.java:546)
    at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter.localLoadCache(GridDhtCacheAdapter.java:630)
    at org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.localLoadCache(GridCacheProxyImpl.java:222)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$LoadCacheJob.localExecute(GridCacheAdapter.java:5676)
    ... 24 more
Caused by: javax.cache.integration.CacheLoaderException: java.lang.NullPointerException
    ... 28 more
Caused by: java.lang.NullPointerException
    at org.apache.ignite.cache.store.jdbc.CacheAbstractJdbcStore.getOrCreateCacheMappings(CacheAbstractJdbcStore.java:591)
    at org.apache.ignite.cache.store.jdbc.CacheAbstractJdbcStore.loadCache(CacheAbstractJdbcStore.java:691)
    at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadCache(GridCacheStoreManagerAdapter.java:520)
    ... 27 more

Exception in thread "main" javax.cache.integration.CacheLoaderException: java.lang.NullPointerException
    at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadCache(GridCacheStoreManagerAdapter.java:546)
    at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter.localLoadCache(GridDhtCacheAdapter.java:630)
    at org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.localLoadCache(GridCacheProxyImpl.java:222)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$LoadCacheJob.localExecute(GridCacheAdapter.java:5676)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$LoadCacheJobV2.localExecute(GridCacheAdapter.java:5725)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter$TopologyVersionAwareJob.execute(GridCacheAdapter.java:6361)
    at org.apache.ignite.compute.ComputeJobAdapter.call(ComputeJobAdapter.java:132)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.execute(GridClosureProcessor.java:1855)
    at org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:568)
    at org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6820)
    at org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:562)
    at org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:491)
    at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
    at org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1125)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1420)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:666)
    at org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:538)
    at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
    at org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:764)
    at org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:452)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:449)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:420)
    at org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:404)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.globalLoadCacheAsync(GridCacheAdapter.java:3869)
    at org.apache.ignite.internal.processors.cache.GridCacheAdapter.globalLoadCache(GridCacheAdapter.java:3842)
    at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.loadCache(IgniteCacheProxyImpl.java:298)
    at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.loadCache(GatewayProtectedCacheProxy.java:275)
    at com.wanasis.ignite.Main.main(Main.java:77)
Caused by: java.lang.NullPointerException
    at org.apache.ignite.cache.store.jdbc.CacheAbstractJdbcStore.getOrCreateCacheMappings(CacheAbstractJdbcStore.java:591)
    at org.apache.ignite.cache.store.jdbc.CacheAbstractJdbcStore.loadCache(CacheAbstractJdbcStore.java:691)
    at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadCache(GridCacheStoreManagerAdapter.java:520)
    ... 27 more

我的数据库包含一些数据,我不知道为什么会出现空指针异常。

最佳答案

您需要通过指定 setTypessetQueryEntities 来完成 CacheJdbcPojoStoreFactory 配置。

请使用示例部分作为引用:

https://apacheignite.readme.io/docs/3rd-party-store#section-example

当然,您需要将其从 Spring XML 转换为 Java,因为这是您的用例。

关于java - 使用CacheJdbcPojoStoreFactory加载缓存时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868507/

相关文章:

java - 获取 IgniteCheckedException : Default Ignite instance has already been started exception when enabling Persistence on single Node

hadoop - 具有远程部署的Hadoop键值存储

ignite - 使用 Ignite 对象时来自 GridUnsafe 的 Apache Ignite IllegalAccessException

java - Collection 接口(interface)中的可选方法

java.rmi.UnmarshalException : java. lang.ClassNotFoundException。无法使用 RMI 从另一个物理 JVM 访问类

超过三个单词的 MySQL SELECT 值

php - 在mysql中建立三张表的查询

PHP Payal 根据购买的产品更新 MySQL

java - RxJava;如何同步发射 observables

java - 具有通用引用的树接口(interface)