Inhaltsübersicht
Weitere wichtige Hinweise zu den Bibliotheken und Verzeichnissen befinden sich auf der Produkt-Homepage von RPGWX/WOPiXX. |
GO LICPGM
, Auswahl 10, Taste F11
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.
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).
ADDLIBLE DIRWEB
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.
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.
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.
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
Für alle SQL-Befehle gilt:
DIRWEB/DWSESSQL oder DIRWEB.DWSESSQL
.DIRWEB.DWSESSQL
.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
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 logwhere PRINFO like '%SQL Command:%'
order by PRWRTDATE desc;
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
/www/dirweb/logs/error_log.Qxxxxxx
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.
STRDBMON OUTFILE(QGPL/WPXDBMON) JOB(235242/QTMHHTTP/DIRWEB)
ENDDBMON JOB(235242/QTMHHTTP/DIRWEB)
CL:STRDBMON OUTFILE(QGPL.WPXDBMON) JOB(235242/QTMHHTTP/DIRWEB) ; CL:ENDDBMON JOB(235242/QTMHHTTP/DIRWEB) ; |
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
-- 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
Für diesen Fehler gibt es verschiedene Ursachen, hier sind einige aufgelistet:
Die folgenden IFS-Verzeichnisse müssen installiert sein:
/www/dirweb
/Toolmaker/DirectWeb
/Toolmaker/IBM_I
Wenn eines davon fehlt, bitte die Hotline kontaktieren.
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');
Wx_ChgFile('CONTPF');
verschwand der Fehler.
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.
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".
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.
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