PDA

View Full Version : jtOpen/JAVA400 JobLog writeMessage



pepito84
09-04-13, 15:43
Hi *ALL,

ich bin neu hier im Forum. Deshalb erst einmal ein herzliches Hallo!

Ich beschäftige mich derzeit mit einem netten Javatool, dass PDFs zusammenfügt.
Es läuft bereits aktiv auf unserer Maschine und fügt fröhlich PDFs zusammen.

In diesem Tool wird ein JobLog-Objekt erstellt und schreibt auch Nachrichten in ein JobLog. Nur leider nicht in den JobLog des eigentlich Jobs, sondern in den JobLog, des Jobs QZRCSRVS im Subsystem QUSRWRK.

Kann mir einer sagen, ob das so sein soll? oder mache ich noch etwas falsch?

Die Werte für das JobLog-Objekt sind alle so gesetzt, dass es eigentlich der
Job sein müsste, der die eigentliche Logik ausführt!

Für eure Meinungen wäre ich sehr dankbar!!

Viele Grüße

pepito

Fuerchau
09-04-13, 17:11
Java bzw. die JVM läuft ja nun auch in einem 2. Job und nicht gleichzeitig im aktuellen Dialog/Batchjob.

In ein fremdes Joblog lässt sich aber nichts reinschreiben.

Du kannst da eher eine IFS-Datei (Logdatei) ausgeben, die du dann separat auswerten kannst.

mk
09-04-13, 18:46
Hi,

die QZRCSRVS Joblog kommen von den AS400 Command Objekten und laufen in separaten Jobs. Die SQL Abfragen laufen in den QZDASOINIT Jobs.
Pro Job sind eigene QTEMP Bibliotheken vorhanden.

Du kannst aber auch einen
OVRDBF FILE(STDOUT) TOFILE(xxlib/xxfile) machen.
Dann werden deine System.out.print Ausgaben in diese
Datei umgeleitet und können ggf. ausgewertet werden.

(Oder Du nimmst den Befehl CRTOSPDF und CPYOSPDF
da ist ein umfangreiches kopieren bereits integriert. :-)
Gruß
Michael

pepito84
09-04-13, 19:20
Grüße euch,

danke euch für die Antworten.
Also, System.err und System.out leite ich bereits im Quellcode ins IFS um. Einen kleinen Teil von dem was ich ins IFS schreibe, würde ich gerne auch im Joblog des Java-Batch-Jobs schreiben.
Hmmm, wenn ich das jetzt richtig verstanden habe, kann ich also nicht in den eigentlichen Job schreiben, sondern nur in den QZRCSRVS-Job?

Nochmals Vielen Dank.

Grüße

Pepito ;)

mk
10-04-13, 08:13
Hi,

vllt. kannst Du über die verschiedenen Nachrichtenbefehle
die Daten in das Joblog schreiben.
Z.B. SNDPGMMSG ........

Gruß
Michael

Fuerchau
10-04-13, 08:36
Mittels SNDPGMMSG kann man nur den eigenen CALL-Stack beschicken und somit nur den ausführenden Job.

Es gibt einen kleinen Trick:
Per CHGMSGQ kann man auf einer MSGQ ein Programm eintragen, dass beim eintreffen einer Nachricht aufgerufen wird.
Per AS400Message-Objekt kann man dann an diese Nachrichten senden worauf hin dann das Programm aufgerufen wird.

Das CLP, dass den Java-Job initiiert legt also eine jobspezifische MSGQ an und trägt ein Programm ein. Der Name der MSGQ muss natürlich an das Javaprogramm übermittelt werden.
Sendet dann das Javaprogramm eine Nachricht führt das zum Aufruf des überwachenden Programmes.
Dieses kann dann die Nachricht ins Joblog schreiben.

Alternativ kann man auch einfach nur die Nachrichten an die MSGQ senden und wenn das Javaprogramm, bzw. der Job, fertig ist, liest man diese dann per RCVMSG einfach aus.

pepito84
11-04-13, 08:15
Grüße euch,

danke für eure Antworten!
Ich werde, dass mit "CHGMSGQ" mal ausprobieren!

Greets

pepito