realisierung verteilter anwendungen: teil 5 zbeim vorigen mal: yobjektmigration (voyager) yspontane...
TRANSCRIPT
![Page 1: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/1.jpg)
Realisierung verteilter Anwendungen: Teil 5
Beim vorigen Mal: Objektmigration (Voyager) Spontane Vernetzung (Jini)
Inhalt heute Dynamische Datenbankanfragen (JDBC) Mehrschichten-Architekturen
Lernziele: Grundlagen von JDBC zum Datenbankzugriff Motivation von Mehrschichten-Architekturen
Ralf Möller, Universität Hamburg, Fachbereich Informatik
![Page 2: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/2.jpg)
Dienste in einer Umgebung
Internet
gateway
PDA
service
Music service
serviceDiscovery
Alarm
Camera
Guestsdevices
LaptopTV/PC
Hotel wirelessnetwork
![Page 3: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/3.jpg)
Jini: Registrierung
![Page 4: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/4.jpg)
Jini: Lookup und Leasing
![Page 5: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/5.jpg)
Dienste: Beispiel Baseball
public class Ball extends UnicastRemoteObject implements RemoteBall ServiceIDListener { public Ball throws RemoteException { super(); } public void serviceIdNotify(ServiceID id) {
System.out.println("ServiceId is " + id); }
public hit() { System.out.println("Ball has been hit.")}
}
![Page 6: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/6.jpg)
Das Anmelden von Diensten (2) public class BallStarter {
public static void main(String[] args) {try {
System.setSecurityManager(new RMISecurityManager ()); RemoteBall ball = new Ball(); LeaseRenewalManager renewal = new LeaseRenewalManager(); Entry[] attributes = new Entry[]{ new Name("Jini enabled ball") }; JoinManager join = new JoinManager(ball, attributes, (Ball) ball, renewal); System.out.println("Ball started and registered at Lookup-Server");
} catch (Exception e) { e.printStackTrace(); } }
}
![Page 7: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/7.jpg)
Lookup von Diensten: Suche durch Muster
Klasse ServiceTemplate und entspr. Konstruktor
Übergabe an Konstruktor entweder eines ServiceID-Objekts oder einer Service-Beschreibung:
einer Menge von Klassen oder einer Menge von Attribut-Wert-Paaren
Beispiel mit Service-Beschreibung als Klasse: Class[] classes = new Class[] { RemoteBall.class };ServiceTemplate template =
new ServiceTemplate(null, classes, null);
![Page 8: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/8.jpg)
Zugriff auf den Dienstvermittler
Repräsentation des Dienstvermittlers als Objekt
Dienstvermittler enthält RegistraturSuchmuster wird an Registratur übergebenBeispiel:
LookupLocator l = new LookupLocator("jini://sun");
ServiceRegistrar r = l.getRegistrar(); RemoteBall b = (RemoteBall) r.lookup(template);
![Page 9: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/9.jpg)
Aufruf eines Dienstes (1)
import java.rmi.*import net.jini.core.discovery.*;import net.jini.core.lookup.*;public class Bat {
public void play(RemoteBall ball) { try { ball.hit(); System.out.println("I hit the ball"); } catch (RemoteException e) { System.out.println(e) }}
![Page 10: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/10.jpg)
Aufruf eines Dienstes (2)
public static void main(String[] args) { Bat bat = new Bat(); try { System.setSecurityManager(new RMI SecurityManager ()); LookupLocator locator = new LookupLocator("jini://sun"); ServiceRegistrar registrar = locator.getRegistrar(); Class[] classes = new Class { RemoteBall.class }; ServiceTemplate template = new ServiceTemplate(null,
classes, null); RemoteBall b = (RemoteBall) registrar.lookup(template); bat.play(b); } catch (Exception e) { e.printStackTrace(); }
}}
![Page 11: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/11.jpg)
Leasing
public interface Lease { long getExpiration(); void renew (long duration) throws LeaseDeniedException,
UnknownLeaseException, RemoteException;
void cancel() throws UnknownLeaseException, RemoteException;
}Vorher verwendete Klasse LeaseRenewalManager
erneuert Leasing-Verträge automatisch
![Page 12: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/12.jpg)
Datenbanken in verteilten Systemen
Datenbanken zur Kopplung von verteilten Systemen
Weitverbreitet: Relationale DatenbankenJDBC: Anbindung von Java an Relationale DBen
Java DataBase Connectivity Entwicklung aus ODBC (Open DataBase Connectivity)
JDBC als Protokoll konzipiertBequemer für Nutzer durch API
Fester Bestandteil der Sprache Java
![Page 13: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/13.jpg)
Aufbau und Struktur von JDBC : Treibermanager
Datenbanktreiber A Datenbanktreiber B
JDBC Treibermanager
Java Anwendung
![Page 14: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/14.jpg)
Aufbau und Struktur von JDBC: Treiberarten
Datenbank-API
JDBC-Treiber-API
JDBC/ODBCBridge-Treiber
ODBC-Treiber
SpezifischerTreiber
Native Code
UniversellerTreiber
Native Code
DirekterTreiber
![Page 15: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/15.jpg)
Registrierung eines JBDC-Treibers
try { Class.forName("org.gjt.mm.mysql.Driver")} catch (ClassNotFoundException cnfe) { System.out.println("Cannot load driver");}
Auch: oracle.jdbc.driver.OracleDriver
![Page 16: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/16.jpg)
Verbindungsaufbau zu Datenbank
DriverManager
Connection Connection Connection
Statement Statement Statement
ResultSet ResultSet
![Page 17: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/17.jpg)
Verbindungen
Connection con;try {
con = DriverManager.getConnection( "jdbc:odbc://vodka.fh-wedel.de/Db", username, password);} catch (Exception e) { System.out.println(e);} ...
con.close();
![Page 18: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/18.jpg)
Anfragen und Antworten Statement stmt = con.createStatement(); String query = "SELECT * FROM Table"; ResultSet results = stmt.executeQuery(query); Boolean bool = stmt.executeUpdate(
"INSERT INTO Table VALUES ('a', 'b', 'c')"); while (results.next()) {
String attr1=results.getString(1); String attr2=results.getString(2); System.out.println(attr1 + attr2);
}
![Page 19: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/19.jpg)
Das Client-Server-Modell
![Page 20: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/20.jpg)
Das Client-Server-Modell
Client-Software muß immer wieder neu entwickelt werden
Spezielle Tools für spezielle Geräte erforderlich
Software muß für jedes Gerät installiert und konfiguriert werden
![Page 21: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/21.jpg)
Das Client-Server-Modell
Clients greifen direkt auf Unternehmensressourcen zu
Sicherheitsprobleme Änderungen der Technologie kann
Clients ausschließen Kapazitäts- und Verfügbar-
keitserhöhung schwierig
![Page 22: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/22.jpg)
Enterprise Services
![Page 23: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/23.jpg)
Enterprise Services
Neue Schicht zwischen Kunden und Ressourcen Schnittstelle auf der Service-Ebene Ansatzpunkt für Sicherheit, Lastverteilung und
Fehlererholung
![Page 24: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/24.jpg)
Enterprise Services
![Page 25: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/25.jpg)
Komponentenorientierte Systemkonstruktion
![Page 26: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/26.jpg)
Komponentenorientierte Systemkonstruktion
![Page 27: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/27.jpg)
Komponentenorientierte Systemkonstruktion
Komponenten vs. ObjekteInstanzenbasierte SystemkonstruktionEreignisverwaltungSuche und Einbettung von KomponentenSpezifikation der Leistungen einer
KomponenteMeta-Protokoll
Attributanzeige Initialisierung
![Page 28: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/28.jpg)
Database Integration usingJavaServer Pages (JSP)
Chád (shod) DarbyJ9 CONSULTINGdarby @ j-nine.com
Nachfolgende Folien über JSP übernommen aus:
![Page 29: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/29.jpg)
Java Server Pages: RainForest - Video Store
![Page 30: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/30.jpg)
Rain Forest - Video Store
![Page 31: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/31.jpg)
What are Java Server Pages (JSP)?
A Java Server Page is An HTML page with embedded Java code Files have a .jsp extension Loosely similar to server-side includes
JSP can be used to Replace traditional CGI processing Access enterprise services (RMI, CORBA, JDBC) Create an HTML interface for web-based
applications
![Page 32: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/32.jpg)
Simple JSP File
<html><body>
<h2>Welcome to the Weather Site</h2> <hr>
Today’s date is <%= new java.util.Date() %>
</body></html>
simple.jsp
The Java code is placed inside of a “scriplet tag” <% … %>
![Page 33: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/33.jpg)
How is the JSP file Processed?
Web Browser
ClientWeb Server
JSP file
1. File is loaded
2. Compiled to servlet (only once)
3. Contents executed
4. Results included in HTML file
HttpRequest
HTML Page
Client sends HttpRequest using URL of JSP http://localhost:8080/simple.jsp
JSP returns a plain HTML page.
![Page 34: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/34.jpg)
Output of simple.jsp
<html><body>
<h2>Welcome to the Weather Site</h2> <hr>
Today's date is Mon Mar 22 01:22:46 EST 1999
</body></html>
Output of simple.jsp
Result of <%= new java.util.Date() %>
![Page 35: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/35.jpg)
JSP Design Goals
Emphasize Components Reusable code placed in components or JSP Beans Allows separation of web page design from
component development
Web Page Designer
HTML Expert
Component Developer
Java Expert
![Page 36: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/36.jpg)
JSP Design Goals (cont)
Provide a gateway to enterprise services
JSP file
DB
Socket Server
RMICORBA
EJB
JDBC
Sockets
Web Browser
ClientWeb Server
![Page 37: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/37.jpg)
JSP Design Goals (cont)
Make dynamic web sites easy to build JSP file is simply an HTML file Embedded code can call reusable components for
dynamic content A web page designer can create a dynamic page
with very little Java programming knowledge.
![Page 38: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/38.jpg)
JSP…A Radical New Breakthrough?
Not really Resembles Microsoft’s Active Server Pages (ASP)
So why JSP? Would you rather program in VBScript or Java? Gain full features of Java (networking, JDBC, etc) Supported by many servers
![Page 39: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/39.jpg)
Enterprise Java Beans (EJB)
Teile von einigen der nachfolgenden Folien wurden übernommen aus:
VL Anwendungssysteme Gerald Weber
![Page 40: Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen](https://reader035.vdokument.com/reader035/viewer/2022062522/570491cc1a28ab14218dea8a/html5/thumbnails/40.jpg)
Und beim nächsten Mal ...
... gibt's mehr über:ServletsMultitier-Architekturen (J2EE)
Komponentenorientierte Softwarekonstruktion (Beans)
Enterprise Java Beans