Toolmaker Produkt-Dokumentation

RPGWX - Fehlersuche und -behebung

Inhaltsübersicht

Lizenz prüfen



Bibliotheken und Verzeichnisse für RPGWX

Weitere wichtige Hinweise zu den Bibliotheken und Verzeichnissen befinden sich auf der Produkt-Homepage von RPGWX/WOPiXX.


Bibliotheken

  • DIRWEB
  • DIRWEBCGI
  • WOPIX

IFS-Verzeichnisse

  • /Toolmaker/
    • DirectWeb
    • IBM_I
    • weitere, wenn weitere WOPiXX-Anwendungen installiert sind, z.B. "DirectMail400" oder "DirectArchive", etc.
  • /www/dirweb




Fehlersuche und -behebung auf IBM i

Version feststellen

IBM i-Version

GO LICPGM, Auswahl 10, Taste F11

RPGWX Version

WRKLIB DIRWEB - in der Beschreibung steht die Versionsnummer

DSPDTAARA DIRWEB/prdrel

Die Versions-Nr. ist auch in der Tabelle DWWEBAPP (Bibliothek DIRWEB) in den Spalten APVERS, APVERSREL und APVERSPTF hinterlegt. Daten-Bereich und Einträge in der Tabelle DWWEBAPP werden beide aktualisiert und gegeneinander abgeglichen.

Befehle zur Konfiguration

ADDLIBLE DIRWEB
CFGDIRWEB

Wenn nötig, dann können Sie SSL im Betriebssystem IBM i aktivieren. Folgen Sie dafür den Schritten auf der Seite HTTPS-Konfiguration (z.B. für RPGWX).

Start/Stop -Befehle

  1. ADDLIBLE DIRWEB
  2. STRRPGWX oder ENDRPGWX

Sofern man die Befehle mit dem CL-Befehl CRTDUPOBJ in die Bibliothek QGPL kopiert (was auf unseren Systemen, zumindest auf der PWRDIST und PW8BHA erfolgt ist), können beide Befehle ausgeführt werden, ohne dass zuvor die Bibliothek DIRWEB explizit in die Bibliotheksliste aufgenommen wurde.

Subsystem und Jobs

Damit RPGWX arbeiten kann werden einige Dienste des HTTP-Servers auf der IBM i benötigt. Diese Dienste laufen im Subsystem QHTTPSVR als eigene Instanz mit dem Namen DIRWEB. Hierfür müssen jedoch Name und Port des Servers (der IBM i) im Green-Screen gesetzt und die Instanz DIRWEB gestartet werden.

WRKSBSJOB QHTTPSVR

Für die Fehlersuche interessant sind alle Jobs, die den Namen DIRWEB tragen und als Funktion PGM-QZSRCGI.

Welcher Job eine einzelne Browser-Sitzung bedient kann man sehen, wenn man sich den Seitenquelltext anzeigen lässt (ggf. den vom Frame). In der Seitenquelle finden sich dann diese Angaben:

var curjob = "DIRWEB";
var curusr = "QTMHHTTP";
var curjobnr = "197815";

Diese kann man im Befehl WRKJOB verwenden, um genau den Job zu finden, der die Sitzung bedient.

Sofern man in der Anzeige das Debug-Fenster aktiviert hat, kann der qualifizierte Job direkt aus den Header-Informationen (System-Job) ausgelesen werden.

Logs/Protokolle/Dumps

Protokollierung ein und ausschalten (im Browser)

Wenn RPGWX im Browser funktioniert dann geht das mit RPGWX → Einstellungen → Protokollierung

In der Spalte Protokoll-Datei sieht man, welche Datei mit abgefragt werden muss, um die entsprechende Log-Information zu sehen.

Protokollierung ein und ausschalten (im Green-Screen)

Die Steuerdatei für die oben beschriebenen Dateien heisst DIRWEB/DWACTLOGP. Für jede Protokolldatei gibt es einen Datensatz in der DWACTLOGP.

Das Feld ACACT steuert, ob die Protokolldatei geschrieben wird oder nicht: 1=Ja, 0=Nein

Protokoll-Dateien in Bibliothek DIRWEB

Für alle SQL-Befehle gilt:

  • wenn man sie in einem IBM i - Green Screen im STRSQL-Bildschirm eingibt, dann muss man die Bibliothek DIRWEB
    • entweder bereits vor dem Aufruf von STRSQL in die Bibliotheksliste geschrieben haben
    • oder man gibt sie qualifiziert an, im dem man die Bibliothek DIRWEB dem Objekt voranstellt. Bibliothek und Objekt können wahlweise mit einem Querstrich ( / ) oder einem Punkt ( . ) getrennt werden, also DIRWEB/DWSESSQL oder DIRWEB.DWSESSQL.
  • wenn man sie in einem graphischen SQL-Tool (z.B. ACS oder SQuirreL) eingibt, das standardmäßig mit SQL Namenskonventionen arbeiteat, dann ist der Questrich als Qualifikationskennzeichen nicht zulässig. Das Trennzeichen ist in diesem Fall immer der Punkt: DIRWEB.DWSESSQL.

DWSESSQL - SQL-Befehle, die verarbeitet wurden

select * from DIRWEB.DWSESSQL order by SQCHGDATE desc 

Zusätzlich kann man noch über Where-Bedingungen die Anzahl der Daten-Sätze auf eine bestimmte Session-Id einschränken.

select * from DIRWEB.DWSESSQL where SQID = 'ByLPwjA9PKVptezeaW8lbg=='

Nur die Befehle in ihrer Reihenfolge für eine bestimmte Sitzung:

select SQRCDS, time(SQWRTDATE), SQCMD
from DIRWEB.DWSESSQL
where SQID like '%jzchc%'
order by SQID, SQCHGDATE desc

DWPRDIRWP - verschiedene Log-Funktionen - hier: von den Anwendungen durchgeführte SQL-Befehle

Die DWSESSQL (s.o.) zeigt alle SQL-Befehle, die von RPGWX selbst gerufen werden. Befehle, die in den Anwendungen programmiert wurden, erscheinen nicht.

Wenn aber bei den Logs "SQLINFO" aktiviert ist, dann werden alle SQL-Befehle geloggt, und zwar in der DWPRDIRWP:

Zur Anzeige aller ausgeführten SQL-Befehle kann man diesen Befehl verwenden:

select log.PRWRTDATE, log.PRINFO, log.*
from  DWPRDIRWP log

where PRINFO like '%SQL Command:%'
order by PRWRTDATE desc;

DWWEBSES - Sitzungen

Eine Liste der Sitzungen mit ihren angemeldeten Benutzern anzeigen:

select B.SUUSR, A.*
FROM DWWEBSES A
left join DWWEBUSR B
on A.SEUID = B.SUID
ORDER BY SELST desc


Protokolldateien im IFS

/www/dirweb/logs/error_log.Qxxxxxx


STRDBMON - SQL-Befehle loggen

Der DB-Monitor loggt - wenn eingeschaltet - sämtliche SQL-Befehle. Man kann ihn auf einen einzelnen Job eingrenzen oder über das gesamte System arbeiten lassen.

Zunächst wird mit dem Befehl STRDBMON das Daten-Sammeln eingeschaltet. Nachdem die fragliche Funktion ausgeführt wurde kann man ihn mit ENDDBMON wieder abschalten.

Die Daten werden in eine Datei geschrieben, die man im STRDBMON angibt und die man mit einem SELECT-Befehl auswerten kannn.

Daten sammeln

  1. Job-ID des zu loggenden  Jobs ermitteln (z.B. 235242/QTMHHTTP/DIRWDIRWEB)
    1. woppix im Browser starten und das debug-Fenster aktivieren
    2. ein Programm startern, in dem die Job-Angaben angezeigt werden
  2. DB-Monitor starten mit STRDBMON
    1. OUTFILE angeben (hier: QGPL/WPXDBMON)
    2. JOB angeben, damit nur dessen Daten geloggt werden (Ausgabedatei könnte sonst sehr gross werden)
    3. z.B. STRDBMON OUTFILE(QGPL/WPXDBMON) JOB(235242/QTMHHTTP/DIRWEB)
  3. Programme ausführen, für die man sich interessiert
  4. DB-Monitor wieder beenden
    1. z.B. ENDDBMON JOB(235242/QTMHHTTP/DIRWEB)
Alternativen zu den 5250-Befehlen STRDBMON / ENDBMON in SQL
CL:STRDBMON OUTFILE(QGPL.WPXDBMON) JOB(235242/QTMHHTTP/DIRWEB) ;

CL:ENDDBMON JOB(235242/QTMHHTTP/DIRWEB) ;

Gesammelte Daten mit dem ACS Database Monitor auswerten

1. Im Startmenü von IBM i Access - Client Solutions (ACS) Doppelklicke auf "SQL Performance Center"


2. Den Reiter "Leistungsüberwachungen" (englich: "Performance monitors") wählen


3. Rechtsklick auf die Datei, die im Befehl STRDBMON, Parameter OUTFILE angegeben war und "Analysieren" (engl. "Analyze")


4. In der Kategorie "Overview" → Error → Error Statements wählen



Gesammelte Daten mit SQL auswerten

STRDBMON-Logdatei auswerten
-- Auswahl aller SQL-Befehle, die länger als 1 Millisekunde benötigten (QQI4 > 1)
select
  QQI4 as Millisec, 
  QQI6 as Microsec,  
  QQTIME ,  
  QQSTN , 
  QQSTIM as Starttime  ,  
  QQETIM as Endtime ,  
  QQC103 , 
  QQC104 , 
  QQ1000, 
  QVC1282
from QGPL/WPXDBMON a 
where QQI4 > 1 and  QQC103 <> 'QAQQINI'
order by QQETIM desc;

Weitere Hinweise zu den Feldern in der DB-Monitor-Ausgabedatei:https://www.ibm.com/docs/en/i/7.3?topic=formats-sql-table


Fehlersuche und -behebung auf dem Browser

Cache löschen

  • Firefox: STRG+F5



Support-Fälle

Kein Login-Fenster auf dem Browser, anstattdessen "Interner Server-Fehler"

Für diesen Fehler gibt es verschiedene Ursachen, hier sind einige aufgelistet:

Fehlendes Verzeichnis "/Toolmaker/DirectWeb" (2218)

Die folgenden IFS-Verzeichnisse müssen installiert sein:

  • /www/dirweb
  • /Toolmaker/DirectWeb
  • /Toolmaker/IBM_I

Wenn eines davon fehlt, bitte die Hotline kontaktieren.

Fehlermeldung: "Zeile für SELECT nicht gefunden. Error calling <programmname>" im Browser (18030182)

Der Fehler trat in diesem Fall in einem CHG-Programm auf.

Im Joblog des CGI-Jobs fand sich die Fehlermeldung

CCPF9897 – „Zeile für SELECT nicht gefunden“
Von DWSNDPGMSG
An DWFILINF, Prozedur DW_GETSQLNAMEFORTABLE

…wird über mehrere Stufen weitergereicht an <programmname>, Anweisung 12400

An Zeile 124 im Pgm <programmname> befindet sich dieser Befehl:

Wx_ChgFile('CONTLF01');

In diesem Fall ist CONTLF01 eine logische Datei mit der zugrunde liegenden physischen Datei CONTPF.
Nach Änderung des Befehls auf

Wx_ChgFile('CONTPF');

verschwand der Fehler.

Datenfehler X'1F' führt zu Fehlern bei RPGWX-WRK-Programmen

Bei dieser Fehlersituation ist eine mögliche Ursache, dass ungültige Zeichen (X‘1F‘) in einem Feld in der Datei dazu führen, dass nicht alle oder sogar gar keine Sätze angezeigt werden. Es handelt sich mit ziemlicher Sicherheit um Textfelder, die in der WRK-Anzeige angezeigt werden sollten.

Zum Prüfen, ob ein Feld "FIELD" in einem oder mehreren Sätzen dieses Problem hat, kann man den folgenden SQL-Befehl verwenden:

select FIELD , a.* from LIB/FILE as a where posstr(FIELD , X'1F') > 0 

Es werden alle Sätze angezeigt, die im Datenfeld FIELD ein Zeichen mit dem Inhalt HEX „1F“ enthalten.


Mit dem folgenden SQL-Befehl kann in dem Datenfeld „FIELD“ das fehlerhafte Zeichen hex „1F“ auf „Blank“ gesetzt werden (falls gewünscht):

update LIB/FILE set FIELD =  REPLACE(FIELD , X'1F' , ' ')   where posstr(FIELD , X'1F') > 0


Zur Zeit bietet Toolmaker bietet kein Tool, mit dem dieser Vorgang automatisiert bearbeitet werden kann.

Fehlermeldung beim Versuch, sich anzumelden: "Zu viele ungültige Anmeldeversuche. IP xxx.xxx.xxx.xxx ist gesperrt"

Es wurde zu häufig versucht, sich mit falschen Anmeldeinformationen von einem PC mit einer bestimmten IP-Adresse anzumelden.

In diesem Fall wird die Adresse von RPGWX für eine bestimmte Zeit gesperrt. In dieser Zeit ist kein Anmelden von diesem PC möglich. Nach Ablauf der Sperrfrist, kann man sich wieder normal anmelden.

Die Zeit, in der eine IP-Adresse blockiert wird, wird in RPGWX → Einstellungen → Grundeinstellungen, Reiter "Allgemein" festgelegt. Das Feld ist "IP Adresse sperren".


Fehlermeldung im Browser: ERR_CERT_AUTHORITY_INVALID

Problem

Der Browser zeigt eine Fehlermeldung beim Aufrufen von RPGWX. Man kann den Fehler umgehen, er kehrt jedoch immer wieder.

Lösung

Es handelt sich hier um eine SSL-Verbindung mit einem selbsterstellen Zertifikat.

Dem Browser muss "mitgeteilt" werden, dass die Stelle, die dieses Zertifikat ausgestellt hat (also die eigene IBM i) "vertrauenswürdig" ist.

Folgen Sie hierzu den Schritten, die auf der Seite IBM i - wichtige Informationen rund um das Betriebssystem - Das CA-Zertifikat auf den Benutzer PCs unter "Vertrauenswürdige Stammzertifizierungsstellen" installieren.

Fehlermeldung im Browser: ERR_CERT_COMMON_NAME_INVALID

Problem

Es wurde ein Zertifkat erstellt, das nicht "passt".

Das Zertifikat für den IBM i - HTML-Server muss korrekt erstellt werden.

Folgen Sie hierzu den Schritten, die auf der Seite IBM i - wichtige Informationen rund um das Betriebssystem - Ein Anwendungs-Zertifikat für den HTML-Server erstellen und zuordnen