2015-07-21 9 views
5

vorrei serializzare un oggetto libro:Hazelcast 3,5 serializzazione con DataSerializable

public class Book implements DataSerializable { 

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

} 

Il problema è che non so come creare un'istanza di oggetti ObjectDataOutput/ObjectDataInput tipi di serializzare/deserializzare oggetto libro.

ObjectDataOutputStream implementa ObjectDataOutput ma non so come istanziare questo oggetto perché sia ​​necessario l'oggetto SerializationService che non ha costruttori pubblici.

Quindi, esistono dei modi per creare un oggetto ObjectDataOutput/ObjectDataInput da FileOutputStream/FileInputStream ad esempio?

Grazie in anticipo

+1

Perché è necessario istanziarli? Sono forniti dalla piattaforma. Se vuoi veramente istanziarli, potresti voler dare un'occhiata a DefaultSerializationServiceBuilder e creare tu stesso un'istanza SerializationService e ottenere flussi da lì. – pveentjer

+0

@pveentjer, cosa intendi per "Sono forniti dalla piattaforma"? Potete fornire qualche esempio? Voglio mantenere l'oggetto serializzato da Hazelcast nel file system – StasKolodyuk

risposta

2

Grazie a @pveentjer ho trovato la risposta.

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);