Einleitung WebService

Werbung
Betrifft:
PL/SQL Web-Services und der JDeveloper – Teil 4
Autor:
Christine Hansen, Fabrizio Fresco, Patrick Malcherek
Art der Info:
Technische Background Info (Oktober 2002)
Quellen:
http://otn.oracle.com
Einleitung
Nachdem in den ersten beiden Teilen der Web-Service Serie die Theorie vermittelt wurde, folgte in
Teil drei die Erstellung eines Services mittels Tomcat und Java.
In diesem Teil möchten wir zeigen, welche Vorteile der JDeveloper dem Entwickler bei der
Erstellung eines Web-Services bietet.
Es sollte die neue Version des JDeveloper 9.0.3 installiert sein. In dem folgenden Beispiel geht es
darum ein PL/SQL-Package zu erstellen, aus dem der JDeveloper dann Java Klassen generiert, diese
zu einem Service zusammenstellt und im OC4J implementiert.
WebService
PL/SQL
Package
mit
WSDL - File
JDeveloper
generiert
JDeveloper
platziert den Service
Funktionen
Java
Klassen
Procedures
Methoden
OC4J
1. Vorbereitung
Für das nachfolgende Beispiel benötigen Sie folgende Software:
Java SDK 1.4
Oracle 9i Release 2
JDeveloper 9.0.3
http://java.sun.com
http://otn.oracle.com
http://otn.oracle.com
Das Beispiel zeigt wie ein PL/SQL Package als Web-Service veröffentlicht wird. Dazu ist es
notwendig, dass die neue Version des JDeveloper installiert ist, sowie der dazugehörige OC4J.
Bitte <JDev_Home>\jdev\bin\jdevw.exe und <Dev_Home>\jdev\bin\start_oc4j.bat starten.
2. Einrichte der Verbindungen
Wir werden mit der Verbindung für den Applikationserver anfangen. Hierzu
komplette Oracle9iAS installiert werden. Es genügt den mitgelieferten OC4J zu
wählen bei Connections->Application-server „New Connection“ im JDeveloper
Wizard. Bei Schritt 1/4 wird der Name vergeben sowie der dazugehörige
(Abbildung 2.1). Tragen Sie dann das Passwort ein (Schritt 2/4).
muss nicht der
verwenden. Wir
und folgen dem
Verbindungstyp
Abbildung 2.1
Abbildung 2.2
Tragen Sie als URL die Host-IP ein. In diesem Fall 127.0.0.1 (Abbildung 2.2). Im „Schritt 4/4“
haben Sie die Möglichkeit die Verbindung zu testen. Jetzt fehlt noch die Anbindung an die
Datenbank als User Scott (Abbildung 2.3- 2.6).
Abbildung 2.3
Abbildung 2.4
Abbildung 2.5
Abbildung 2.6
3. Erstellen des Packages
Zuerst wird ein neuer Workspace und ein neues Projekt mit dem Namen PLSQL angelegt.
Nachfolgend, durch einen Klick mit rechts auf das Projekt, NEW ausgewählt. Dort erstellen wir
unter Database Tier->Database File einen SQL-File und nennen ihn z.B. create.sql. Er soll den
Code des zu erstellenden PL/SQL-Packages enthalten. Fügen Sie der Datei dann bitte folgenden
Code hinzu:
DROP package p_emp_ws;
DROP table emp_ws;
DROP type t_employee;
/* create the necessary types and tables */
CREATE type t_employee AS object (empno int,
ename varchar(30),
job varchar2(9),
sal int,
deptno int);
/
CREATE table emp_ws ( empno int,
employee t_employee);
/* create the package header */
CREATE package p_emp_ws as
/* add a new employee */
PROCEDURE addemp (employee IN t_employee);
/* get employee */
FUNCTION getemp (i_empno IN int) RETURN t_employee;
/* remove an employee */
PROCEDURE removeemp (i_empno IN int);
END p_emp_ws;
/
CREATE package body p_emp_ws AS
/* add a new employee */
PROCEDURE addemp (employee IN t_employee) IS
BEGIN
INSERT INTO emp_ws VALUES (employee.empno, employee);
COMMIT;
END addemp;
/* get employee */
FUNCTION getemp (i_empno IN int) RETURN t_employee IS
out t_employee;
BEGIN
SELECT employee INTO out
FROM emp_ws WHERE empno = i_empno;
RETURN out;
END getemp;
/* remove employee */
PROCEDURE removeemp (i_empno IN int) IS
BEGIN
DELETE FROM emp_ws WHERE empno = i_empno;
COMMIT;
END removeemp;
END p_emp_ws;
/
Um das Package p_emp_ws mit dem JDeveloper zu erstellen, muss noch im Menü Tools>Preferences der Datenbank Anbindung, das ausführende Programm, die sqlplus.exe, mitgeteilt
werden (Abbildung 3.1). Danach ist per Rechtsklick auf die create.sql, ein Ausführen der Datei
möglich. Dort erscheint der Menüpunkt Run in SQL*PLUS, bei dem dann die gewünschte
Datenbank-Anbindung zu wählen ist (Abbildung 3.2). Natürlich kann man die create.sql auch auf
der Kommandoebene ausführen.
Abbildung 3.1
Abbildung 3.2
4. Die Java-Klassen
Alle zum Web-Service notwendigen Klassen generiert uns der JDeveloper. Bitte machen Sie einen
Rechtsklick auf PLSQL.jpr und wählen dort New aus. Bei General->Web Services ist der, in
unserem Fall, gewünschte PL/SQL Web Service zu markieren und danach mit OK zu bestätigen
(Abbildung 4.1).
Abbildung 4.1
Abbildung 4.2
Es folgt ein Wizard. Beim ersten Schritt ist die Datenbank Anbindung auszuwählen, sowie das
zuvor erstellte Package p_emp_ws (Abbildung 4.2). Schritt 2/3 zeigt die dort zur Verfügung
stehenden Funktionen (Abbildung 4.3).
Abbildung 4.3
Abbildung 4.4
Erkennbar ist der Web-Services Endpunkt, welcher später noch gebraucht wird:
http://127.0.0.1:8888/PLSQL-PLSQL-context-root/scott.P_emp_wsWebService (Abbildung 4.4)
Abbildung 4.5
Abbildung 4.6
Entstanden sind hier mehrere Java Dateien in die der JDeveloper unsere Funktionen und
Prozeduren als Methoden implementiert hat. Wichtig ist nach diesem Schritt, dass ein Rebuild des
Projekts PLSQL.jpr durchgeführt wird (Abbildung 4.5).
Wenn man sich die entstanden Dateien anschaut, entdeckt man alle notwendigen Files, wie z.B.
web.xml und WSDL zum platzieren des Services (Abbildung 4.6). In den Java Klassen finden wir
auch unsere Methoden des Services wieder.
5. Plazieren des Services und erstellen eines Clients
Das Platzieren des Services erfolgt mittels eines Rechtsklicks auf den WebServices.deploy File.
Darin eingeschlossen sind sowohl das SOAP Servlet als auch die Java Klassen des Packages. Dort
ist der OC4J auszuwählen (Abbildung 5.1).
Abbildung 5.1
Abbildung 5.2
Durch die Eingabe des Endpunktes im Browser, kann die Platzierung des Services überprüft werden
(Abbildung 5.2). Die hier ersichtlichen Methoden können angewählt werden und liefern als
Rückgabewert eine SOAP Message. Zu beachten ist, dass momentan noch keine Daten in unserer
Tabelle zur Verfügung stehen und somit die SOAP Message die entsprechende Fehlermeldung
enthält.
Was noch fehlt ist also ein entsprechender Client zum abrufen des Web-Services. Nur mit ihm ist
es möglich Daten in den Objekt-Typ einzufügen und diese wieder abzurufen. Auch hier unterstützt
uns der JDeveloper. Er erstellt uns das Gerüst des Clients, in dem dann nur noch die entsprechende
Main-Methode ergänzt werden muss.
Abbildung 5.3
Abbildung 5.4
Abbildung 5.5
Mit NEW->WebServices->Web_Service_Stub/Skeleton unter PLSQL.jpr wird der Wizard gestartet
(Abbildung 5.3). Wählen Sie in der drop down List-Box den WSDL Pfad aus. Weiter ist ein Haken
zu setzen unter Generate_Main_Method_into_Stub (Abbildung 5.4). Im letzten Schritt sind
nochmals die Methoden des Services zu erkennen (Abbildung 5.5).
Öffnen Sie die Datei P_emp_wsStub.java und gehen, in der Main Methode des Clients, an die
Stelle: // Add your own code here
Dort ist folgendes einzutragen:
// Create a new Employee
TEmployee emp = new TEmployee();
emp.setEmpno(new Integer(7839));
emp.setEname("KING");
emp.setJob("President");
emp.setSal(new Integer(1500));
emp.setDeptno(new Integer(10));
// Delete the employee (if already added it)
stub.removeemp(new Integer(7839));
// Add the employee over SOAP
stub.addemp(emp);
// Retrieve the employee over SOAP
System.out.println(stub.getemp(new Integer(7839)).getEname());
// Remove the employee (so this code snippet can be re-run
// multiple times)
// stub.removeemp(new Integer(7839));
Danach ist wieder ein Rebuild des Projektes durchzuführen. Der Service ist nun platziert und der
Client dafür erstellt. Somit kann der Web-Service getestet werden. Nach einem Rechtsklick auf die
P_emp_wsStub.java kann diese Datei dann mit „Run P_emp_wsStub.java“ ausgeführt werden
(Abbildung 5.6 – 5.7).
Abbildung 5.6
Abbildung 5.7
Als Ergebnis bekommt man den Wert „KING“ (Abbildung 5.7).
Die entsprechenden SOAP Messages können mit dem Tool „TCP-Packet Monitor“ sichtbar gemacht
werden (Abbildung 5.8). Er kann in der Version 9.0.3 direkt im Menü Tools->TCP Packet Monitor
ausgewählt werden.
Abbildung 5.8
Jetzt ist es auch über die zuvor aufgerufene Seite des Endpunktes möglich Daten abzurufen
(Abbildung 5.9.1-5.9.2).
Abbildung 5.9.1
Abbildung 5.9.2
Nach der Bestätigung durch Invoke erhält man als Ergebnis einen XML-File, welcher die SOAP
Message enthält (Abbildung 5.10). Wurde z.B. ein falscher Wert eingetragen, so bekommt man als
Rückgabe die entsprechende SOAP Message mit Fehlermeldung.
Abbildung 5.10
Fazit
Der JDeveloper bietet gute Features zum erstellen und platzieren eines Web-Services. Er unterstützt
nicht nur den Java-Entwickler, sondern auch dem PL/SQL-Entwickler ist er sehr hilfreich.
Grundkenntnisse in Java reichen hierzu aus.
Oracle hat sich bei der Integration der neuen Funktionen zur Erstellung eines Web-Services einiges
einfallen lassen. Dies ist nicht nur komfortabler geworden sondern bietet jetzt auch die Option aus
einem PL/SQL-Package Java-Klassen zu generieren. Daran ist zu erkennen das Web-Services in
Zukunft immer mehr eine Rolle spielen werden. Wir hoffen, dass die Artikel Serie Ihnen einen
guten Einblick in diese neue Technologie gegeben hat.
Christine Hansen, Fabrizio Fresco und Patrick Malcherek
Trivadis GmbH
Cityforum im Eichsfeld
Ferdinand-Stuttmann-Str. 13
D-65428 Rüsselsheim
Internet: http://www.trivadis.com
Mail:
Tel :
Fax:
[email protected]
[email protected]
[email protected]
+49 6142 210 18 0
+49 6142 210 18 29
Herunterladen