Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Babette Pfeiffer Geändert vor über 8 Jahren
1
Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane Vernetzung (Jini) zInhalt heute yDynamische Datenbankanfragen (JDBC) yMehrschichten-Architekturen zLernziele: yGrundlagen von JDBC zum Datenbankzugriff yMotivation von Mehrschichten-Architekturen Ralf Möller, Universität Hamburg, Fachbereich Informatik
2
Dienste in einer Umgebung Internet gateway PDA service Music service Discovery Alarm Camera Guests devices Laptop TV/PC Hotel wireless network
3
Jini: Registrierung
4
Jini: Lookup und Leasing
5
Dienste: Beispiel Baseball zpublic class Ball extends UnicastRemoteObject implements RemoteBall ServiceIDListener { ypublic Ball throws RemoteException { super(); } ypublic void serviceIdNotify(ServiceID id) { System.out.println("ServiceId is " + id); } ypublic hit() { System.out.println("Ball has been hit.") } z}
6
Das Anmelden von Diensten (2) zpublic class BallStarter { ypublic static void main(String[] args) { try { xSystem.setSecurityManager(new RMISecurityManager ()); xRemoteBall ball = new Ball(); xLeaseRenewalManager renewal = new LeaseRenewalManager(); xEntry[] attributes = new Entry[]{ new Name("Jini enabled ball") }; xJoinManager join = new JoinManager(ball, attributes, (Ball) ball, renewal); xSystem.out.println("Ball started and registered at Lookup-Server"); y} catch (Exception e) { e.printStackTrace(); } y} z}
7
Lookup von Diensten: Suche durch Muster zKlasse ServiceTemplate und entspr. Konstruktor zÜbergabe an Konstruktor entweder yeines ServiceID-Objekts yoder einer Service-Beschreibung: xeiner Menge von Klassen xoder einer Menge von Attribut-Wert-Paaren yBeispiel mit Service-Beschreibung als Klasse: xClass[] classes = new Class[] { RemoteBall.class }; xServiceTemplate template = new ServiceTemplate(null, classes, null);
8
Zugriff auf den Dienstvermittler zRepräsentation des Dienstvermittlers als Objekt zDienstvermittler enthält Registratur zSuchmuster wird an Registratur übergeben zBeispiel: yLookupLocator l = new LookupLocator("jini://sun"); yServiceRegistrar r = l.getRegistrar(); yRemoteBall b = (RemoteBall) r.lookup(template);
9
Aufruf eines Dienstes (1) zimport java.rmi.* zimport net.jini.core.discovery.*; zimport net.jini.core.lookup.*; zpublic class Bat { ypublic void play(RemoteBall ball) { try { ball.hit(); System.out.println("I hit the ball"); } catch (RemoteException e) { System.out.println(e) } }
10
Aufruf eines Dienstes (2) ypublic static void main(String[] args) { xBat bat = new Bat(); xtry { System.setSecurityManager(new RMI SecurityManager ()); x LookupLocator locator = new LookupLocator("jini://sun"); x ServiceRegistrar registrar = locator.getRegistrar(); x Class[] classes = new Class { RemoteBall.class }; x ServiceTemplate template = new ServiceTemplate(null, classes, null); x RemoteBall b = (RemoteBall) registrar.lookup(template); x bat.play(b); x} catch (Exception e) { x e.printStackTrace(); x} y}}
11
Leasing zpublic interface Lease { ylong getExpiration(); yvoid renew (long duration) throws LeaseDeniedException, UnknownLeaseException, RemoteException; yvoid cancel() throws UnknownLeaseException, RemoteException; z} zVorher verwendete Klasse LeaseRenewalManager erneuert Leasing-Verträge automatisch
12
Datenbanken in verteilten Systemen zDatenbanken zur Kopplung von verteilten Systemen zWeitverbreitet: Relationale Datenbanken zJDBC: Anbindung von Java an Relationale DBen yJava DataBase Connectivity yEntwicklung aus ODBC (Open DataBase Connectivity) zJDBC als Protokoll konzipiert zBequemer für Nutzer durch API yFester Bestandteil der Sprache Java
13
Aufbau und Struktur von JDBC : Treibermanager Datenbanktreiber ADatenbanktreiber B JDBC Treibermanager Java Anwendung
14
Aufbau und Struktur von JDBC: Treiberarten Datenbank-API JDBC-Treiber-API JDBC/ODBC Bridge-Treiber ODBC-Treiber Spezifischer Treiber Native Code Universeller Treiber Native Code Direkter Treiber
15
Registrierung eines JBDC-Treibers ztry { Class.forName("org.gjt.mm.mysql.Driver") } catch (ClassNotFoundException cnfe) { System.out.println("Cannot load driver"); } zAuch: oracle.jdbc.driver.OracleDriver
16
Verbindungsaufbau zu Datenbank DriverManager Connection Statement ResultSet
17
Verbindungen zConnection con; ztry { con = DriverManager.getConnection( "jdbc:odbc://vodka.fh-wedel.de/Db", username, password); } catch (Exception e) { System.out.println(e); }... zcon.close();
18
Anfragen und Antworten zStatement stmt = con.createStatement(); zString query = "SELECT * FROM Table"; zResultSet results = stmt.executeQuery(query); zBoolean bool = stmt.executeUpdate( "INSERT INTO Table VALUES ('a', 'b', 'c')"); zwhile (results.next()) { yString attr1=results.getString(1); yString attr2=results.getString(2); ySystem.out.println(attr1 + attr2); z}
19
Das Client-Server-Modell
20
zClient-Software muß immer wieder neu entwickelt werden zSpezielle Tools für spezielle Geräte erforderlich zSoftware muß für jedes Gerät installiert und konfiguriert werden
21
Das Client-Server-Modell zClients greifen direkt auf Unternehmensressourcen zu zSicherheitsprobleme zÄnderungen der Technologie kann Clients ausschließen zKapazitäts- und Verfügbar-keitserhöhung schwierig
22
Enterprise Services
23
zNeue Schicht zwischen Kunden und Ressourcen zSchnittstelle auf der Service-Ebene zAnsatzpunkt für Sicherheit, Lastverteilung und Fehlererholung
24
Enterprise Services
25
Komponentenorientierte Systemkonstruktion
27
zKomponenten vs. Objekte zInstanzenbasierte Systemkonstruktion zEreignisverwaltung zSuche und Einbettung von Komponenten zSpezifikation der Leistungen einer Komponente zMeta-Protokoll yAttributanzeige yInitialisierung
28
Database Integration using JavaServer Pages (JSP) Chád (shod) Darby J9 CONSULTING darby @ j-nine.com Nachfolgende Folien über JSP übernommen aus:
29
Java Server Pages: RainForest - Video Store
30
Rain Forest - Video Store
31
What are Java Server Pages (JSP)? zA Java Server Page is yAn HTML page with embedded Java code Files have a.jsp extension yLoosely similar to server-side includes zJSP can be used to yReplace traditional CGI processing yAccess enterprise services (RMI, CORBA, JDBC) yCreate an HTML interface for web-based applications
32
Simple JSP File Welcome to the Weather Site Today’s date is simple.jsp The Java code is placed inside of a “scriplet tag”
33
How is the JSP file Processed? Web Browser Client Web 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 zClient sends HttpRequest using URL of JSP yhttp://localhost:8080/simple.jsp zJSP returns a plain HTML page.
34
Output of simple.jsp Welcome to the Weather Site Today's date is Mon Mar 22 01:22:46 EST 1999 Output of simple.jsp Result of
35
JSP Design Goals zEmphasize Components yReusable code placed in components or JSP Beans yAllows separation of web page design from component development Web Page Designer HTML Expert Component Developer Java Expert
36
JSP Design Goals (cont) zProvide a gateway to enterprise services JSP file DB Socket Server RMI CORBA EJB JDBC Sockets Web Browser Client Web Server
37
JSP Design Goals (cont) zMake dynamic web sites easy to build yJSP file is simply an HTML file yEmbedded code can call reusable components for dynamic content yA web page designer can create a dynamic page with very little Java programming knowledge.
38
JSP…A Radical New Breakthrough? zNot really yResembles Microsoft’s Active Server Pages (ASP) zSo why JSP? yWould you rather program in VBScript or Java? yGain full features of Java (networking, JDBC, etc) ySupported by many servers
39
Enterprise Java Beans (EJB) Teile von einigen der nachfolgenden Folien wurden übernommen aus: VL Anwendungssysteme Gerald Weber
40
Und beim nächsten Mal... z... gibt's mehr über: zServlets zMultitier-Architekturen (J2EE) yKomponentenorientierte Softwarekonstruktion (Beans) yEnterprise Java Beans
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.