-
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
-
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]
-
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
-
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
-
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
-
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 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
-
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.
-
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 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.
Similar Threads
-
By Christian.Hesse in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 04-08-06, 10:04
-
By bode in forum NEWSboard Java
Antworten: 7
Letzter Beitrag: 02-09-05, 15:09
-
By CMueller@must.de in forum NEWSboard Java
Antworten: 0
Letzter Beitrag: 10-11-04, 13:38
-
By CMueller@must.de in forum Archiv NEWSboard Events
Antworten: 0
Letzter Beitrag: 10-11-04, 13:35
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks