PDA

View Full Version : Java-Programm bleibt einfach stehen



until65
07-06-23, 11:04
Hallo,
ich wende mich mal an alle, die mit Java auf der IBM i arbeiten.
Bei einem Kunden existiert folgendes Problem:

Zu jeder Rechnung wird ein Java-Programm aufgerufen, welches die Daten, die in XML vorliegen, zu einem .pdf Druck macht, diesen versendet und archiviert.
Das Programm funtkioniert seit ca. 4,5 Jahren relativ problemlos und fängt seit ca. 1 Monat an 'rumzuzicken. Es druckt einen oder mehrere Vorgänge aus und bleibt dann stehen. Im Joblog finde ich nichts, letzter Eintrag ist
2902 - JAVA CLASS('/lpWeb/rb/rbe.jar') PARM('000135795' 'P') OUTPUT(*NONE)
sowie eingestarteter Job QJVACMDSRV.

Der Src-Code steht nicht zur Verfügung, ich vermute aber eh, dass es irgendwie am Umfeld liegt, so ein Programm läuft ja nicht nach 4 Jahren auf einmal auf einen Fehler.

Es kommt, nachdem ein Druck erfolgreich absolviert wurde, die Meldung
2023-06-06 16:10:17:101 ERROR - [Archive.archiveFileRemote()] Archivieren der Datei 'smb://192.168.10.12/Rechnungsversand-Archiv/a s400/echt/Rechnungsdruck Kunde/2428401_4331608_Reisebestaetigung_Rechnung.pdf' fehlgeschlagen. Ursache: jcifs.smb.SmbAuthException: Access is denied.

Wer die Installation vor 5 Jahren gemacht, ist nicht bekannt, steht mit Sicherheit auch nicht mehr zur Verfügung.
Fiolgende Fragen:
- Kann jemand mit den Aussagen etwas anfangen?
- Hat jemand Interesse das Problem für den Kunden zu lösen?
System ist : V6R1M0, PTF-Stand ist von 2009 (!)
Sollte dies einigermaßen plausibel das Problem sein, nehme ich auch diese Information gerne mit.

LG

Ernst

Fuerchau
07-06-23, 13:26
Da kann ich nur vermuten, dass die letzte Aktion mit dem Fehler den Prozess zum Absturz bringt, da damit nicht gerechnet wird.
Es wird ja versucht auf eine SMB-Freigabe zuzugreifen (Windowsserver?) die nicht erreichbar ist oder der User bei der Anmeldung gescheitert ist.

Prüfe warum mit MKDIR("//192.168.10.12/Rechnungsversand-Archiv" auf die Freigabe nicht zugegriffen werden kann.

Die AS/400 (noch keine IBM i?) meldet sich mit dem ausführenden Job-User und Kennwort bei der Freigabe an. Ggf. ist da was umgestellt worden, das Archiv hat man aber vergessen?

Die Quelle lässt sich aus der .Jar-Datei oft wieder herstellen, wenn er nicht "fuscated" wurde.

until65
07-06-23, 17:52
Hi,

Danke für die Tipps. Werde das mit der Umstellung mal weitergeben.

Was mich etwas verwirrt, ist das es ab und zu ja geht, also gestern z.B. unmittelbar vor dem obigen Fehler hat alles geklappt:
2023-06-06 16:09:22:851 INFO - [Archive.archiveFileRemote()] Archiviere Datei '2428425_4331607_Reisebestaetigung_Rechnung.pdf'
War der gleiche AS/400-Job, der das Java Programm nochmal aufgerufen hat.

Wenn es ein generelles Berechtigungsproblem wäre, dürfte es eigentlich nie gehen.
Aber so etwas wäre natürlich eine einfache Lösung, auch wenn ich nicht weiß, wer dort dafür zuständig ist...

Ich kenne mich allerdings im Bereich IFS null aus, aus welchem Umfeld stammt der Befehl MKDIR?

Fuerchau
07-06-23, 21:49
MKDIR ist ein AS/400-Befehl aus dem IFS (Make Directory) der bei Remotefreigaben die Verbindung zu einem SMB-Server herstellt (z.B. Windows).
Wichtig ist, dass bis V7Rx nur SMB1 unterstützt wird. Wenn es also eine Windowsfreigabe auf diesem Ziel-Server gibt mus SMB1/CIFS auf dem Server aktiviert sein.
Microsoft stellt diesen Dienst aus Sicherhetsgründen langfristig ein. Per Default ist das bei neuen Servern immer aus und könnte nach einem Update auch ausgeschaltet werden.
Desweiteren ist zu prüfen, ob der Job immer über den selben User läuft, da auf dem Zielserver ein lokaler User sein muss, da Domainanmeldung noch nicht unterstützt wurde und die Anmeldung immer mit dem Job-User und dessen Kennwort durchgeführt wird.
Ggf. bricht die Verbindung auch immer mal wieder ab.

MKDIR mit Netzwerkadresse "//Serever/Freigabe" verbindet mit dem Server, so dass anschließend mit WRKLNK "//Server/Freigabe" mit dem Server gearbeitet werden kann.