2016-09-15 1 views
0

HazelcastでConcurrentHashMapにDataSerializableを適用する方法は?HazelcastでConcurrentHashMapにDataSerializableを適用するにはどうすればよいですか?

public class User implements DataSerializable{ 
    public User() { 
    } 

    private Date date; 
    private Long id; 

    @Override 
    public void writeData(ObjectDataOutput out) throws IOException { 
     out.writeLong(this.date.getTime()); 
     out.writeLong(this.id); 
    } 

    @Override 
    public void readData(ObjectDataInput in) throws IOException { 
     this.date = new Date(in.readLong()); 
     this.id = in.readLong(); 
    } 
} 


<hz:serialization> 
    <hz:serializers> 
     <hz:serializer type-class="java.util.concurrent.ConcurrentHashMap" class-name="ConcurrentHashMap" implementation="HashMapStreamSerializer"/> 
    </hz:serializers> 
</hz:serialization> 

User user = new User(); 
user.setId(1L); 
Map<Long, User> concurrentHashMap= new ConcurrentHashMap<>(); 
concurrentHashMap.put(1L, user); 
iMap.put(1L, concurrentHashMap);//IMap is a distributed map of Hazelcast 

私はすでにDataSerializableを実装し、分散IMapUserクラスにconcurrentHashMapを載せていきたいと思います。 私はあなたがDataSerialisableを実装していないクラスに対してCustom Serializerを実装することができ例外

com.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'java.util.concurrent.ConcurrentHashMap'. 

答えて

0

を次しまったのコードを実行します。

まず、単純なオブジェクトを作成しましょう。

public class Employee { 
    private String surname; 

    public Employee(String surname) { 
    this.surname = surname; 
    } 
} 

次に、EmployeeクラスのStreamSerializerを実装しましょう。ここ

public class EmployeeStreamSerializer 
    implements StreamSerializer<Employee> { 

    @Override 
    public int getTypeId() { 
    return 1; 
    } 

    @Override 
    public void write(ObjectDataOutput out, Employee employee) 
     throws IOException { 
    out.writeUTF(employee.getSurname()); 
    } 

    @Override 
    public Employee read(ObjectDataInput in) 
     throws IOException { 
    String surname = in.readUTF(); 
    return new Employee(surname); 
    } 

    @Override 
    public void destroy() { 
    } 
} 

全例: http://docs.hazelcast.org/docs/3.7/manual/html-single/index.html#custom-serialization

+0

私はHashMapStreamSerializerを使用しますが、まだその例外が発生しました。私はHashMapStreamSerializerとユーザークラスの質問を更新します –

関連する問題