2015-07-21 19 views
5

Chciałbym serializacji obiektu Book:Hazelcast 3,5 serializacji z DataSerializable

public class Book implements DataSerializable { 

    @Override 
    void writeData(ObjectDataOutput out) throws IOException { 
     ... 
    } 
    @Override 
    void readData(ObjectDataInput in) throws IOException { 
     ... 
    } 

} 

Problem polega na tym, że nie wiem, jak do instancji obiektów ObjectDataOutput/ObjectDataInput typów do serializacji/deserializacji Książka obiektu.

ObjectDataOutputStream implementuje ObjectDataOutput, ale nie wiem jak utworzyć ten obiekt, ponieważ potrzebuje obiektu SerializationService, który nie ma publicznych konstruktorów.

Czy są na przykład jakieś sposoby utworzenia obiektu ObjectDataOutput/ObjectDataInput z FileOutputStream/FileInputStream?

góry dzięki

+1

Dlaczego trzeba je utworzyć? Są one dostarczane przez platformę. Jeśli naprawdę chcesz je utworzyć, możesz rzucić okiem na DefaultSerializationServiceBuilder i stworzyć sobie instancję SerializationService i pobrać z niej strumienie. – pveentjer

+0

@pveentjer, co masz na myśli przez "Są one dostarczane przez platformę"? Czy możesz podać dowolny przykład? Chcę uporać się z serializacją przez obiekt Hazelcast do systemu plików – StasKolodyuk

Odpowiedz

2

Dzięki @pveentjer znalazłem odpowiedź.

FileOutputStream fos = new FileOutputStream(file); 
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
SerializationService serializationService = new DefaultSerializationServiceBuilder().build(); 
ObjectDataOutput odo = new ObjectDataOutputStream(bos, serializationService); 

Book book = new Book(); 
book.writeData(odo); 
bos.writeTo(fos);