[NEWSboard eServer System i Forum]  
Sie betrachten das NEWSboard System i, i5, iSeries, AS/400 Forum als Gast. Bitte beteiligen Sie sich nach der Registrierung (2min). Erbitten und gewähren Sie Hilfe indem Sie auf Neues Thema oder Antworten klicken.

Zurück   [NEWSboard eServer System i Forum] > Anwender Gruppen > NEWSboard java

NEWSboard java Java für Einsteiger und Experten. z.B. iSeries RPG Programmierer steigen hier gemeinsam in die Java Thematik ein. Java kompatibler Code auch für die iSeries Platform.

Antwort
 
LinkBack Themen-Optionen Thema bewerten Ansicht
  #1 (permalink)  
Alt 09-02-09, 18:09
Benutzerbild von Fuerchau
Fuerchau Fuerchau ist offline
[rlp_Moderator]
 
Registriert seit: Feb 2001
Beiträge: 10.668
Renommee-Modifikator: 11
Fuerchau befindet sich auf einem aufstrebenden Ast
Statusanzeige aus Java-Programm

Mal ein anderes Problem.
Ich starte Java per QSH im interaktiven Job.
Da dieses Java-Programm jedoch in einem eigenen Job/Thread läuft, kann ich leider keine Status-Nachricht (SNDPGMMSG ... *STATUS ...) über den Fortschritt ausgeben.
Der Call auf ein AS/400-Programm funktioniert zwar ohne Probleme, am Display wird aber leider nichts ausgegeben.

Hat irgendwer eine Idee, wie man aus dem interaktiven Javaprogramm eine Nachricht auf Zeile 24 ausgeben kann (eben analog zu SNDPGMMSG).

Das API QMHSNDPM funktioniert allerdings auch nicht.
Mit Zitat antworten
  #2 (permalink)  
Alt 10-02-09, 08:50
Benutzerbild von mjraber
mjraber mjraber ist offline
[User]
 
Registriert seit: Dec 2002
Beiträge: 16
Renommee-Modifikator: 8
mjraber ist zur Zeit noch ein unbeschriebenes Blatt
Hallo,
ich hab es noch nicht exakt nachvollzogen aber es sollte möglich sein den CallStack des Programms auszulesen und damit die QSH-Ebene zu identifizieren. Dann sollte man die Message an den entsprechenden Job eine Ebene höher senden können. Probiers mal aus. Bei Problemen hier nochmal posten. Dann teste ich selbst mal.
Gruß
Michael
__________________
Dipl.-Ing. Michael J. Raber
Consulting - Projectmanagement - Software-Engineering
http://www.mjraber.de
Mit Zitat antworten
  #3 (permalink)  
Alt 10-02-09, 09:25
mk mk ist offline
[professional_User]
 
Registriert seit: Jan 2001
Beiträge: 445
Renommee-Modifikator: 10
mk stellt sich gerade der Gemeinschaft vor
Hallo Baldur,

willkommen bei der Java Fraktion.

Wir regeln eine Art von Benachrichtigung mit einer DTAQ.
Das Javaprogramm wird in einem Service gestartet. Dem
Service wird eine DTAQ mitgegeben. Das aufrufende Programm
horcht auf die DTAQ und gibt die Information weiter.

Das Problem im Javaumfeld ist das mehrere Jobs im System
ausgeführt werden. Je nachdem was im Javaprogramm gestartet wird. QZDASO.. QZRC... etc.

Ein solcher Aufbau lohnt sich natürlich nur wenn etwas
mehr mit Java gemacht wird.

Gruß
Michael
__________________
AS-MIKA GMBH
Anwendungssoftware
http://www.asmika.de
Rich Internet Application für System i
Mit Zitat antworten
  #4 (permalink)  
Alt 10-02-09, 09:44
Benutzerbild von Fuerchau
Fuerchau Fuerchau ist offline
[rlp_Moderator]
 
Registriert seit: Feb 2001
Beiträge: 10.668
Renommee-Modifikator: 11
Fuerchau befindet sich auf einem aufstrebenden Ast
Es geht nicht um Einträge ins Joblog sondern um eine Bildschirmausgabe.
Sicherlich kann ich den Java-Job auch als Batch starten, was die Sache allerdings verkompliziert (Ende des Job's, Abbruch des Job's u.v.m.). Darüber werde ich später mal nachdenken.

Zur Zeit verwende ich i.W. den Java-Transfer von Dieter Bender, also kopieren der Daten von einer Tabelle in die andere über JDBC.

Im Normalfall rennt der Job eh als Batch, wo eine Fortschrittsanzeige nicht interressiert.
Aber der Dialogaufruf kommt nun mal doch vor und damit der Anwender den Job nicht killt wäre eine Statusanzeige hilfreich.
Mit Zitat antworten
  #5 (permalink)  
Alt 12-02-09, 16:59
BenderD BenderD ist offline
[professional_User]
 
Registriert seit: Mar 2002
Beiträge: 2.798
Renommee-Modifikator: 9
BenderD stellt sich gerade der Gemeinschaft vor
5250 und Java in einem Job geht nicht, es geht dann also darum aus einem Job in einem (anderen) interaktiven Job eine Statusmessage am Bildschirm anzuzeigen...
klingt mir nach Break Messagehandler, aus selbigem müsste man eigentlich dann eine Statusmessage an den eigenen Job senden können.

D*B

Zitat:
Zitat von Fuerchau Beitrag anzeigen
Es geht nicht um Einträge ins Joblog sondern um eine Bildschirmausgabe.
Sicherlich kann ich den Java-Job auch als Batch starten, was die Sache allerdings verkompliziert (Ende des Job's, Abbruch des Job's u.v.m.). Darüber werde ich später mal nachdenken.

Zur Zeit verwende ich i.W. den Java-Transfer von Dieter Bender, also kopieren der Daten von einer Tabelle in die andere über JDBC.

Im Normalfall rennt der Job eh als Batch, wo eine Fortschrittsanzeige nicht interressiert.
Aber der Dialogaufruf kommt nun mal doch vor und damit der Anwender den Job nicht killt wäre eine Statusanzeige hilfreich.
__________________
AS400 Freeware
http://www.bender-dv.de
Mit Zitat antworten
  #6 (permalink)  
Alt 13-02-09, 15:44
Benutzerbild von Fuerchau
Fuerchau Fuerchau ist offline
[rlp_Moderator]
 
Registriert seit: Feb 2001
Beiträge: 10.668
Renommee-Modifikator: 11
Fuerchau befindet sich auf einem aufstrebenden Ast
Stimmt genau, Dieter.
Per BREAK-Handler wird die Nachricht nun aus einer MSGQ gelesen und als Statusnachricht ausgegeben. Das funktioniert auch so weit ganz gut.

Das kleine Problem hier ist noch (aber das interressiert erst mal nicht mehr weiter), dass man leider keine MSGQ in der QTEMP verwenden kann.
Man benötigt also bei Parallel-Betrieb je Job eine eigene MSGQ, da eine MSGQ nur von einem Job in *BREAK überwacht werden kann.
Diese MSGQ muss dann noch als zusätzlicher Parameter an das Java-Programm übergeben werden.

Wenn man ansonsten noch sieht, was die AS/400 da so treibt:
1 QSH-Job
1 Java-Job
1 QZDA-Job (ODBC-Zugriffe)

Der Umweg über die QSH ist nötig, da ich noch diverse Aufgabe als Script mit ausführe (geht auch sicherlich einfacher).

Mal sehen, vielleicht mache ich da doch noch mal eine RPGLE/Java-Mischung um über eine Keyed-DTAQ zu gehen.
Das Transferprogramm läuft dann als Thread und das Hauptprogramm wartet über die DTAQ auf Ende.

Ich weiß allerdings nicht, ob ich aus RPGLE zwar eine Klasse aufrufen kann, diese eine Thread startet und das RPGLE dann auch zurückkomt.

Ich werde da noch einiges ausprobieren.
Mit Zitat antworten
  #7 (permalink)  
Alt 13-02-09, 21:20
BenderD BenderD ist offline
[professional_User]
 
Registriert seit: Mar 2002
Beiträge: 2.798
Renommee-Modifikator: 9
BenderD stellt sich gerade der Gemeinschaft vor
das eigentliche Problem ist ja der RPG oder COBOL Schinken mit dem 5250, der kein Multithreading kann und entweder an der DataQ wartet, oder den Benutzer weiter arbeiten lässt. Wenn es nur um den Trappatoni geht, dann kann man das auch ganz aus dem Java draußen lassen. Sprich:
- dein interaktiver Job startet einen Job per Submit und greift sich die Jobnummer aus der Start Message, erstellt dann eine MSGQ Qxxxxxx (wobei xxxxxx Jobnummer des Tochterjobs) und hängt einen Breakhandler an diese Q (gelöscht wird diese Q dann am Besten aus einem ILE Exithandler, CEE4RAGE ist dein Freund).
- der Tochterjob startet den Javaprozess und holt sich nach Completion desselben seine eigene Jobnummer und stellt "Ich habe fertig" in die Qxxxxxx
- der Breakhandler macht daraus, was immer er will

D*B

Zitat:
Zitat von Fuerchau Beitrag anzeigen
Stimmt genau, Dieter.
Per BREAK-Handler wird die Nachricht nun aus einer MSGQ gelesen und als Statusnachricht ausgegeben. Das funktioniert auch so weit ganz gut.

Das kleine Problem hier ist noch (aber das interressiert erst mal nicht mehr weiter), dass man leider keine MSGQ in der QTEMP verwenden kann.
Man benötigt also bei Parallel-Betrieb je Job eine eigene MSGQ, da eine MSGQ nur von einem Job in *BREAK überwacht werden kann.
Diese MSGQ muss dann noch als zusätzlicher Parameter an das Java-Programm übergeben werden.

Wenn man ansonsten noch sieht, was die AS/400 da so treibt:
1 QSH-Job
1 Java-Job
1 QZDA-Job (ODBC-Zugriffe)

Der Umweg über die QSH ist nötig, da ich noch diverse Aufgabe als Script mit ausführe (geht auch sicherlich einfacher).

Mal sehen, vielleicht mache ich da doch noch mal eine RPGLE/Java-Mischung um über eine Keyed-DTAQ zu gehen.
Das Transferprogramm läuft dann als Thread und das Hauptprogramm wartet über die DTAQ auf Ende.

Ich weiß allerdings nicht, ob ich aus RPGLE zwar eine Klasse aufrufen kann, diese eine Thread startet und das RPGLE dann auch zurückkomt.

Ich werde da noch einiges ausprobieren.
__________________
AS400 Freeware
http://www.bender-dv.de
Mit Zitat antworten
  #8 (permalink)  
Alt 14-02-09, 11:34
Benutzerbild von Fuerchau
Fuerchau Fuerchau ist offline
[rlp_Moderator]
 
Registriert seit: Feb 2001
Beiträge: 10.668
Renommee-Modifikator: 11
Fuerchau befindet sich auf einem aufstrebenden Ast
Ob Batch oder Dialog spielt da keine Rolle, da ich immer eine MSGQ mit Job-Nummer benötige.
Da es immer wieder Gründe für unkontrollierte Job-Abbrüche gibt, klappts halt mit dem Aufräumen nicht immer.
Die Gefahr, dass dadurch Objekte verwaisen, ist mir zu groß.

Es geht hier auch nur um Test-Dialoge, da später die Pogramme immer in Batch laufen.
Daher reicht mir z.Zt. eine einzige MSGQ, da die Nachrichten dann angezeigt werden können.

Sieht i.Ü. ganz nett aus.
Mit Zitat antworten
  #9 (permalink)  
Alt 14-02-09, 13:00
BenderD BenderD ist offline
[professional_User]
 
Registriert seit: Mar 2002
Beiträge: 2.798
Renommee-Modifikator: 9
BenderD stellt sich gerade der Gemeinschaft vor
das mit den unkontrollierten Abbrüchen, das macht der ILE ConditionHandler, selbiger muss eine definierte Schnittstelle haben und wird per CEE4RAGE registriert; die Runtime ruft selbigen beim Ende der Activation Group selbst beim ENDSBS noch auf und genau dort programmiert man die Aufräumarbeiten (Beispiel auch auf meiner OpenSource Seite : Instream hat sowas und GenFrame generiert diese Dinger mit).
Beim Submit könnte man natürlich auch normal end / abnormal End per Escape message oder über System.exit(nnn) machen, nnn = 0 ist normal end ansonsten abnormal - müsste eigentlich auch in der Completion Message durchgereicht werden.

D*B


Zitat:
Zitat von Fuerchau Beitrag anzeigen
Ob Batch oder Dialog spielt da keine Rolle, da ich immer eine MSGQ mit Job-Nummer benötige.
Da es immer wieder Gründe für unkontrollierte Job-Abbrüche gibt, klappts halt mit dem Aufräumen nicht immer.
Die Gefahr, dass dadurch Objekte verwaisen, ist mir zu groß.

Es geht hier auch nur um Test-Dialoge, da später die Pogramme immer in Batch laufen.
Daher reicht mir z.Zt. eine einzige MSGQ, da die Nachrichten dann angezeigt werden können.

Sieht i.Ü. ganz nett aus.
__________________
AS400 Freeware
http://www.bender-dv.de
Mit Zitat antworten
  #10 (permalink)  
Alt 14-02-09, 16:02
Benutzerbild von Fuerchau
Fuerchau Fuerchau ist offline
[rlp_Moderator]
 
Registriert seit: Feb 2001
Beiträge: 10.668
Renommee-Modifikator: 11
Fuerchau befindet sich auf einem aufstrebenden Ast
System.exit() funktioniert nicht als Fehlerausgang, wenn man Java aus der QSH aufruft.
Hierzu ist das JAVA-Kommando nötig (man spart sich dann den QSH-Job).

Allerdings bietet mir die QSH noch ein bisschen drumherum, was ich mit dem Kommando nicht kann.
Ich müsste dann noch mit STMF-Befehlen rumwerkeln.

Zu Zeit baue ich den Java-Aufruf per CLP komplett zusammen. Beispiel:

"cd /MyHome;
echo "Somthing " >in.properties;
echo "Somthing else " >>in.properties;
:
java -Dxxx -Dyyy -classpath zzzz myclass;
rm in.properties;
"

Klar müsste ich jetzt den Return von Java auswerten (if ...;fi; ) aber in der STDERR ist ja dann alles was ich brauche.
Mit Zitat antworten
Antwort


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Erste Schritte mit Java -> package com.ibm.as400.access does not exist?? woki NEWSboard java 3 06-06-06 16:57
Java Programm soll PDF-Files zusammenfügen JonnyRico NEWSboard java 9 16-09-05 09:23
Java Programm aus ILE RPG aufrufen PGMR NEWSboard java 10 10-02-05 11:33
Java Programm aus ILE RPG aufrufen PGMR NEWSboard programmierung 0 02-02-05 14:10
Aufruf von Java Programm direkt aus RPG mk System i Hauptforum 0 09-09-04 09:22


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are An


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:30 Uhr.