java - Serialized Object loses data -


i created java server , client applications communicates rmi. in order client "meet" server, i'm sending multicast datagrampacket client. happens instantiate class attribute localdirectory , when recieve it, comes has null. important object i'm trying send implements seriaizable.

what think i'm doing wrong?

(if need aditional code let me know)

public static void main(string[] args) throws remoteexception {     localdirectory = new file("c:\\tempfiles".trim());  servertotransmit = (serverinterface) new server(localdirectory);   if (!localdirectory.exists()) {     system.out.println("directory " + localdirectory + " not exist!");     return; }  if (!localdirectory.isdirectory()) {     system.out.println("the path " + localdirectory + " not directory!");     return; }  if (!localdirectory.canread()) {     system.out.println("without reading permissions on " + localdirectory + "!");     return; }  try {      system.out.println("vou criar o registry");     registry registry;      try {          system.out.println("registry lauching try in port " + 7609 + "...");          registry = locateregistry.createregistry(7609);          system.out.println("registry launched!");     } catch (remoteexception e) {          system.out.println("registry in execution already!");         registry = locateregistry.getregistry();     }                   system.out.println("será que criei?");      //create service     //serverinterface service = new server(localdirectory);     server server = new server(localdirectory);      registry.bind(service_name, server);      system.out.println("service " + service_name + " registered on registry.");       multicastsocket sock = new multicastsocket(7000);   //225.15.15.15 e o porto 7000.     inetaddress addr = inetaddress.getbyname("225.15.15.15");     sock.joingroup(addr);     //sock.settimetolive(1);     datagramsocket psock;     while (true) {          try {             bytearrayoutputstream bout = new bytearrayoutputstream();             objectoutputstream out = new objectoutputstream(bout);             out.writeobject(servertotransmit);             //out.writeunshared(objecttotransmit) in order avoid caching issues             out.flush();             byte[] data = bout.tobytearray();             datagrampacket packet = new datagrampacket(data, data.length, addr, 7000);             system.out.println("sizeeee: " + bout.size());             sleep(3000);             sock.send(packet);         } catch (socketexception ex) {             logger.getlogger(server.class.getname()).log(level.severe, null, ex);         } catch (ioexception ex) {             logger.getlogger(server.class.getname()).log(level.severe, null, ex);         }      }      /*   if (args.length > 0 && args[0].equals("leader")) {     playleader(sock, psock, addr); } else {     playfollower(sock, psock, addr); } sock.leavegroup(addr);*/ } catch (remoteexception e) {      system.out.println("remote error - " + e);     system.exit(1); } catch (exception e) {      e.printstacktrace(); } 

and i'm receiving on client (only put important code):

multicastsocket sock = new multicastsocket(7000);   //225.15.15.15 e o porto 7000.                     inetaddress addr = inetaddress.getbyname("225.15.15.15");                     sock.joingroup(addr);                      sock.settimetolive(1);                      system.out.println("passou aqui_!");                     datagrampacket packet = new datagrampacket(new byte[1024], 1024, addr, 7000);                     sock.receive(packet);                      system.out.println("passou aqui_1!");                     objectinputstream in = new objectinputstream(new bytearrayinputstream(packet.getdata(), 0,                             packet.getlength()));                      system.out.println("passou aqui_2!");                     serverinterface returnedobject = (serverinterface) in.readobject();                     system.out.println("returned object local dir -> " + returnedobject.getlocaldirectory()); 

thanks!

so, cover possibilities include excluded question, attribute localdirectory either:

  • was null when serialized
  • is static
  • is transient
  • isn't written custom writeobject() method
  • isn't assigned custom readobject() method
  • wasn't present in version of class got serialized in version got deserialized
  • is lost somewhere in writereplace()/readresolve() megillah.

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -