ich glaub nicht das es an der Performance vom Prozessor oder der JVM liegt.
Was richtig Zeit kosten kann, ist z.B. wenn man AS400 Verbindung nicht mit *CURRENT anmeldet sondern einen festen User eingibt. Das kann auch der gleich User sein unter dem der JOB läuft und schon kann man für ein as400.validateSignon(); doppelt so lange warten.
Nachfolgend das Beispiel:
Code:
import java.util.Date;
import com.ibm.as400.access.AS400;
public class AS400ConnectionTest {
public static void main(String[] args) {
Date date = new Date();
long start = date.getTime();
System.out.println("Start: " + date);
if (args.length != 3){
System.out.println("3 Parameter werden benötigt");
System.out.println("server user passwort");
System.out.println("localhost *CURRENT *CURRENT");
System.exit(1);
}
System.out.println("Anmelden mit User: " + args[1]);
try{
AS400 as400 = new AS400(args[0], args[1], args[2]);
as400.validateSignon();
as400.disconnectAllServices();
}catch(Exception e){
e.printStackTrace();
}
date = new Date();
System.out.println("Ende: " + date);
System.out.println("Benötigte Zeit in Sekunden: " + ((float)(date.getTime() - start) / 1000));
System.exit(0);
}
}
Aufruf: java -cp jt400.jar AS400ConnectionTest 192.168.178.222 myuser mypass
(AS400ConnectionTest.class habe ich in die jt400.jar kopiert)
Auf den PC: Benötigte Zeit in Sekunden: 0
Auf der AS400: Benötigte Zeit in Sekunden: 33
Aufruf: java -cp jt400.jar AS400ConnectionTest localhost *CURRENT *CURRENT
Auf der AS400: Benötigte Zeit in Sekunden: 17
Das ganze liegt an der Zeile as400.validateSignon(); . Ohne diese ist das Programm auch schnell durch.
Aber auch wenn man das as400.validateSignon(); ersetzt z.B. durch
Code:
IFSJavaFile file = new IFSJavaFile(as400, "/TMP/test.txt");
IFSFileOutputStream out = new IFSFileOutputStream(file);
out.write("das ist ein test".getBytes());
out.close();
hat man erstmal lange Zeit zu warten. Da aber auch auf der PC Seite, da der erste IFS-Zugriff lange dauert.
Gruß
TR
Bookmarks