[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jun 2004
    Beiträge
    9

    Angry Java-Klasse im ISeries-Cache ?

    Hallo zusammen,

    ich bin ziemlich verzweifelt, da ich schon "fast alles" ausprobiert habe. Ich hab folgendes Problem:

    Ich entwickle unter Eclipse auf dem PC eine Java-Klasse (in meinem Fall mache ich mit POI rum und erstelle echte XLS-Files aus AS/400-PF mit vielen spezifischen Sachen). Der Zugriff auf die ISeries-DB erfolgt über JDBC (jt400.jar). Auf meinem PC klappt das alles wunderbar. Ich generiere nun ein .jar-File und übertrage das ins IFS. Jetzt kann ich von der ISeries aus z.B. mit dem Command JAVA ... das Ding auch aufrufen und es macht dann auch irgendwas.

    Wenn ich aber jetzt über Eclipse nochmal Änderungen an dem Java-Programm mache und erneut eine .jar-Datei erstelle und diese auf der ISeries im IFS ablege, verwendet die AS/400 bei einem erneuten JAVA-Aufruf scheinbar noch die alte Klasse, die vorher schon mal gelaufen ist. Meine Änderungen werden nicht ausgeführt (hab mal zum testen ganz banale Console-Ausgaben gemacht -> es wird nix ausgegeben !!!).

    Verwende ich das gleiche .jar-File (direkt aus dem IFS) aber in einer DOS-Box klappt alles prima. Am erzeugten .jar kann es also nicht liegen. Es hat den Anschein, als wenn die ISeries die alte Klasse noch irgenwo gecached hat !! Kann das sein ? Was mache ich hier falsch ??

    Für jegliche Tips und Unterstützung schon jetzt Danke.

    Gruß
    Steinkohl

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo,

    das ist mir auch aufgefallen.
    Die einzige Lösung die gefunden habe ist den Job zu beenden.
    Dann wird bei einem erneuten Start der JVM die neue Jar Datei benutzt.

    Gruss
    Michael




    ich bin ziemlich verzweifelt, da ich schon "fast alles" ausprobiert habe. Ich hab folgendes Problem:

    Ich entwickle unter Eclipse auf dem PC eine Java-Klasse (in meinem Fall mache ich mit POI rum und erstelle echte XLS-Files aus AS/400-PF mit vielen spezifischen Sachen). Der Zugriff auf die ISeries-DB erfolgt über JDBC (jt400.jar). Auf meinem PC klappt das alles wunderbar. Ich generiere nun ein .jar-File und übertrage das ins IFS. Jetzt kann ich von der ISeries aus z.B. mit dem Command JAVA ... das Ding auch aufrufen und es macht dann auch irgendwas.

    Wenn ich aber jetzt über Eclipse nochmal Änderungen an dem Java-Programm mache und erneut eine .jar-Datei erstelle und diese auf der ISeries im IFS ablege, verwendet die AS/400 bei einem erneuten JAVA-Aufruf scheinbar noch die alte Klasse, die vorher schon mal gelaufen ist. Meine Änderungen werden nicht ausgeführt (hab mal zum testen ganz banale Console-Ausgaben gemacht -> es wird nix ausgegeben !!!).

    Verwende ich das gleiche .jar-File (direkt aus dem IFS) aber in einer DOS-Box klappt alles prima. Am erzeugten .jar kann es also nicht liegen. Es hat den Anschein, als wenn die ISeries die alte Klasse noch irgenwo gecached hat !! Kann das sein ? Was mache ich hier falsch ??

    Für jegliche Tips und Unterstützung schon jetzt Danke.

    Gruß
    Steinkohl[/QUOTE]

  3. #3
    Registriert seit
    Jun 2004
    Beiträge
    9
    Hallo nochmal,

    das ist ja noch viel schlimmer. Ich wüßte gar nicht welchen Job ich beenden sollte! Meine Sitzungen, habe ich alle schon mal an- und abgemeldet -> es hat sich nix geändert. Ich dachte über Nacht gibt sich das (wobei nachts KEIN IPL gefahren wurde). Aber auch nix. Das doofe Ding verwendet immer noch meine Ursprungsklasse.
    Wenn ich die .jar-Datei lösche kommt eine Exception "ClassDefNotFound" (oder so ähnlich). Nach dem ich die .jar aber neu erstellt habe, wird scheinbar wieder ein "altes" Klassenobjekt verwendet !!! Bug in V5R3M0 ?

    Gruß
    Steinkohl

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo,

    da scheint bei Dir aber was anderes faul zu sein.

    Beispiel:
    In einer interaktiven Sitzung rufe ich über einen Befehl
    die Java Programme auf. Die JVM startet und das PGM läuft ab.

    Ich ändere die Jar Datei und speichere sie auf dem IFS.

    Wenn ich jetzt in dem gleichen interaktive Job das Pgm
    starte wird das alte jar File benutzt.

    Wenn ich die Session abmelde und neu anmelde dann
    klappt es mit der neuen Jar Datei.

    So sollte es eigentlich bei Dir auch klappen.

    Gruss
    Michael

  5. #5
    Registriert seit
    Jun 2004
    Beiträge
    9
    Hallo zusammen,

    also Fall irgendwie gelöst. Ich habe ganz am Anfang mal, nachdem ich ein erstes .jar-File hatte dieses einfach im IFS umbenannt in xxx.jar und dann immer wieder mein neues aktuelles erstellt. Scheinbar hat die ISeries hier irgendwie noch eine Referenz auf dieses umbenannte .jar-File (in dem ja die gleichen Klassen wie im neuen .jar-File drin sind) gehabt. Auf jedenfall hab ich das xxx.jar gelöscht und alles ging einwandfrei. Ich muß nichtmal die Sitzung ab- und anmelden, damit das neue .jar-File verwendet wird.

    Trotzdem Danke an alle, die mir Tips gegeben haben.

    Gruß
    Steinkohl

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

    dieses Verhalten deutet darauf, dass der cashing Effekt aus dem angehängten hidden native Programm kommt. Das wäre ein Bug; eine andere Umgehung bestünde dann im löschen des alten jars und dann neu erstellen, oder ein DLTJVAPGM.

    mfg

    Dieter Bender

    Zitat Zitat von steinkohl
    Hallo zusammen,

    also Fall irgendwie gelöst. Ich habe ganz am Anfang mal, nachdem ich ein erstes .jar-File hatte dieses einfach im IFS umbenannt in xxx.jar und dann immer wieder mein neues aktuelles erstellt. Scheinbar hat die ISeries hier irgendwie noch eine Referenz auf dieses umbenannte .jar-File (in dem ja die gleichen Klassen wie im neuen .jar-File drin sind) gehabt. Auf jedenfall hab ich das xxx.jar gelöscht und alles ging einwandfrei. Ich muß nichtmal die Sitzung ab- und anmelden, damit das neue .jar-File verwendet wird.

    Trotzdem Danke an alle, die mir Tips gegeben haben.

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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Soweit ich mich erinnere wird ja nicht die JAR-Datei aufgerufen sondern eine Klasse. Gefunden wird diese dann über den CLASSPATH. Liegt nun das alte Archiv namentlich vor dem neuen, wird eben zuerst die alte Klasse gefunden.
    Zum Umbenennen entweder Namen verwenden, die garantiert hinten liegen (z***) oder in ein anderes Verzeichnis legen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    mit dem Classpath hat das wohl nix zu tun; durch den rename wird der Classpath nicht tangiert. Es gibt eine Verpointerung zwischen dem jar Archiv und einem hidden Service Programm und die ist scheints irgendwie rübergewandert und zusätzlich hat die AS dann die Veralterung nicht bemerkt. Leider scheint sich das ja mittlerweile auch alles wieder in diese unselige Richtung weg von echtem JIT Compile zu bewegen.

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau
    Soweit ich mich erinnere wird ja nicht die JAR-Datei aufgerufen sondern eine Klasse. Gefunden wird diese dann über den CLASSPATH. Liegt nun das alte Archiv namentlich vor dem neuen, wird eben zuerst die alte Klasse gefunden.
    Zum Umbenennen entweder Namen verwenden, die garantiert hinten liegen (z***) oder in ein anderes Verzeichnis legen.
    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. Java, JDBC, iSeries und Tschechische/Russische/Chinesische Zeichen
    By Christian.Hesse in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 04-08-06, 10:04
  2. Java ... JDBC ... Zugriff DB2 - Port iSeries ???
    By bode in forum NEWSboard Java
    Antworten: 7
    Letzter Beitrag: 02-09-05, 15:09
  3. Vortrag Java mit iSeries / Erfahrungsbericht in Stuttgart am 02.12.04
    By CMueller@must.de in forum NEWSboard Java
    Antworten: 0
    Letzter Beitrag: 10-11-04, 13:38
  4. Vortrag Java mit iSeries / Erfahrungsbericht in Stuttgart am 02.12.04
    By CMueller@must.de in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 10-11-04, 13:35
  5. Java auf der iSeries
    By binhierneu in forum NEWSboard Java
    Antworten: 7
    Letzter Beitrag: 19-10-04, 21:02

Berechtigungen

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