[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte
  1. #1
    Registriert seit
    Mar 2009
    Beiträge
    20

    Restore Daten in java auswerten..

    Hallo,

    ich bin gerade dabei eine kleines Tool in Java zu schreiben welches ausgewählte save Files automatisch uploaded und diese auch per Knopfdruck restored. Das funktioniert soweit.

    Nun möchte ich an mehr Informationen über den laufenden Vorgang des Restores haben, z.B wie viele Dateien/Daten wurden schon restored, würde denn ganzen restore zyklus gerne in einer JProgressBar anzeigen lassen, nur fehlen mir hierzu die benötigten Daten..

    Hat jemand eine Idee?

    Gruß

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das ganze wird schon etwas komplizierter.
    Der RST gibt entsprechende Nachrichten im Joblog aus.
    Wenn du also dein Kommando ausführst benötigst du nur noch die API's zum Auslesen des Joblogs.
    Ggf. ist zu beachten, dass das Kommando nicht im selben Job wie dein Java gestartet wird (Threadsicherheit).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2009
    Beiträge
    20
    hmm ok , habe das nun mal versucht während der Restore läuft den JobLog in einem extra Thread auszulesen und auszugeben jedoch bekomme ich während des ganzen vorgangs immer die selben Nachrichten....

    CPF1124 Job 210631/QUSER/QZRCSRVS started on 09/03/12 at 10:49:39 in subsystem QUSRWRK in QSYS. Job entered system on 09/03/12 at 10:49:39.

    CPF1301 ACGDTA for 210631/QUSER/QZRCSRVS not journaled; reason 1.

    CPIAD02 User **** from client x.x.x.91 connected to server.

    CPC2196 Bibliothek QSYS2929 der Bibliotheksliste hinzugefügt.

    CPF5C61 Client-Anforderung - Ausführen des Programms QGY/QGYOLJBL.


    Soweit ich nun weiss bleibt der JobLog ja erhalten, und zum testen ersmal habe ich den JobLog am ende abgefragt und ausgegeben, jedoch bekomme ich kein detailliertes Ergebniss... im Moment frage ich den Job so ab:

    JobLog myJobLog = new JobLog(MyAS400);
    Enumeration e = myJobLog.getMessages();
    while (e.hasMoreElements()) {
    System.out.println(e.nextElement());
    }

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich sagte ja, dein RST-Befehl wird in einem eigenen Job durchgeführt!
    Irgendwie musst du an diesen Job kommen und dessen Joblog auslesen.

    Da ein Joblog genauso wie eine MSGQ aufgebaut ist, gibts da auch einen Key, ab dem man weiterlesen kann.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die Javaklassen geben eigentlich alles was du brauchst:
    CommandCall

    CommandCall()
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Mar 2009
    Beiträge
    20
    also sollte ich mit

    command.run("DSPJOBLOG JOB("+ jobNummer + "/" + userID + "/" + jobName + ")");

    command.getMessageList()

    Alles auslesen können?

    edit: ich glaube es liegt auch noch daran das ich meinen Restore primitiv über ein FTP command im Java ausführe. Das werde ich erstmal überarbeiten mit den passenden Methoden meines SaveFile Objektes... Dann solle es auch funktionieren..

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das ist soweit korrekt.
    Allerdings läuft command.run nicht asynchron, so dass getMessageList erst nach Ende des Kommandos ein Ergebnis bringt.
    Ggf. musst du eben vorher per getServerJob den Job ermitteln um dann auf das Joblog dieses Job's zuzugreifen.

    Auch liefert getMessageList nicht alle Nachrichten. Du musst da vorher die Anzahl festlegen.

    Da du aber asynchron die Nachrichten auslesen willst, musst du in einem anderen Thread auf dein Command-Objekt zugreifen.
    Ob das threadsicher ist, musst du probieren.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Mar 2009
    Beiträge
    20
    k, klappt!

    Vielen Dank für die Hilfe

  9. #9
    Registriert seit
    Mar 2009
    Beiträge
    20
    hmm ok, der asynchrone Zugriff klappt doch nicht ganz so wie gewünscht...

    Ich greife mit Hilfe eines anderen Threads auf das CommandCall Objekt zu und greife mir ein Job Object mit der Methode command.getServerJob();

    Mit dem Job Object kann ich mir die Messages aus dem JobLog ziehen..

    Jedoch spuckt er die Ergebnisse erst am Ende aus wenn der RST schon fertig ist...

    Code:
     // Thread A
     
    
     command = new CommandCall(MyAS400);
     com_Finish = command.run("RSTLIB SAVLIB(" + orginalLibName + ") DEV(*SAVF) SAVF(" + LibName + "/" + SaveFileName + ") MBROPT(*ALL)");
     
    
     
    
     
    
     
    
     // Thread B
     
    
     do {
                         Thread.sleep(2000);
                         Job myJob = command.getServerJob();
                         myJob.loadInformation();
                         System.out.println(myJob.getJobLog().getNumber());
                         JobLog myJobLog = new JobLog(MyAS400, myJob.getName(), myJob.getUser(), myJob.getNumber());
                         myJobLog.load();
                         Enumeration x = myJobLog.getMessages();
                         System.out.println("Job Status is.."+ myJob.getStatus());
                         while (x.hasMoreElements()) {
                             System.out.println(x.nextElement());
                         }
                          
                     } while (com_Finish == false);

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Anscheinend ist das Joblog erst nach Jobende verfügbar.
    Ggf. gibt es noch andere Methoden, auf das Joblog eines aktiven Job's zuzugreifen.

    Schau doch mal während der Ausführung nach, ob du den Job per WRKACTJOB/WRKUSRJOB findest und ob das Joblog da fortgeschrieben wird.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Mar 2009
    Beiträge
    20
    Das mache ich doch eben schon!

    Thread B läuft in einer Schleife , solange der Restore nicht fertig ist!

    Daher sollte der neueste JobLog Alle 2 Sec neu ausgegeben werden, jedoch tut er dies nicht, warum weiss ich nicht.

    Es wird erst das Komplette JobLog ausgegeben wenn der Restore fertig ist, ich glaube die Threads blockieren sich irgendwie...

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Vielleicht kannst du dein Java auch mal auf dem PC laufen lassen.
    Mit Eclipse z.B. ist es auch besser zu debuggen.
    Die Toolbox funktioniert auch auf dem PC.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Java und Fehlermeldung jva0122 bei simplen "Hello World"
    By TARASIK in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 30-03-11, 13:48
  2. Java Version
    By Muchi in forum NEWSboard Java
    Antworten: 2
    Letzter Beitrag: 07-11-06, 11:00
  3. Antworten: 3
    Letzter Beitrag: 06-06-06, 15:57
  4. IFS Datei Daten hinzufügen
    By sim in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 18-05-06, 08:00
  5. Daten Import Tool + Dublettensuche für i5 CRM
    By Heinz Molter in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 31-08-04, 09:48

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •