1 java.util.Vector agentArgs= null;
2 int numberOfObjects= 4;
3 if ( agent.length > 0 ) { // is array greater than one
4 agentArgs= new java.util.Vector(numberOfObjects);
5 try { // read from stream
6 java.io.ObjectInputStream input=
7 new java.io.ObjectInputStream(
8 new java.io.ByteArrayInputStream(agent));
9 while( true ){ // read till end of stream
10 agentArgs.addElement(input.readObject());
11 }
12 }
13 catch(java.io.EOFException eofe){
14 //Ok, stream full read
15 }
16 catch(java.lang.Exception e){//Error during input.readOject()
17 e.printStackTrace();
18 throw new CfMAF.ArgumentInvalid();
19 }
20 }
Die zu lesenden Objekte sollen zur Weiterverarbeitung in einen Vektor namens
agentArgs gespeichert werden (Zeile 1). Eine Instanz der Klasse
java.io.ObjectInputStream wird erzeugt, indem es mit dem Bytearray
agent instanziiert wird (Zeile 6-8). Dieser Stream input wird
solange gelesen (Zeile 10) und in den Vektor agentArgs eingetragen, bis
das Ende des Streams erreicht ist. Dann wird die Ausnahmebehandlung
java.io.EOFException eingeleitet und im zugehörigen catch-Block
abgefangen
(Zeile 13). Sollte ein unerwarteter Fehler beim Lesen dieses Parameters
auftreten, so wird die Exception auf der Standardausgabe angezeigt (Zeile 17)
und die Abarbeitung dieser Methode beendet, indem die Ausnahmebehandlung
CfMAF.ArgumentInvalid() angestoßen wird.
Das Laden der Agenten-Klasse wird mit der Klasse java.rmi.server.RMIClassloader vorgenommen. Dazu muß aus dem übergebenen Package-Namen und dem Namen des Agenten die zu ladende Klasse zusammengesetzt werden. Mit Hilfe des Parameter code_base, welches eine URL in Stringformat sein muß, wird die Klasse und die zugehörige Tie-Klasse geladen. Nun werden der Reihe nach folgende Schritte durchgeführt: