Anmelden

View Full Version : IBM i Kopplung Shopware 6



mk
25-01-23, 09:17
Hallo an *ALL.

ich schreibe es einfach mal zur Info.

Wir haben ein Kopplung zu einem Shopware 6 über
QSYS2.HTTP_POST und QSYS2.HTTP_GET ,
stellen auch für die Shopwareanfragen REST API's zur Verfügung usw.

Der Austausch der Daten über die JSON's funktioniert und somit
können wir uns direkt mit dem Shop unterhalten.
Wir brauchen also keine Delays über irgendwelche Austausch Tabellen.

Jetzt haben wir in einem Bildschirmprogramm die Funktionalität eingebaut
das der User die definierten Kontakte im Shop in seinem RPG Programm anzeigen kann.

Dabei kommt folgende Fehlermeldung auf:

Nachrichten-ID . . . . : CPF503E Bewertung . . . . . . : 30
Nachrichtenart . . . . : Senderkopie
Sendedatum . . . . . . : 25.01.23 Sendezeit . . . . . . : 09:54:37

Nachricht . . . : Fehler bei benutzerdefinierter Funktion in Teildatei
QSQPTABL.
Ursache . . . . : Beim Aufrufen der benutzerdefinierten Funktion HTTP_POST
in Bibliothek QSYS2 ist ein Fehler aufgetreten. Der Fehler trat beim
Aufrufen des zugeordneten externen Programms oder Serviceprogramms QSQAXISC
in Bibliothek QSYS, Programmeingangspunkt bzw. externem Namen axiscPostClob,
spezieller Name HTTP_POST, auf. Der Fehler trat bei Teildatei QSQPTABL Datei
QSQPTABL in Bibliothek QSYS2 auf. Der Fehlercode ist 1. Fehlercodes und ihre
Bedeutung:
1 -- Das externe Programm oder Serviceprogramm hat SQLSTATE 38501
zurückgegeben. Die vom Programm zurückgegebene Textnachricht ist: AXISC
ERROR : HTTPTransportException: Cannot initialize a channel to the remote
end.?GSKit Error is 6003 - Der Zugriff auf die Schlüsseldatenbank ist nicht
zulässig. .
2 -- Das externe Programm ist vor seiner Beendigung fehlgeschlagen.
3 -- Bei der Datenbank trat ein Zeitüberschreitungsfehler beim Warten auf
die Rückkehr zum Hauptprogramm auf. Der von der Datenbank verwendete
Zeitüberschreitungswert betrug 0 Minuten und 30 Sekunden.
4 -- Das externe Programm ist nicht mehr vorhanden oder wurde nicht
gefunden.
5 -- Bei einem der Eingabeparameter der Funktion ist ein
Datenabgleichungsfehler aufgetreten.
6 bis 26 -- Die vorangegangenen Nachrichten im Jobprotokoll beachten.
Für ein externes Programm ist der angezeigte Programmeingangspunkt *N.

Die Ursache liegt wohl darin der der Benutzer keine Berechtigung hat.

Ändert man das Benutzerprofil auf *ALLOBJ funktioniert der Aufruf.

Selbstverständlich werde ich die Benutzerprofile nicht ändern.

Vielleicht hat aber jemand eine Idee.

Gruß
Michael

Robi
25-01-23, 09:22
Kannst du die Funktion nicht auslagern und das Pgm mit den nötigen Rechten ausstatten?
*Owner = ein Technischer User, der sich nicht anmelden kann, aber *allobj hat?

mk
25-01-23, 09:25
Kannst du die Funktion nicht auslagern und das Pgm mit den nötigen Rechten ausstatten?
*Owner = ein Technischer User, der sich nicht anmelden kann, aber *allobj hat?


Hi,
ja auf so etwas wird es wohl auch hinauslaufen.
Aber vielleicht kann man etwas auf der i einstellen.

Fuerchau
25-01-23, 09:28
Du kannst das Programm unter Owner-Berechtigung laufen lassen.
Eine andere Einstellung gibts da nicht.
Aber das Thema "APP-Owner" haben wir schon des öfteren angesprochen.
- Nicht anmelefähiger User (*SIGNOFF)
- Bibliotheken mit PUBLIC *EXCLUDE
- Programme grundsätzlich mit APP-Owner als Eigentümer und *OWNER-Berechtigung.
Diesbezüglich schreibt man sich seit Jahrzehnten die Finger wund;-).

Andreas_Prouza
25-01-23, 09:39
Es ist sehr zu empfehlen solche "Tätigkeiten" (wie HTTP Requests) als eigenes Service auf der IBM i laufen zu lassen.
Also ein eigener Job, der via Data Queue (am Besten in Verbindung mit einer Tabelle), die Aufgaben bekommt, verarbeitet und das Ergebnis an den Aufrufer zurück schickt (ebenfalls via Data Queue zurück).

Mit DTAQs hast du quasi Zero Delay in der Kommunikation zwischen den Jobs und der HTTP Request wird sofort ausgeführt und der Aufrufer erhält auch sofort das Ergebnis zurück.

Damit hast du dann auch keine Probleme mit Rechte, Speicher, Paralellisierung usw..

lg Andreas

BenderD
25-01-23, 13:52
... *ALLOBJ ist auch als adopted authority Waffenschein.pflichtig. Wenn man Marjorie nach der Fehlermeldung fragt, kennt sie Charles Wilt (https://www.scottklement.com/archives/ftpapi/201405/msg00020.html), der ein kleineres Hämmerchen empfiehlt.

D*B

Fuerchau
25-01-23, 15:14
Zu klären ist da eher, welche Berechtigung für die Schlüsseldatenbank denn erforderlich ist.
ALLOBJ sollte es eigentlich nicht sein.