nochmal ein paar Grundlegende Zusammenhänge zum Verständnis:
- RPG verwendet für seine Java Einbindung das Java native Interface (JNI), das ist eine Java Standardschnittstelle für C Programme, die auch auf einer AS/400 wie auf jeder anderen Plattform funktioniert, wird das nicht so implementiert, gibt es keine Kaffeetasse.
- JNI Anwendungen laufen (skizziert) wie folgt:
-- erzeugen der Java VM mit JNI_CreateJavaVM, hier wird die JVM geladen und man bekommt ein array of pointer, mit dem man auf Funktionen der JVM zugreifen kann
-- Aufruf von Java Funktionen über die erhaltenen Pointer
-- beenden der JVM mit DestroyJavaVM (macht man das nicht, stirbt die VM spätestens bei Ende des Prozesses = Job)

Bei der Verwendung von Java in RPG Programmen über die Unterstützung des Compilers macht man selber keinen JNI_CreateJavaVM (das versucht der Compiler implizit), mit einer Palette an Nebenwirkungen, man kann nicht steuern wie man die JVM gestartet haben will und man kann das beenden aus RPG nicht steuern (da man an die Pointerstruktur nicht drankommt!!!).

Im vorliegenden Fall wird ein RPG Programm mit RCLACTGRP rausgefenstert, mit der Folge, dass die Werte der Pointer, die die Verbindung zur JVM darstellen futsch sind.

Wird jetzt das RPG Programm aufgerufen, hat das Pointerfehler zur Folge, da die RPG Runtime den Connect zur noch existierenden JVM nicht mehr bekommt (zeitweilig wurde da einfach eine weitere gestartet, was mit neueren Releases nicht mehr geht).

Problem ist hier in keinem Fall das "ordentliche" beenden der JVM, das geht in jedem C Programm ohne jedes Problem. Problem ist hier, dass man (so wie es aussieht) ein RPG Programm mit RCLACTGRP rausfeuern kann und dasselbe Programm anschließende keinen connect zur JVM mehr findet.

Wenn das aus dem Kaffeesatz raus soll, dann muss hier mehr Information auf den Tisch.

D*B

Zitat Zitat von Robi Beitrag anzeigen
Weitere schlechte Nachrichten
das mit dem destroy geht, wie von KM beschrieben, auch nicht.
Und die Umstellung auf einen Server Job ist nicht möglich, das es in dem Pgm einen kleinen Dialog Teil gibt, der natürlich so nicht mehr funktioniert. Da der Dialog mit Dateien die vom Java erzeugt werden arbeitet, (Qtemp ) ist das auch nicht ohne weiteres zu trennen.
Bleibt das Prob. die JVM 'ordentlich' zu beenden.

Robi