Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / April 2006

Tip: Looking for answers? Try searching our database.

weird serialization issue with long

Thread view: 
Daisy - 27 Apr 2006 18:39 GMT
I'd appreciate some help with a weird problem.

A long in an object that I serialize is read as zero every other
iteration.  Since I'm creating new instances every time, I don't think
it has to do with reset() or flush().  Also, it seems inefficient to
keep recreating the Byte and ObjectOutput streams.  I'm going to try
reset() and flush() rather than new instances once I close this long
issue.  Is there a better approach?

// create event
MyEvent event = new MyEvent("test",123);

// serialize the event into a byte stream
ByteArrayOutputStream baos = new ByteArrayOutputStream( );
ObjectOutputStream oos = new ObjectOutputStream( baos );
oos.writeObject( event );

// put the byte stream into our friendly ByteBuffer
ByteBuffer buffer = ByteBuffer.wrap( baos.toByteArray( ) );

public class MyEvent implements Serializable {

   private long   long1;

   private final String string1;

   public MyEvent( String stringArg , long longArg ) {
      long1 = longArg;
      string1=stringArg;
   }
}

To read the event, I use:
 ByteArrayInputStream bais = new ByteArrayInputStream( buffer.array( )
);

 ObjectInputStream ois = new ObjectInputStream( bais );

 MyEvent eventRead = ( MyEvent ) ois.readObject( );

Thanks for the help!
Venkatesh - 28 Apr 2006 07:24 GMT
Hi,

I'm unable to reproduce ur problem. Things work fine for me .... Where
are you reading the object back? Is it in the same method or in a
different method?

FYI, here is the code that I have written:

package com.trilogy.temp;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.ByteBuffer;

class MyEvent implements Serializable {

   private long   long1;

   private final String string1;

   public MyEvent( String stringArg , long longArg ) {
      long1 = longArg;
      string1=stringArg;
   }

   public String toString() {
       return("MyEvent[string1=" + string1 + ", long1=" + long1 +
"]");
   }

}

public class TestSerialization {

   public void testSerialize() throws IOException,
ClassNotFoundException {

       MyEvent event = new MyEvent("test", 123);

       ByteArrayOutputStream baos = new ByteArrayOutputStream();
       ObjectOutputStream oos = new ObjectOutputStream(baos);

       oos.writeObject(event);

       ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray());

       ByteArrayInputStream bais = new
ByteArrayInputStream(buffer.array());
       ObjectInputStream ois = new ObjectInputStream(bais);

       MyEvent eventRead = ((MyEvent)ois.readObject());

       System.out.println("eventRead = " + eventRead);

   }

   /**
    * @param args
    */
   public static void main(String[] args) {

       try {
           (new TestSerialization()).testSerialize();
       } catch(Exception e) {
           System.err.println("Got exception: " + e.getMessage());
           e.printStackTrace();
       }

   }

}

The output I get is:

eventRead = MyEvent[string1=test, long1=123]
Mike Schilling - 28 Apr 2006 22:03 GMT
> I'd appreciate some help with a weird problem.
>
[quoted text clipped - 35 lines]
>
>  MyEvent eventRead = ( MyEvent ) ois.readObject( );

This shows the reading and writing of only one instance.  Can you show us an
exmaple that doesn more than one and demonstrates the every-other-time
behavior?


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.