3 Kasım 2022 Perşembe

HazelcastAPI DataSerializable Arayüzü

Giriş
Şu satırı dahil ederiz
import com.hazelcast.nio.serialization.DataSerializable;
 java.io.Externalizable gibidir. Sadece biraz daha verimli olduğu söyleniyor. com.hazelcast.nio.ObjectDataOutput
com.hazelcast.nio.ObjectDataInput
stream'lerini kullanır

DataSerializable arayüzünden kalıtan sınıfları okuyup yazan sınıf DataSerializableSerializer. 

constructor
Açıklaması şöyle
Classes conforming to DataSerializable should provide a no-arguments constructor.
Örnek
Şöyle yaparız. Burada sınıfı no-argument constructor sağlamamış. Yani biraz yanlış var
class Car implements DataSerializable {

  private String name;
  private String number;

  @Override
  public void writeData(ObjectDataOutput out) throws IOException {
    out.writeUTF(name);
    out.writeUTF(number);
  }

  @Override
  public void readData(ObjectDataInput in) throws IOException {
    name = in.readUTF();
    number = in.readUTF();
  }
}
Örnek - Test
Şöyle yaparız
import com.hazelcast.internal.serialization.InternalSerializationService;
import com.hazelcast.internal.serialization.impl.DefaultSerializationServiceBuilder;
import com.hazelcast.internal.serialization.impl.ObjectDataInputStream;
import com.hazelcast.internal.serialization.impl.ObjectDataOutputStream;

@Test
public void testWriteData() throws Exception {
  Foo foo = ...

  DefaultSerializationServiceBuilder defaultSerializationServiceBuilder = 
    new DefaultSerializationServiceBuilder();
  InternalSerializationService serializationService = defaultSerializationServiceBuilder
    .setUseNativeByteOrder(false)
    .setAllowUnsafe(false)
    .setByteOrder(ByteOrder.BIG_ENDIAN)
    .build();

  ByteArrayOutputStream bout = new ByteArrayOutputStream();
  ObjectDataOutput out = new ObjectDataOutputStream(bout, serializationService);

  foo.writeData(out);

  Foo foo2 = new InsertProcessorSupplier();
  byte[] byteArray = bout.toByteArray();
  ByteArrayInputStream bin = new ByteArrayInputStream(byteArray);
  ObjectDataInput in = new ObjectDataInputStream(bin, serializationService);
  foo2.readData(in);
}


Hiç yorum yok:

Yorum Gönder

THIRD-PARTY.txt Dosyası

Kullanılan harici kütüphanelerin sürümleri bu dosyada Dosyanın yolu şöyle hazelcast/licenses/THIRD-PARTY.txt