Problem with reading objects through ObjectInputStream

HI
Actually i have a problem of reading the objects from ObjectInputStream and getting StreamCorruptedException when i try to read as there is no limit to find the end of file i think iam getting the exception any suggestions please to overcome this problem..

Of course I can, I have included two classes.
MyMap that I shall store values in and then save to disk.
Test Map that I stores one value in MyMap and then
serialize to disk and the I do the reverse and se if my value is still there. Check out for yourself and please dont hestate to ask if you have trouble using it.
import java.util.HashMap;
import java.io.Serializable;
* This class must implement Serializable to be stored in disk
* with write(Object)
public class MyMap implements Serializable
  private HashMap map = new HashMap();
  public void put(Serializable key, Serializable value)
    map.put(key,value);
  public Object get(Object key)
    return map.get(key);
// Second class
import java.io.*;
public class TestMap
  public TestMap()
    try
      showHowToUseSerialize();
    catch(Throwable ignored)
      ignored.printStackTrace();
  private void showHowToUseSerialize()throws Throwable
    // First store anything to the class MyMap
    MyMap myMap = new MyMap();
    //  When yuo use put on it it only accept Serializable
    //  se how in the class
    myMap.put("key1","This is the first object in MyMap");
    // Then serialize it to disk.
    serialize(myMap);
    // Now you try to retreive from the file and see if you
    // can get the value key1 stored inside it.
    Object object = deserialize();
    // Cast it to the kind of object you have stored there.
    MyMap mapFromDisk = (MyMap)object;
    // See if key1 is really there.
    String value = (String)mapFromDisk.get("key1");
    // Print it out just be sure...
    System.out.println("key1 stored in MyMap in disk is: "+value);
  private Object deserialize()throws Throwable
    File f = new File("C:\\temp\\mymap.ser");
    if(!f.exists())
    { // Check that there really is such serialized file.
      throw new FileNotFoundException("Didnt find the serialized file: "+f);
    FileInputStream in = new FileInputStream(f);
    ObjectInputStream objIn = new ObjectInputStream(in);
    // Read in the object from the file.
    return objIn.readObject();
  private void serialize(Object myMap) throws Throwable
    File f = new File("C:\\temp\\mymap.ser");
    if(!f.exists())
      f.createNewFile();
    FileOutputStream out = new FileOutputStream(f);
    ObjectOutputStream objOut = new ObjectOutputStream(out);
    objOut.writeObject(myMap);
    objOut.close();
  public static void main(String[] args)
    new TestMap();
}

Similar Messages

  • Help! Problem with reading objects from file

    I wrote a "Library" program for an assignment, and one of the requirements is that the library store all of its information to file upon exit, and reload this information from file when run.
    Well, the writing to file part is working. I'm using a FileOutputStream object and an ObjectOutputStream object. I can tell from the file size of the .dat file that information is going into it.
    But what I can't do is read from file. For that, I'm using a FileInputStream and an ObjectInputStream. I keep getting this exception:
    java.io.EOFException
         at java.io.DataInputStream.readInt(Unknown Source)
         at java.io.ObjectInputStream$BlockDataInputStream.readInt(Unknown Source)
         at java.io.ObjectInputStream.readInt(Unknown Source)
         at Library.readDataFromFile(Library.java:350)
         at Library.<init>(Library.java:63)
         at LibraryDriver.main(LibraryDriver.java:6)I looked this exception up and it says it's thrown when a data input stream unexpectedly ends....But I am instantiating the input streams just before I try to read from file:
                            fileInStream = new FileInputStream(libraryFile);
                   objInStream = new ObjectInputStream(fileInStream);
                   Object[] objectArray = new Object[objInStream.readInt()];Both input streams have methods that "return the number of bytes that can be read from this file input stream without blocking". Just for kicks, I tried writing that number to the console.
    For the FileInputStream, I get 404 bytes.
    For the ObjectInputStream, I get 0 bytes.
    So I guess it's a problem with the ObjectInputStream? Anyone have any suggestions as to how I can fix this, please?

    Yep, here's the relevant code from the writeToFile() method:
                          for (int i = 0; i < libraryAuthors.length; i++) {
                        currentAlphaAuthorList = libraryAuthors;
                        for (int j = 0; j < currentAlphaAuthorList.size(); j++) {
                             currentAuthor = (Author) currentAlphaAuthorList.get(j);
                             objOutStream.writeObject(currentAuthor);
                   objOutStream.flush();
                   objOutStream.close();

  • Problem with inherited Objects

    Hi,
    I have a problem with inherited objects inside Flex using
    wsdl as the source of the object. The AS-classes are generated
    inside Flex Builder 3.
    Inside the wsdl I have 2 complex types:
    <complexType abstract="true" name="PersistentObject">
    <sequence>
    <element name="id" nillable="true" type="xsd:string"/>
    <element name="insertTimeStamp" nillable="true"
    type="xsd:dateTime"/>
    <element name="insertUsername" nillable="true"
    type="xsd:string"/>
    <element name="updateTimeStamp" nillable="true"
    type="xsd:dateTime"/>
    <element name="updateUsername" nillable="true"
    type="xsd:string"/>
    </sequence>
    </complexType>
    and
    <complexType name="Contact">
    <complexContent>
    <extension base="tns3:PersistentObject">
    <sequence>
    <element name="birthday" nillable="true"
    type="xsd:dateTime"/>
    <element name="firstName" nillable="true"
    type="xsd:string"/>
    <element name="lastName" nillable="true"
    type="xsd:string"/>
    <element name="middleName" nillable="true"
    type="xsd:string"/>
    <element name="newPassword" nillable="true"
    type="xsd:string"/>
    <element name="password" nillable="true"
    type="xsd:string"/>
    <element name="title" nillable="true"
    type="xsd:string"/>
    <element name="username" nillable="true"
    type="xsd:string"/>
    </sequence>
    </extension>
    </complexContent>
    </complexType>
    The classes in actionscript seem plausable:
    public class PersistentObject
    * Constructor, initializes the type class
    public function PersistentObject() {}
    public var id:String;
    public var insertTimeStamp:Date;
    public var insertUsername:String;
    public var updateTimeStamp:Date;
    public var updateUsername:String;
    and
    public class Contact extends PersistentObject
    * Constructor, initializes the type class
    public function Contact() {}
    public var birthday:Date;
    public var firstName:String;
    public var lastName:String;
    public var middleName:String;
    public var newPassword:String;
    public var password:String;
    public var title:String;
    public var username:String;
    When I want to retreive an object of type Contact, it seems
    that only a couple of entries are filled. While debugging the flex
    XMLDecoder, I noticed something strange. It seems, like the decoder
    is expecting the result xml data to be in alphabetical order:
    birthday, firstname, lastname, etc. But since the object is
    inherited, the data that is actually received contains elements
    from the parent class: birthday, firstname, id, inserttimestamp,
    The resulting object has just birthday and firstname filled,
    which is somehow wrong. This seems to be a problem inside the
    parser itself. What can I do?

    I am having a problem with an extended class as well.
    When I step through the code, everything is going fine and the decoder (mx.rpc.xml::XMLDecoder) sees that the class is an extension and wants to get the values for the superclass first.  When it gets into getApplicableValues(), it's looking for the values to be in the order of the definition which would be ok if the values collection didn't include the values from the subclass as well!  It goes through the whole definition and doesn't find anything for the superclass because the values aren't where it expects them.  When it pops back up to the subclass and starts to decode those values, it finds them because the definition order and values order match.
    Is this a known issue?  Or, am I misunderstanding something?
    Thanks,
    Chuck

  • Problem with shared objects synchoronization.

    I encountered a small problem with shared objects.
    I'm working on a program that creates chat rooms of a fixed
    size of 30 users. When the 31th user comes, a new room is created.
    The idea is that the client first connects to the first room
    and checks if it's full by connecting to shared objects. If it is
    full, connection is closed and process is reapeated on a new
    instance of the application.
    I use a function to connect to an instance, which takes as a
    parameter a number (1 for instance room_1, 2 for room_2, etc). The
    function itself creates the necessary Netconnection and
    sharedObject objects.
    If a room is full, Netconnections and sharedObjects are
    closed and function is called again with another number.
    I have no problem for connecting to the first room, but after
    closing the first connection and connecting to the new room, there
    seem to be some problems with the shared objects (especially,
    OnSync doesn't seem to execute again after the connection to the
    shared objects of the new instance).
    I was wondering if you had any ideas what could cause this.
    Is it the use of the same variable names for connecting at two
    different shared objects?
    Here is the function :
    function initStreams(room) {
    client_nc = new NetConnection();
    client_nc.connect("rtmp://192.168.0.4/Elearning/room_"+room);
    in_ns = new NetStream(client_nc);
    in_ns2 = new NetStream(client_nc);
    Replay_video.attachVideo(in_ns);
    out_ns = new NetStream(client_nc);
    out_ns2 = new NetStream(client_nc);
    in_ns.play("my_recorded_stream");
    users_name = SharedObject.getRemote("users_name",
    _root.client_nc.uri, false);
    users_name.connect(_root.client_nc);
    users_language = SharedObject.getRemote("users_language",
    _root.client_nc.uri, false);
    users_language.connect(_root.client_nc);
    users_picture = SharedObject.getRemote("users_picture",
    _root.client_nc.uri, false);
    users_picture.connect(_root.client_nc);
    users_finger = SharedObject.getRemote("users_finger",
    _root.client_nc.uri, false);
    users_finger.connect(_root.client_nc);
    I you need more info, I can post more of the code on the
    forum.
    Any help would be really appreciated

    I don't see any onStatus events in the code you posted above.
    If you're defining the onstatus event outside the function, that's
    the problem. When you define the shared object, you also need to
    define it's onStatus event handler.
    Also, you really should wait for the onStatus event of the
    netConnection before you connect your sharedObjects. If you try to
    connect the SO before the netConnection is established, the SO will
    never connect.

  • Problems with installing Xcode through App Store

    Hey guys,
    So trying to install Xcode on my Late 12 Macbook Pro with the ML update for a project with work.
    Everytime I try to install through the app store, I get the Grey Screen of Death. Anyone else having this problem or what could it be? I've had no other problems with installing programs through the App Store.
    I am currently downloading through the developer portal, so hopefully that works.
    Hope someone can guide some light on this.
    Thanks guys!

    Hello,
    For you problem with the Mac App Store you can contact the support here :
    http://www.apple.com/support/mac/app-store/
    (choose Account and Billing; you can change the country at the bottom of the page if you prefer dutch and go back to the support page).
    For your problem with Mail and iCloud you can read this page :
    http://support.apple.com/kb/TS4002?viewlocale=nl_NL (Troubleshooting iCloud Mail).
    Hope this will help.

  • What is the problem with converting objects with gradients to gradient mesh?

    What is the problem with converting objects with gradients to gradient mesh?

    slange,
    There may arise some smaller corruption states that may be cured by what you did, as you can see in the list. Sometimes, restarting thrice is needed.
    The following is a general list of things you may try when the issue is not in a specific file (you may have tried/done some of them already); 1) and 2) are the easy ones for temporary strangenesses, and 3) and 4) are specifically aimed at possibly corrupt preferences); 5) is a list in itself, and 6) is the last resort.
    If possible/applicable, you should save curent artwork first, of course.
    1) Close down Illy and open again;
    2) Restart the computer (you may do that up to 3 times);
    3) Close down Illy and press Ctrl+Alt+Shift/Cmd+Option+Shift during startup (easy but irreversible);
    4) Move the folder (follow the link with that name) with Illy closed (more tedious but also more thorough and reversible);
    5) Look through and try out the relevant among the Other options (follow the link with that name, Item 7) is a list of usual suspects among other applications that may disturb and confuse Illy, Item 15) applies to CC, CS6, and maybe CS5);
    Even more seriously, you may:
    6) Uninstall, run the Cleaner Tool (if you have CS3/CS4/CS5/CS6/CC), and reinstall.
    http://www.adobe.com/support/contact/cscleanertool.html

  • I have too many problems with UserKeyMD Object

    Hi everybody!!!......
    I've too many problems with UserKeyMD object, this don't work, I have a Application which create the DataBase structure, but when try it for create the user key on "x" field in "ABC" table (x field is present on table, is db_Alpha with 8 chars, subtype is st_None) is raised the problem.
    I try to create this way the key (VB example):
    Dim oUserKeysMD As SAPbobsCOM.UserKeysMD
    Set oUserKeysMD = oCompany.GetBusinessObject(oUserKeys)
    oUserKeysMD.TableName = sTableName
    oUserKeysMD.KeyName = sKeyName
    oUserKeysMD.Unique = BoYesNoEnum.tYES
    oUserKeysMD.Elements.ColumnAlias = sFieldName
    oUserKeysMD.Add '<- here problem is raised
    System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserKeysMD)
    I'm work in Delphi .Net and translate the source code of my function to VB.
    P.D.:this source code at least work 2 times, but does not use it until today, I do not know because no longer it works now but. 
    excuse my ingles is very bad
    thanks
    regards
    Francisco Troncoso
    Chile.
    Message was edited by: Francisco Troncoso

    Hi, I using this names for my tables, fields and keys.
    the table name is:
    AOTI
    the fields names are:
    codigo alpha editsize 8
    decrip alpha editsize 40
    tipo   alpha editsize 1 - valid values W, C - Default Value C
    grupo1 alpha editsize 1 - valid values Y, N - Default Value N
    grupo2 alpha editsize 1 - valid values Y, N - Default Value N
    grupo3 alpha editsize 1 - valid values Y, N - Default Value N
    grupo4 alpha editsize 1 - valid values Y, N - Default Value N
    grupo5 alpha editsize 1 - valid values Y, N - Default Value N
    grupo6 alpha editsize 1 - valid values Y, N - Default Value N
    grupo7 alpha editsize 1 - valid values Y, N - Default Value N
    grupo8 alpha editsize 1 - valid values Y, N - Default Value N
    all fields have subtype none and the key name is :
    AOPK1
    ColumnAlias is codigo, when I try to create the table, fields and key with MetaDataOperatios example I have not problems but I try to create with my application I have the error.
    Regards,
    Franciso.

  • Problem with READ Statement in the field routine of the Transformation

    Hi,
    I have problem with read statement with binary search in the field routine of the transformation.
    read statement is working well when i was checked in the debugging mode, it's not working properly for the bulk load in the background. below are the steps i have implemented in my requirement.
    1. I selected the record from the lookuo DSO into one internal table for all entried in source_packeage.
    2.i have read same internal table in the field routine for each source_package entry and i am setting the flag for that field .
    Code in the start routine
    select source accno end_dt acctp from zcam_o11
    into table it_zcam
    for all entries in source_package
    where source = source_package-source
         and accno = source_package-accno.
    if sy-subrc = 0.
    delete it_zcam where acctp <> 3.
    delete it_zcam where end_dt initial.
    sort it_zcam by surce accno.
    endif.
    field routine code:
    read table it_zcam with key source = source_package-source
                                                 accno  = source_package-accno
                                                 binary search
                                                 transportin no fields.
    if sy-subrc = 0.
    RESULT  = 'Y'.
    else.
    RESULT = 'N'.
    endif.
    this piece of code exist in the other model there its working fine.when comes to my code it's not working properly, but when i debug the transformation it's working fine for those accno.
    the problem is when i do full load the code is not working properly and populating the wrong value in the RESULT field.
    this field i am using in the report filter.
    please let me know if anybody has the soluton or reason for this strage behaviour.
    thanks,
    Rahim.

    i suppose the below is not the actual code. active table of dso would be /bic/azcam_o1100...
    1. is the key of zcam_o11 source and accno ?
    2. you need to get the sortout of if endif (see code below)
    select source accno end_dt acctp from zcam_o11
    into table it_zcam
    for all entries in source_package
    where source = source_package-source
    and accno = source_package-accno.
    if sy-subrc = 0.
    delete it_zcam where acctp 3.
    delete it_zcam where end_dt initial.
    endif.
    sort it_zcam by surce accno.
    field routine code:
    read table it_zcam with key source = source_package-source
    accno = source_package-accno
    binary search
    transportin no fields.
    if sy-subrc = 0.
    RESULT = 'Y'.
    else.
    RESULT = 'N'.
    endif.

  • Problem with embedded objects

    Hi,
    I have problem with embedded objects which contained embedded objects.
    When I create an Object in the persistent memory and commit this object I get the following error:
    ORA-22805: cannot insert NULL object into object tables or nested tables
    In the constructor of my persisten object I create the embedded members in the transient memory:
    ATestPersObj::ATestPersObj() : m_count(0), m_lang(NULL), m_cost(NULL) {
      m_lang = new AEnumLanguage_OraType();
      m_cost = new AAmount_OraType();
    }Or when I dereference a reference I get this error:
    ORA-00600: internal error code, arguments: [kokeicadd2], [16], [5], [], [], [], [], []
    Can somebody give me a hint?
    I've defined the following Type:
    CREATE OR REPLACE TYPE AENUM_ORATYPE AS OBJECT (
                             VALUE  NUMBER(10,0)
                           ) NOT FINAL ;
    CREATE OR REPLACE TYPE AENUMLANGUAGE_ORATYPE UNDER AENUM_ORATYPE (
                           ) FINAL " );
    CREATE OR REPLACE TYPE ACURRENCY_ORATYPE AS OBJECT (
                             ISONR          NUMBER(5,0)
                           ) FINAL ;
    CREATE OR REPLACE TYPE AAMOUNT_ORATYPE AS OBJECT (
                             CCY        ACURRENCY_ORATYPE,
                             LO32BITS   NUMBER(10,0),
                             HI32BITS   NUMBER(10,0)
                           ) NOT FINAL ;
    CREATE OR REPLACE TYPE ATESTPERSOBJ AS OBJECT (
                             COUNT    NUMBER(4),
                             LANG     AENUMLANGUAGE_ORATYPE,
                             COST     AAMOUNT_ORATYPE   
                           ) FINAL ;
    oracle::occi::Ref<ATestPersObj> pObjR = new(c.getConnPtr(), "TTESTPERSOBJ") ATestPersObj();
    pObjR->setCount(i+2001);
    pObjR->setLang(AEnumLanguage(i+1));
    pObjR->setCost(AAmount(ACurrency(), 2.5));
    c.commit();
    c.execQueryRefs("SELECT REF(a) FROM TTESTPERSOBJ a", persObjListR);
    len = persObjListR.size();
    {for (int i = 0; i < len; i++) {  
      oracle::occi::Ref<ATestPersObj> pObjR = persObjListR;
    pObjR->getCount();
    pObjR->getLang();
    c.commit();
    With kind regards
    Daniel
    Message was edited by:
    DanielF
    Message was edited by:
    DanielF

    Hi,
    I have problem with embedded objects which contained embedded objects.
    When I create an Object in the persistent memory and commit this object I get the following error:
    ORA-22805: cannot insert NULL object into object tables or nested tables
    In the constructor of my persisten object I create the embedded members in the transient memory:
    ATestPersObj::ATestPersObj() : m_count(0), m_lang(NULL), m_cost(NULL) {
      m_lang = new AEnumLanguage_OraType();
      m_cost = new AAmount_OraType();
    }Or when I dereference a reference I get this error:
    ORA-00600: internal error code, arguments: [kokeicadd2], [16], [5], [], [], [], [], []
    Can somebody give me a hint?
    I've defined the following Type:
    CREATE OR REPLACE TYPE AENUM_ORATYPE AS OBJECT (
                             VALUE  NUMBER(10,0)
                           ) NOT FINAL ;
    CREATE OR REPLACE TYPE AENUMLANGUAGE_ORATYPE UNDER AENUM_ORATYPE (
                           ) FINAL " );
    CREATE OR REPLACE TYPE ACURRENCY_ORATYPE AS OBJECT (
                             ISONR          NUMBER(5,0)
                           ) FINAL ;
    CREATE OR REPLACE TYPE AAMOUNT_ORATYPE AS OBJECT (
                             CCY        ACURRENCY_ORATYPE,
                             LO32BITS   NUMBER(10,0),
                             HI32BITS   NUMBER(10,0)
                           ) NOT FINAL ;
    CREATE OR REPLACE TYPE ATESTPERSOBJ AS OBJECT (
                             COUNT    NUMBER(4),
                             LANG     AENUMLANGUAGE_ORATYPE,
                             COST     AAMOUNT_ORATYPE   
                           ) FINAL ;
    oracle::occi::Ref<ATestPersObj> pObjR = new(c.getConnPtr(), "TTESTPERSOBJ") ATestPersObj();
    pObjR->setCount(i+2001);
    pObjR->setLang(AEnumLanguage(i+1));
    pObjR->setCost(AAmount(ACurrency(), 2.5));
    c.commit();
    c.execQueryRefs("SELECT REF(a) FROM TTESTPERSOBJ a", persObjListR);
    len = persObjListR.size();
    {for (int i = 0; i < len; i++) {  
      oracle::occi::Ref<ATestPersObj> pObjR = persObjListR;
    pObjR->getCount();
    pObjR->getLang();
    c.commit();
    With kind regards
    Daniel
    Message was edited by:
    DanielF
    Message was edited by:
    DanielF

  • Having problem with reading list in safari

    i am having problem with reading list in safari some time it work sometimes gets hang....

    Might be a cache issue ...
    Open a Finder window. From the Finder menu bar click Go > Go to Folder
    Type or copy paste the following:
    ~/Library/Caches/com.apple.Safari/Cache.db
    Click Go then move the Cache.db file to the Trash.
    Quit and relaunch Safari to test.

  • Problem with activeX objects

    hi all,
    i am having a problem with activeX objects.
    my activeX ( Tree View) is wrking fine with windows2000
    but when i am trying the same code with XP its saying dll missing.
    do these activeX depends on OS also..
    plz help me.

    hey Vishwas!
    did you register the .dll?
    do you work with vb.net?
    which ServicePack do you have in Windows XP?
    greetz
    Matthias

  • I am facing a Problem with reading images from database

    Hi everybody..
    any help will be most appreciated, I am facing problem with reading images from database. I am pasting my code... 
                    string connect = "datasource = localhost; port = 3306; username = root; password = ;"; 
                    MySqlConnection conn = new MySqlConnection(connect); // creating connecting string
                    MySqlCommand sda = new MySqlCommand(@"select * from management.add_products ", conn); //creating query
                    MySqlDataReader reader; 
                    try
                        conn.Open(); // Opening Connection
                        reader = sda.ExecuteReader(); // Executing my Query..
                        while (reader.Read())
                            byte[] imgg = (byte[])(reader["Picture"]);
                            if (imgg == null)
                                pc1.Image = null;
                            else
                                MemoryStream mstream = new MemoryStream(imgg);
                                pc1.Image = System.Drawing.Image.FromStream(mstream);
    It says Parameter not Valid... i am reading all the images from database

    I agree with Viorel. You are getting the error because the format of the data is incorrect probably because the data was modify. It may not be the reading of the database the is incorrect, but the application that wrote the data into the database. You need
    to compare the imgg array data with the data before it was written to the database to see if the data matches.  I usually start by comparing the number of bytes which is easier to check then compare the actual to isolate which function is changing the
    byte count.
    An image is binary data.  The standard VS methods for reading and writing data (usually stream classes) default to ASCII encoding which will corrupt binary data.  The solution usually is to use UTF8 encoding instead of the default ascii encoding. 
    Ascii encoding with stream often aligns the data and adds extra null bytes to the end of the data which can produce these type errors.
    jdweng

  • Problem with reading config file

    Hello,
    I have problem with reading config file from the same dir as class is. Situation is:
    I have servlet which working with DB, and in confing file (config.pirms) are all info about connection (drivers, users, passw, etc.). Everything work fine if I hardcoded like:
    configFileName = "C:\\config.pirms";I need to avoid such hardcoding, I tryied to use:
    configFileName = Pirms.class.getClassLoader().getResourceAsStream ("/prj/config.pirms").toString();but it isn't work.
    My config file is in the same directory as Pirms.class (C:\apache-tomcat-5.5.17\webapps\ROOT\WEB-INF\classes\prj)
    Also I tryied BundledResources, it isn't work fo me also.
    Can anybody help me to solve this problem? with any examples or other stuff?
    Thanks in advance.
    Andrew

    Thanks, but I am getting error that "non-static method getServletConfig() cannot be referenced from a static context"
    Maybe is it possibility to use <init-param> into web.xml file like:
    <init-param>
      <param-name>configFile</param-name>
      <param-value>/prj/config.pirms</param-value>
    </init-param>If yes can anybody explain how to do that?
    I need to have that file for:
    FileReader readFile = new FileReader(configFile);Thanks in advance.

  • Problem with Persistent Object as Reference Attribute of Persistent Object

    Hello All,
    I have a problem with a persistent class that contains a reference attribute to another persistent class.  I can write the reference object attribute to the DB but when I read the reference attribute back from the DB the object is null.  Allow me to explain...
    I have two tables; one is a data table with one key field of type OS_GUID, the second is a mapping table with several business key fields and two further fields; an instance GUID and a class identifier GUID.  The data table is used to contain all the data for an object.  The mapping table is used to hold a relationship between the GUID assigned in the data table and the business key.  The mapping table has been structured in this way by following the help here:
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/df/e785a9e87111d4b2eb0050dadfb92b/frameset.htm
    and the field mapping in persistent class for the mapping table has been mapped following the help here:
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/06/f23c33638d11d4966d00a0c94260a5/frameset.htm
    The code I use to create entries in the data and mapping table is:
    <-snip->
      DATA:
        gv_blank_data_guid TYPE REF TO zcl_ps_data,
        gv_data_guid       TYPE        os_guid,
        go_data_ps         TYPE REF TO zcl_ps_data,
        go_data_agent      TYPE REF TO zca_ps_data,
        go_data_map_ps     TYPE REF TO zcl_ps_data_map,
        go_data_map_agent  TYPE REF TO zca_ps_data_map,
        go_exc             TYPE REF TO cx_root.
      go_data_agent = zca_ps_data=>agent.
      go_data_map_agent = zca_ps_data_map=>agent.
      TRY.
    Check if there's already data with the business key on the DB
          go_data_map_ps = go_data_map_agent->get_persistent(
                             i_data_ref     = iv_data_ref
                             i_action       = iv_action ).
    ... if there is then exit.
          EXIT.
        CATCH cx_root INTO go_exc.
      ENDTRY.
      TRY.
    Create the data...
          go_data_ps = go_data_agent->create_persistent(
                           i_root_guid = gv_blank_data_guid
                           i_req_date  = iv_req_date ).
          TRY.
    ... finally, write the new data to the data business key map table
              go_data_map_ps = go_data_map_agent->create_persistent(
                                 i_data_ref     = iv_data_ref
                                 i_action       = iv_action
                                 i_data_guid    = go_data_ps ).    "note1
            CATCH cx_root INTO go_exc.
          ENDTRY.
        CATCH cx_os_object_not_found.
      ENDTRY.
      COMMIT WORK.
    <-snip->
    The fact that it is possible to pass the object GO_DATA_PS in the call to GO_DATA_MAP_AGENT (the line that I've put the comment "note1" on) indicates to me that the reference to the data persistent object can be written to the DB by the mapping persistent object.  After executing the above code the mapping table object and class identifier fields are populated.  Also, if multiple entries are written to the tables then the class identifier field in the mapping table is always the same and the object ID is different as expected.
    However, the problem I have is if I read an object from the DB using the business key with the following code:
    <-snip->
      DATA:
        gv_req_date        type        datum,
        gv_data_guid       TYPE        os_guid,
        go_data_ps         TYPE REF TO zcl_ps_data,
        go_data_agent      TYPE REF TO zca_ps_data,
        go_data_map_ps     TYPE REF TO zcl_ps_data_map,
        go_data_map_agent  TYPE REF TO zca_ps_data_map,
        go_exc             TYPE REF TO cx_root.
      go_data_agent = zca_ps_data=>agent.
      go_data_map_agent = zca_ps_data_map=>agent.
      TRY.
    Read data mapping with the business key
          go_data_map_ps = go_data_map_agent->get_persistent(
                             i_data_ref     = iv_data_ref
                             i_action       = iv_action ).
    ... then read the data.
          TRY.
              CALL METHOD go_data_map_ps->get_data_guid
                RECEIVING
                  result = go_data_ps.
            CATCH cx_os_object_not_found.
          ENDTRY.
        CATCH cx_root INTO go_exc.
      ENDTRY.
    <-snip->
    At no point during this code are the attributes of the object of the persistent class for the data table populated with the contents of the fields of the data table referenced as the attribute of the mapping table.  To clarify, when viewing the object in the debugger all the attributes of the mapping object that are simple table fields are populated with the values of the fields of in the mapping table, however, the attributes of the object that represents the persistent class for the data table are not populated with the fields of the data table.  I had hoped that by reading the mapping table object the data object would automatically be populated.  Is there another step I need to perform to populate the data object?
    I'm sorry if the above is hard to follow.  Without being able to provide screenshots it's difficult to explain.
    If someone has managed to store references to persistent objects in a table and then read the references back could you list the steps you went through to create the persistent classes and include the code that reads the objects please?  The code I have almost works, I must be just missing some subtle point...
    Thanks in advance,
    Steve.

    Hi Andrea,
    The iObject being replicated at item level for Service Complaints is the SAP standard behaviour.
    Generally we raise complaint refering to some sales or service issues. In your scenario you are trying to create a complaint based on an iObject, then you have to mention the corresponding product details. I dont see any business requirement not to copy the iObject product at the item level.
    If you want it then I think only you have to write a Z program for it.
    Hope this helps!
    Regards,
    Chethan

  • Cannot send and read objects through sockets

    I have these 4 classes to send objects through sockets. Message and Respond classes are just for
    trials. I use their objects to send &#305;ver the network. I do not get any compile time error or runtime error but
    the code just does not send the objects. I used object input and output streams to send and read objects
    in server (SOTServer) and in the client (SOTC) classes. When I execevute the server and client I can see
    that the clients can connect to the server but they cannot send any objects allthough I wrote them inside the main method of client class. This code stops in the run() method but I could not find out why it
    does do that. Run the program by creating 4 four classes.
    Message.java
    Respond.java
    SOTC.java
    SOTServer.java
    Then execute server and then one or more clients to see what is going on.
    Any ideas will be appreciated
    thanks.
    ASAP pls
    //***********************************Message class**********************
    import java.io.Serializable;
    public class Message implements Serializable
    private String chat;
    private int client;
    public Message(String s,int c)
    client=c;
    chat=s;
    public Message()
    client=0;
    chat="aaaaa";
    public int getClient()
    return client;
    public String getChat()
    return chat;
    //*******************************respond class*****************************
    import java.io.Serializable;
    public class Respond implements Serializable
    private int toClient;
    private String s;
    public Respond()
    public Respond(String s)
    this.s=s;
    public int gettoClient()
    return toClient;
    public String getMessage()
    return s;
    //***********************************SOTServer*********************
    import java.io.*;
    import java.net.*;
    import java.util.Vector;
    //private class
    class ClientWorker extends Thread
    private Socket client;
    private ObjectInputStream objectinputstream;
    private ObjectOutputStream objectoutputstream;
    private SOTServer server;
    ClientWorker(Socket socket, SOTServer ser)
    client = socket;
    server = ser;
    System.out.println ("new client connected");
    try
    objectinputstream=new ObjectInputStream(client.getInputStream());
    objectoutputstream=new ObjectOutputStream(client.getOutputStream());
    catch(Exception e){}
    public void sendToClient(Respond s)
    try
    objectoutputstream.writeObject(s);
    objectoutputstream.flush();
    catch(IOException e)
    e.printStackTrace();
    public void run()
    do
    Message fromClient;
    try
    fromClient =(Message) objectinputstream.readObject();
    System.out.println (fromClient.getChat());
    Respond r=new Respond();
    server.sendMessageToAllClients(r);
    System.out.println ("send all completed");
    catch(ClassNotFoundException e){e.printStackTrace();}
    catch(IOException ioexception1)
    ioexception1.printStackTrace();
    break;
    Respond k=new Respond();
    sendToClient(k);
    }while(true);
    public class SOTServer
    ServerSocket server;
    Vector clients;
    public static void main(String args[]) throws IOException
    SOTServer sotserver = new SOTServer();
    sotserver.listenSocket();
    SOTServer()
    clients = new Vector();
    System.out.println ("Server created");
    public void sendMessageToAllClients(Respond str)
    System.out.println ("sendToallclient");
    ClientWorker client;
    for (int i = 0; i < clients.size(); i++)
    client = (ClientWorker) (clients.elementAt(i));
    client.sendToClient(str);
    public void listenSocket()
    try
    System.out.println ("listening socket");
    server = new ServerSocket(4444, 6);
    catch(IOException ioexception)
    ioexception.printStackTrace();
    do
    try
    ClientWorker clientworker=new ClientWorker(server.accept(), this);
    clients.add(clientworker);
    clientworker.start();
    catch(IOException ioexception1)
    ioexception1.printStackTrace();
    while(true);
    protected void finalize()
    try
    server.close();
    catch(IOException ioexception)
    ioexception.printStackTrace();
    //*************************SOTC***(client class)*********************
    import java.io.*;
    import java.net.Socket;
    import java.net.UnknownHostException;
    class SOTC implements Runnable
    private Socket socket;
    private ObjectOutputStream output;
    private ObjectInputStream input;
    public void start()
    try
    socket= new Socket("127.0.0.1",4444);
    input= new ObjectInputStream(socket.getInputStream());
    output= new ObjectOutputStream(socket.getOutputStream());
    catch(IOException e){e.printStackTrace();}
    Thread outputThread= new Thread(this);
    outputThread.start();
    public void run()
    try
    do
    Message m=new Message("sadfsa",0);
    output.writeObject(m);
    Respond fromServer=null;
    fromServer=(Respond)input.readObject();
    }while(true);
    catch(NullPointerException e){run();}
    catch(Exception e){e.printStackTrace();}
    public SOTC()
    start();
    public void sendMessage(Message re)
    try
    Message k=new Message("sdasd",0);
    output.writeObject(k);
    output.flush();
    catch(Exception ioexception)
    ioexception.printStackTrace();
    System.exit(-1);
    public static void main(String args[])
    SOTC sotclient = new SOTC();
    try
    System.out.println("client obje sonrasi main");
    Message re=new Message("client &#305;m ben mesaj bu da iste",0);
    sotclient.sendMessage(re);
    System.out.println ("client gonderdi mesaji");
    catch(Exception e) {e.printStackTrace();}

    ObjectStreams send a few bytes at construct time. The OutputStream writes a header and the InputStram reads them. The InputStream constrcutor will not return until oit reads that header. Your code is probably hanging in the InputStream constrcutor. (try and verify that by getting a thread dump)
    If that is your problem, tolution is easy, construct the OutputStreams first.

Maybe you are looking for

  • Email is not working properly and dvr is freezing.

    I never thought I would say this but I am considering going back to cable. I have been calling verizon for 2 weeks now. My email is not working. I did not get any email for about 3 days, then when I called I got a couple (I normally get about 70 per

  • How to test if a decimal is even or odd in labview

    i made a VI that tests for even and odd integers using the quotient/remainder function and the Select function but when i test a decimal it does not work properly. i have my VI testing to see if the input diveded by 2 gives you a remainder equal to 0

  • Currency convert

    Hi,    i have a doubt. the value of currency(1,649.20) in excel file. how can we convert in to number(1649.20) into internal table.how can we write the code for this in abap program. pls, anybody send me the reply ASAP.. Thanks & Regards, sunil.,

  • Can Apple TVs in different countries share iTunes account?

    I'm in Korea and my wife in the U.S. We have Apple TVs on same iTunes account. Hers works fine. Over the past couple days, mine started malfunctionin. Whey I try to play a purchased TV show, I get: "An error occurred loading this content. Try again l

  • Event video issue

    Hi, I'm working on a captivate 7 project, I've got in it 45 slides and 4 of them has event video inside. If I test it in a prewiew (html or swf) on my pc everything is fine, but when I upload it on my Connect )9.1 server the video dos not start. Note