Anmelden

View Full Version : Job-Calls von Java-Programmen auf der AS400



Christian.Hesse
30-03-06, 12:52
Hallo alle miteinander,

meine Lieblings-AS400 macht mir immernoch Probleme. :-(

Deswegen habe ich eine neue Frage: Wenn ich von Java aus mit einem ProgramCall-Objekt mit der run()-Methode ein Programm auf der AS400 ausführe:

- Wo läuft es?
- Wo kann ich es sehen?
- Wie kann ich es sehen?
- Wie kann ich sehen, wer es gestartet hat?
- Kann ich an deren Priorität drehen?

Vielen herzlichen Dank für eure Hilfe!

Viele Grüße

Christian

RobertPic
30-03-06, 13:36
Zugriff über das Verbindunger Klasse AS400 werden von den Jobs QZHQSSRV abgehandelt.

Auch hier hilft es den User bei der Anmeldung (für die AS400 Verbindung)
mit WRKOBJLCK OBJ(User) OBJTYPE(*USRPRF) zu suchen.

Programme kann man aber auch über die DB-Verbindung aufrufen.

Robert P.

Christian.Hesse
30-03-06, 14:11
Hallo Robert,

den Prozeß dazu habe ich gefunden, ebenso wie die Infos, was dem Benutzer alles gehört. Vielen herzlichen Dank.

Das man Programme auch mit einer Datenbankverbindung aufrufen kann, hatte ich vermutet, aber noch nie probiert. Die Java-Clients, die ich hier im Einsatz habe, rufen verschiedene RPG-Programme auf der AS400 auf, nachdem das damals als schneller und performanter angesehen wurde, als das Schreiben mit Insert und Update. Ich habe bisher den Vergleich noch nicht gemacht, kann diese Aussage also nicht bewerten.

Irgendwie scheine ich doch bei meiner Problemsuche auf dem falschen Pfad zu sein...

Viele Grüße

Christian

RobertPic
30-03-06, 16:08
...
Das man Programme auch mit einer Datenbankverbindung aufrufen kann, hatte ich vermutet, aber noch nie probiert.


stmt.execute("{{call TSTSNDCL ('Testnachricht4')}}");


funktioniert z.B. (geht bei JDBC auch ohne die geschweiften Klammern)

Sauberer ist es, eine stored Procedure über das Programm zu legen. Das hat auch den Vorteil, dass man Parameter zurückbekommen kann:



CREATE PROCEDURE LASOBJ/LAS01SP
( INOUT FILE CHARACTER(8),
INOUT AUFTR CHARACTER(6),
INOUT STAT CHARACTER(4))
RESULT SETS 0
EXTERNAL NAME LASOBJ/LAS01CL
LANGUAGE CL
PARAMETER STYLE GENERAL


Im obigen Beispiel wird die stored Procedure LAS01SP über das CL-Programm LAS01CL gelegt.

Frage: Habt ihr auch ODBC-Anwendungen? (auf der AS/400 sind die gleichen Dienste für ODBC und JDBC verantwortlich)

Das ganze Problem dürfte sich aber erst gar nicht stellen, da ein DB-Insert bzw. Update (mit unique Key) normalerweise nichts langsames ist.

Ich denke, dass da bei den Tests (SQL vs. Calls) irgendwas nicht optimal war (Autocommit, ext.Metadaten, zuviel geclosed, zuwenig geclosed, keine PreparedStatements, immer neue Klasse ....)

Robert P.