Wenn du eine Stored Procedure oder Funktion auf Oracle aufrufen möchtest, solltest du den WSO2 Data Services Server (DSS) einsetzen. Denn DSS hat die Fähigkeit, Stored Procedures aufzurufen.
Wir können Funktionen und Stored Procedures tatsächlich mit WSO2 DSS verwenden. In diesem Blog werden wir uns mit der Installation für Stored Procedures mit Oracle und WSO2 DSS beschäftigen.
Oracle-Datenbank
Um das zu testen, sollten wir eine Oracle-Umgebung einrichten. Eine vollständige Einrichtung von Oracle entweder auf Linux oder Windows einschließlich der Einrichtung der Datenbanken und Tabellen ist jedoch ein eigenständiger kompletter Blog. Da Oracle ein Datenbanksystem der Enterprise-Klasse ist, erfordert die Installation mehr Zeit und Mühe und wird oft von Spezialisten durchgeführt. Oracle besitzt auch MySQL, das einfacher zu installieren ist. Man sollte MySQL aber nicht unterschätzen, da es sich auch für Unternehmen eignet.
Wir gehen jedenfalls davon aus, dass Oracle 11g2 installiert und verfügbar ist. Für dieses Blog nutzen wir eine Oracle-Instanz auf AWS und wir verwenden SQL Developer als grafisches Front-End zur Datenbank.
Stored Procedure
In diesem Blog verwenden wir eine Stored Procedure, die wir auf Oracle erstellen. Wir werden einen einfachen Datensatz aus der Stored Procedure in eine Tabelle der Datenbank einfügen.
Das ist natürlich ein einfaches Beispiel, aber es zeigt, wie es funktioniert.
Eine Tabelle erstellen
Ich habe eine Tabelle erstellt, die wir für diesen Blog verwenden werden. Eine einfache Tabelle, die Rang, Vor- und Nachname sowie die Zeit für ein Lauf speichert. Natürlich wäre die Zeit normalerweise ein anderer Datentyp, aber im Moment verwenden wir varchar, um schnell zu sein. Wir speichern darin eine Zeichenfolge von hh:mm:ss. .
NR | Field | Type | Length |
1 | RANK | Numeric | |
2 | FIRSTNAME | Varchar | 20 |
3 | LASTNAME | Varchar | 50 |
4 | FINISHTIME | Varchar | 20 |
Erstellen wir zunächst eine Stored Procedure.
Erstelle oder ersetze PROCEDURE INSERTFINISHER
( FINISHEDAS IN NUMBER , FINISHERFIRSTNAME IN VARCHAR2 , FINISHERLASTNAME IN VARCHAR2 , FINISHEDTIME IN VARCHAR2 ) AS BEGIN INSERT INTO YENLO_TABLE (RANK, FIRSTNAME, LASTNAME, FINISHTIME) VALUES (FINISHEDAS, FINISHERFIRSTNAME, FINISHERLASTNAME, FINISHEDTIME); END INSERTFINISHER;
Wie wir sehen können, ist Bob Beamon jetzt in der Datenbank. Das Verfahren funktioniert also.
WSO2 DSS
Um die Prozedur und Funktion aufzurufen, die wir gerade erstellt haben, müssen wir WSO2 DSS – Hauptmenü WSO2 Data Services Server verwenden. Mit diesem Produkt ist es möglich, eine Stored Procedure / Funktion auf sehr einfache Weise aufzurufen.
Lade WSO2 DSS (3.5.0) von der Produktseite herunter und installiere es auf deinem Rechner. Falls du Hilfe benötigst, lies diesen Blog zur Installation von WSO2-Produkten.
Vergiss nicht, den JDBC-Treiber von Oracle herunterzuladen. Installiere ihn anschließend im Verzeichnis [DSS=HOME]/repository/components/lib.
Starte den DSS-Server mit der Datei [DSS-HOME]/bin/wso2server.sh oder .bat. Gehe zu der Carbon-Konsole, deren URL auf der Terminal.
Mgt Console URL angezeigt wird: https://192.168.56.1:9443/carbon/
Melde dich mit den Admin-Zugangsdaten an und wähle Erstellen.
In mehreren Schritten werden wir einen Datendienst erstellen, der eine Verbindung zur Oracle-Umgebung herstellt und der zwei Abfragen und zwei Operationen hat, eine für die Prozedur und eine für die Funktion.
Schritt 1 Datendienst erstellen
Gib einen Namen und einen Namensbereich ein und klicke auf Weiter.
Wir müssen eine Datenquelle und alle Verbindungsdetails zur Oracle-Umgebung hinzufügen.
Wir vervollständigen die benötigten Informationen. Denke daran, dass es sich bei den obigen Informationen um Dummy-Informationen handelt, denn unter der oben genannten Adresse gibt es keine Oracle-Datenbank mit Benutzername und Passwort, wie im Screenshot gezeigt. Du kannst den Verbindungsaufbau testen, um zu sehen, ob die Verbindungsdetails korrekt sind. Der Benutzername und das Passwort sind sowohl in der URL als auch als separate Felder enthalten. Das ist eine Eigenart von Oracle, die dies erfordert.
Hinzufügen einer neuen Abfrage
Als nächstes werden wir die Procedure-Abfrage hinzufügen.
Wir verwenden eine einfache CALL-Anweisung mit den vier Parametern (CALL INSERTFINISHER (?,?,?,?), wobei diese in den Eingabeparametern definiert sind. Jeder dieser Parameter ist ein Parameter vom Typ ‚IN‘.
Der Rang ist zum Beispiel wie folgt definiert:
In bestimmten Online-Blogs sieht man { } um den Call herum. Diese sind nicht notwendig, es funktioniert auch ohne sie.
Operationen hinzufügen
Wir müssen Operationen hinzufügen, um die Abfragen aufzurufen, die wir gerade erstellt haben.
Wir klicken auf „Fertig stellen“, um zu speichern, was wir gerade erstellt haben.
Im Bereich Eingesetzte Dienste können wir den soeben erstellten Datendienst YENLOTEST sehen.
Versuchen Sie es
Aber jetzt müssen wir es ausprobieren, um zu sehen, ob es funktioniert. Wir reichen eine SOAP-Nachricht an das Verfahren ein. Weil wir keine Antwort definiert haben, müssen wir manuell überprüfen, ob die Datenbank jetzt zwei Datensätze hat.
Zuerst die visuelle Prüfung: Wie man sieht, hat Mickey Mouse den zweiten Platz belegt.
Das war‘ s also. Ein Call zu einer Stored Procedure, die einen Datensatz in eine Datenbank einfügt. Es liegt nun an dir, mit anderen Typen von Stored Procedures zu experimentieren, jetzt weißt du, wie man das macht.
Funktionen
Mit dem gleichen Konzept können wir auch eine Funktion im WSO2 DSS aufrufen. Zwischen beiden gibt es kaum einen Unterschied, außer der Tatsache, dass eine Funktion einen Wert zurückgibt.
Ich habe also diese Funktion in Oracle erstellt. Sie gibt die Anzahl der Datensätze in der YENLO_TABLE zurück.
Jetzt brauchen wir eine Abfrage in unserem Datenservice. Wir werden einfach die Version öffnen, die wir für das Verfahren erstellt haben, und eine Abfrage und Operation hinzufügen.
Wir erstellen eine Abfrage mit der {CALL ?:=HOWMANY()}.
Die Ausgangsvariable wird in der Eingangsabbildung definiert.
In der Ausgangsabbildung definieren wir das Feld, das den Wert zurückgeben soll.
Jetzt müssen wir auch eine Operation hinzufügen.
Wir speichern den Datendienst und gehen zur Try-It Funktionalität. Wir benutzen die FuncOps-Operation, um die Informationen aus der Datenbank abzurufen.
Sie sehen, dass wir mit der soeben erstellten Funktion zwei Datensätze in der Datenbank haben.
Einrichten von Oracle als WSO2-Datenbank
Erwäge zusätzlich die Migration von H2 auf Oracle, wenn Oracle die Datenbank deiner Wahl für dein Unternehmen ist. Da wir wissen, wie man sich mit der Oracle-Umgebung verbindet, ist das ein Kinderspiel. Für weitere Informationen findest du in diesem Blog eine allgemeine Erklärung, verwende aber natürlich die speziellen Orakel-Einstellungen.
Oracle ist in gewisser Weise genau wie die anderen vom WSO2 unterstützten Datenbanken. Um deinem Gedächtnis auf die Sprünge zu helfen, setzt WSO2 standardmäßig die integrierte H2-Datenbank zur Speicherung von z.B. Benutzer- und Registrierungsdaten ein. Eine Ausnahme bildet nur der WSO2 Identity Server, der über ein eingebettetes LDAP zur Speicherung von Benutzerdaten verfügt.
Der Wechsel von H2 zu Oracle im WSO2-DSS ist eigentlich recht einfach und erfordert vier Schritte:
- Lade den JDBC-Treiber herunter;
- Erstelle eine Datenbank, z.B. eine dss-Datenbank;
- Führe das SQL-Skript in [DSS-HOME]/dbscripts aus;
- Ändere master-datasources.xml zu [DSS-HOME]/repository/conf/datasources;
- Starte DSS
Wenn du Fragen zu diesem Blog hast, kontaktiere uns über den Kommentar-Bereich dieses Blogs. Weitere technische Informationen findest du auch in unseren WSO2-Tutorials, Webinaren oder White Papers. Benötigst du Unterstützung? Wir bieten WSO2-Produktsupport, WSO2-Entwicklungsunterstützung, WSO2-Betriebsunterstützung und WSO2-Schulungsprogramme.