PDA

View Full Version : Java Programm mit Internen Variablen aufrufen aus RPGLE



Malte
16-02-16, 08:04
Hallo alle zusammen,

ich bin grade dabei ein Java Programm in mein RPG-Programm einzubinden.

Das hat auch alles soweit ganz gut funktioniert.

Ich kann also den *CONSTRUCTOR ganz normal aufrufen, das Problem ist, dass sich in meinem Java Programm interne private Variablen eine resultList aufbaut.

Hier der Aufruf des Konstruktor



D GeoCode PR O ExtProc(*JAVA:
D 'com.lup.GeoCode':
D *CONSTRUCTOR)
D geoData O CLASS(*JAVA:
D 'com.lup.GeoData')
D CONST
D geoSettings O CLASS(*JAVA:
D 'com.lup.GeoSettings')
D CONST

D j_geoCode S O CLASS(*JAVA:'com.lup.GeoCode')

j_geoCode = GeoCode(j_geoData:j_geoSettings);


Das funktioniert auch noch alles super

aber wenn ich dann die Funktion darin aufrufen möchte krieg ich immer das Problem das die Intern Variablen im Java nicht mehr definiert sind.



D j_geoResult S O CLASS(*JAVA:'com.lup.GeoResult')

D callService PR O ExtProc(*JAVA:
D 'com.lup.GeoCode':
D 'callService')
D CLASS(*JAVA:
D 'com.lup.GeoResult')
D O CLASS(*JAVA:
D 'com.lup.GeoData')
D const

j_geoResult = callService(j_geoCode:j_geoData);


Ich hatte aus verschiedenen Beispielen mir das so zusammen gebaut das ich so die Class wieder übergeben kann so das ich die Variablen von GeoCode weiter benutzen kann.

In meinem TestScript auf dem PC sieht das so aus


GeoResult geoResult = new GeoResult();
GeoCode geoCode = null;

geoCode = new GeoCode(geoData, geoSettings);
geoResult = geoCode.callService(geoData);


Ich bin mittlerweile Ratlos und vermute ja das ich nur irgend einen kleinen dummen Fehler drin habe.

Danke schon mal für die Hilfe

MfG Malte

camouflage
19-02-16, 09:00
Kann ich dir leider nicht helfen. Aber, ich hab um Geodaten zu erhalten, halt einfach einen Webservice darum gebaut, und der ist vermutlich erst noch schneller.

Fuerchau
19-02-16, 10:01
Wo und wie definierst bzw. instantiierst du denn deine geoSetting?
Möglicherweise übergibst du einen Null-Pointer und deine Klasse macht dann nichts.
Oder wird geoSetting vom Konstruktor erstellt?
Dann darf der Parameter nicht "const" sein, sonst wird er ByVal und nicht ByRef übergeben und wieder zerstört.