next up previous contents
Next: 6.4.2 Klasse MobileAgent Up: 6.4.1 Klasse Agent Previous: 6.4.1 Klasse Agent

Methoden readObject(...) und writeObject(...)

Diese Methoden übernehmen die Serialisierung der Objekte und sind bereits implementiert. Nur bei den Klassen, die nicht serialisierbar sind, muß man diese Methoden überladen und neu implementieren.

Das Attribut vom Typ AgentProfile enthält einen Typ org.omg.CORBA.Any welcher nicht serialisierbar ist. Deshalb werden die Methoden writeObject() und readObject() neu implementiert:

 1  private void writeObject(java.io.ObjectOutputStream out)
 2    throws java.io.IOException {
 3    // write AgentProfile in the stream
 4    out.writeShort(_agentProfile.language_id);
 5    out.writeShort(_agentProfile.agent_system_type);
 6    out.writeObject(_agentProfile.agent_system_description);
 7    out.writeShort(_agentProfile.major_version);
 8    out.writeShort(_agentProfile.minor_version);
 9    out.writeShort(_agentProfile.serialization);
10    out.writeInt(_agentProfile.properties.length);
11    for(int i=0; i < _agentProfile.properties.length; i++)
12      out.writeObject(_agentProfile.properties[i].extract_wstring());
13    // go on with the rest of the class
14    out.defaultWriteObject();
15  }
In den Zeilen 4-12 werden die Attribute der Klasse AgentProfile einzeln serialisiert und in den Stream geschrieben. Anschließend wird mit der Serialisierung der Agenten-Klasse fortgefahren.

Die Methode readObject(...) liest die Objekte in derselben Reihenfolge wieder aus:

 1  private void readObject(java.io.ObjectInputStream in)
 2    throws java.io.IOException, java.lang.ClassNotFoundException{
 3    _agentProfile= new CfMAF.AgentProfile();
 4    // read AgentProfile out of stream   
 5    _agentProfile.language_id= in.readShort();
 6    _agentProfile.agent_system_type= in.readShort();
 7    _agentProfile.agent_system_description= (String)in.readObject();
 8    _agentProfile.major_version= in.readShort();
 9    _agentProfile.minor_version= in.readShort();
10    _agentProfile.serialization=  in.readShort();
11    int nProperties= in.readInt();
12    String props[]= new String[nProperties];
13    org.omg.CORBA.Any anies[]= new org.omg.CORBA.Any[nProperties];
14    for(int i=0; i < nProperties; i++)
15      props[i]= (String) in.readObject();
16    org.omg.CORBA.ORB orb= org.omg.CORBA.ORB.init();
17    for(int i=0; i < nProperties; i++) {
18      org.omg.CORBA.Any any= orb.create_any();
19      any.insert_wstring(props[i]);
20      anies[i]= any;
21    }
22    _agentProfile.properties= anies;
23   // read the rest of the class   
24   in.defaultReadObject();
25 }



Copyright Munich Network Management Team