[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2004
    Beiträge
    18

    ILE-RPG mit Java erster Aufruf dauert sehr lange

    Ich habe ein ILE-RPG-Programm geschrieben in dem eine Javaklasse aufgrufen wird, die auf eine MYSQL-Datenbank zugreift und Daten aus der MYSQL an das RPG Programm übergibt. Das Programm läuft soweit, allerdings dauert der erste Start sehr lange. Ich denke es wird hierbei die VM initialisert/gestartet. Wird das Programm erneut aufgerufen geht es viel schneller. Gibt es eine Möglichkeit die VM beim Anmelden des Benutzers zu starten; etc ? Wie kann man dieses Problem lösen ?

    vorab vielen Dank für die Hilfe

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    works as designed und wird katastrophal, wenn das jeder Benutzer in seiner Anwendung macht, dann kannst Du schon mal neue Hardware bestellen.
    Das ganze muss als Service implemeniert werden: sprich Java Server Programm wartet an Socket oder DTAQ und RPG kommuniziert asynchron mit diesem Service.

    mfg

    Dieter Bender

    Zitat Zitat von WPF
    Ich habe ein ILE-RPG-Programm geschrieben in dem eine Javaklasse aufgrufen wird, die auf eine MYSQL-Datenbank zugreift und Daten aus der MYSQL an das RPG Programm übergibt. Das Programm läuft soweit, allerdings dauert der erste Start sehr lange. Ich denke es wird hierbei die VM initialisert/gestartet. Wird das Programm erneut aufgerufen geht es viel schneller. Gibt es eine Möglichkeit die VM beim Anmelden des Benutzers zu starten; etc ? Wie kann man dieses Problem lösen ?

    vorab vielen Dank für die Hilfe
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    727
    Frage an Dieter und Vorschlag :
    Wie sieht es eigentlich aus wenn ich das Java-PGM als store procedure implementiere und per embedded SQL von RPG aufrufe. ?
    Wie erfolgt hier die Instanzierung der JVM?

    Sven

  4. #4
    Registriert seit
    Jul 2004
    Beiträge
    18
    Hallo,
    erstmal vielen Dank für die Info.

    Hast Du vielleicht ein Beispiel (Code/URL) für so eine Anwendung. Rückgabewert max. String 2000 Zeichen.
    Übergabe an den Server: IP Port Datenbankname "select * befehl" "liste von feldern aus der select anwendung"
    Rückgabewert max. String 2000 Zeichen.



    Zitat Zitat von BenderD
    Hallo,

    works as designed und wird katastrophal, wenn das jeder Benutzer in seiner Anwendung macht, dann kannst Du schon mal neue Hardware bestellen.
    Das ganze muss als Service implemeniert werden: sprich Java Server Programm wartet an Socket oder DTAQ und RPG kommuniziert asynchron mit diesem Service.

    mfg

    Dieter Bender

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Sven,

    auf den ersten Blick mag das besser aussehen, allerdings mit harten Restriktionen und katastrophalen Folgen für die Anwendung. Bei den neueren Releases (ich meine 5.2, könnte auch 5.1 sein) bleibt die JVM im Job resident und wird nur mit System.exit() gekippt, ob das der Spezifikation entspricht entzieht sich meiner momentanen Kenntnis. Aber sei's drum, jetzt ändert sich für embedded SQL in RPG lokal nix (JVM läuft im selben Job), aber remote (JVM läuft im Server Job) verhält sich das völlig anders.
    Hinzu kommt, dass die stored procedure rübergemappt wird auf static Methoden, die ihrerseits wieder nur an static Komponenten drankommen (ist nunmal so in Java) und ein SQL Client nie vorhersagen kann von welchem Server Job er bedient wird, es sei denn er hält die Connection offen. Hält man die Connection, hat man wieder die 1:1 Beziehung für die JVMs und aufrufenden Jobs, gibt man sie frei, um JVMs zu sparen, weiss man nicht, ob das was nutzt und wenn es was nutzt, weiss man nicht in welchem "Zustand" sich die JVM befindet.
    Ich bleibe bei meiner Empfehlung:
    - keine Java Aufrufe aus RPG
    - keine RPG Aufrufe aus Java
    - kein Mix von RPG und Java
    wenn es um die Verwendung von Komponenten geht (soll es ja sogar in RPG Anwendungen geben), dann muss man das wie einen Serverdienst anlegen (kann man unter Stichworten, wie CORBA oder WebServices nachlesen wie sowas von der Struktur aussieht).
    Auf den praktischen Nenner gebracht, bedeutet das genau das, was ich hier konkret vorgeschlagen habe.

    mfg

    Dieter Bender


    Zitat Zitat von Sven Schneider
    Frage an Dieter und Vorschlag :
    Wie sieht es eigentlich aus wenn ich das Java-PGM als store procedure implementiere und per embedded SQL von RPG aufrufe. ?
    Wie erfolgt hier die Instanzierung der JVM?

    Sven
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    ich habe da selber momentan nix, meine Schwerpunkte liegen im Java Bereich meist woanders, andere Quellen empfehlen kann ich auch nicht (vielleicht mit Google selber suchen). Diese Problematik wird meist unter den Teppich gekehrt (sieht man auch daran, dass man mit Aufwand was in den RPG Compiler einbaut, was nicht vernünftig funktioniert, früher hat man sowas Spielerei genannt).
    Ich denke allerdings darüber nach, ob ich sowas mal als generischen Dienst schreibe, sollte das der Fall sein, wird es wohl auf meiner OpenSource Seite landen - Termine dafür gibt es nicht.

    mfg

    Dieter Bender

    Zitat Zitat von WPF
    Hallo,
    erstmal vielen Dank für die Info.

    Hast Du vielleicht ein Beispiel (Code/URL) für so eine Anwendung. Rückgabewert max. String 2000 Zeichen.
    Übergabe an den Server: IP Port Datenbankname "select * befehl" "liste von feldern aus der select anwendung"
    Rückgabewert max. String 2000 Zeichen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. Aufruf von Java Methode aus RPG
    By codierknecht in forum NEWSboard Java
    Antworten: 7
    Letzter Beitrag: 23-03-05, 08:31
  3. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Java
    Antworten: 10
    Letzter Beitrag: 10-02-05, 10:33
  4. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 02-02-05, 13:10
  5. Aufruf von Java Programm direkt aus RPG
    By mk in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 09-09-04, 08:22

Berechtigungen

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