Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mapstore未从数据库Hazelcast加载数据_Java_Mysql_Hazelcast - Fatal编程技术网

Java Mapstore未从数据库Hazelcast加载数据

Java Mapstore未从数据库Hazelcast加载数据,java,mysql,hazelcast,Java,Mysql,Hazelcast,我正在使用Hazelcast和mysql。 我在mysql中为我的表创建了一个mapstore。我试图做的是使用数据库中的map.loadAll填充数据。我的地图商店实现如下 public class CityMapStore implements MapStore<Long, City> { private final Connection con; public CityMapStore() { try { con = Drive

我正在使用Hazelcast和mysql。
我在mysql中为我的表创建了一个mapstore。我试图做的是使用数据库中的map.loadAll填充数据。我的地图商店实现如下

public class CityMapStore
    implements MapStore<Long, City>
{
    private final Connection con;

    public CityMapStore() {
    try {
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/hazel", "root",         "root123");
        con.createStatement().executeUpdate(
                "create table if not exists City (id bigint, name varchar(45), primary key (id))");
    } catch (SQLExpublic synchronized void delete(Long key) {
    System.out.println("Delete:" + key);
    try {
        con.createStatement().executeUpdate(
                String.format("delete from City where id = %s", key));
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}ception e) {
        throw new RuntimeException(e);
    }
}

    public synchronized void delete( Long key )
    {
        System.out.println( "Delete:" + key );
        try
        {
            con.createStatement().executeUpdate( String.format( "delete from City where id = %s", key ) );
        }
        catch ( SQLException e )
        {
            throw new RuntimeException( e );
        }
    }

    public synchronized void deleteAll( Collection<Long> keys )
    {
        for ( Long key : keys )
            delete( key );
    }

    public synchronized void storeAll( Map<Long, City> map )
    {
        for ( Map.Entry<Long, City> entry : map.entrySet() )
            store( entry.getKey(), entry.getValue() );
    }

    public synchronized Map<Long, City> loadAll( Collection<Long> keys )
    {
        Map<Long, City> result = new HashMap<Long, City>();
        for ( Long key : keys )
            result.put( key, load( key ) );
        return result;
    }

    public Set<Long> loadAllKeys()
    {
        return null;
    }
}
公共类城市邮箱
实现MapStore
{
私人最终连接con;
公共城市购物中心(){
试一试{
con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/hazel“、”根“、”根123”);
con.createStatement().executeUpdate(
“如果不存在,则创建表City(id bigint,name varchar(45),primary key(id))”;
}捕获(SQLExpublic同步无效删除(长键){
System.out.println(“删除:+键);
试一试{
con.createStatement().executeUpdate(
格式(“从id=%s的城市删除”,键));
}捕获(SQLE异常){
抛出新的运行时异常(e);
}
}(e){
抛出新的运行时异常(e);
}
}
公共同步作废删除(长密钥)
{
System.out.println(“删除:+键);
尝试
{
con.createStatement().executeUpdate(String.format(“从id=%s的城市删除”,键));
}
捕获(SQLE异常)
{
抛出新的运行时异常(e);
}
}
公共同步的void deleteAll(集合密钥)
{
用于(长键:键)
删除(键);
}
公共同步的void storeAll(映射)
{
for(Map.Entry:Map.entrySet())
存储(entry.getKey(),entry.getValue());
}
公共同步映射loadAll(集合键)
{
映射结果=新的HashMap();
用于(长键:键)
结果.输入(键,加载(键));
返回结果;
}
公共集合loadAllKeys()
{
返回null;
}
}
我的负荷等级是这个

public class LoadAllCity
{
    public static void main( String[] args )
    {
        final Long numberOfEntriesToAdd = 1000l;
        final String mapName = LoadAllCity.class.getCanonicalName();
        final Config config = createNewConfig( mapName );
        final HazelcastInstance node = Hazelcast.newHazelcastInstance( config );
        final IMap<Long, City> map = node.getMap( mapName );
        populateMap( map, numberOfEntriesToAdd );
        System.out.printf( "# After populating map size\t: %d\n", map.size() );
        System.out.printf( "# Map store has %d elements\n", numberOfEntriesToAdd );
        map.evictAll();
        System.out.printf( "# After evictAll map size\t: %d\n", map.size() );
        map.loadAll( true );
        System.out.printf( "# After loadAll map size\t: %d\n", map.size() );
    }

    private static void populateMap( IMap<Long, City> map, Long itemCount )
    {
        for ( long i = 0; i < itemCount; i++ )
        {
            City city = new City( "Viren" + i );
            //  map.put(i, city);
        }
    }

    private static Config createNewConfig( String mapName )
    {
        final CityMapStore cityStore = new CityMapStore();
        XmlConfigBuilder configBuilder = new XmlConfigBuilder();
        Config config = configBuilder.build();
        MapConfig mapConfig = config.getMapConfig( mapName );
        MapStoreConfig mapStoreConfig = new MapStoreConfig();
        mapStoreConfig.setClassName( CityMapStore.class.getCanonicalName() );
        mapStoreConfig.setImplementation( cityStore );
        mapStoreConfig.setWriteDelaySeconds( 0 );
        mapConfig.setMapStoreConfig( mapStoreConfig );
        return config;
    }
}
公共类LoadAllCity
{
公共静态void main(字符串[]args)
{
最终长数量离心添加=1000l;
最后一个字符串mapName=LoadAllCity.class.getCanonicalName();
最终配置=createNewConfig(映射名);
最终HazelcastInstance节点=Hazelcast.newHazelcastInstance(配置);
最终IMap映射=node.getMap(mapName);
populateMap(地图、numberOfEntriesToAdd);
System.out.printf(“#在填充映射大小\t:%d\n之后,map.size());
System.out.printf(“#映射存储有%d个元素\n”,numberOfEntriesToAdd);
map.executeAll();
System.out.printf(“#在所有映射大小之后\t:%d\n”,map.size());
map.loadAll(真);
System.out.printf(“#加载后所有映射大小\t:%d\n”,map.size());
}
私有静态void populateMap(IMap映射,长项计数)
{
对于(长i=0;i
要在启动时加载数据,请先覆盖loadAllKeys方法,或者如果您不想使用该方法,请使用选定的键以oveloaded loadAll方法加载数据

我的地图存储实现这是
?当我运行LoadAllCity时,它将填充表中的数据,但loadAll将地图大小设为零。