Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane...

Post on 06-Apr-2016

215 views 0 download

Transcript of Realisierung verteilter Anwendungen: Teil 5 zBeim vorigen Mal: yObjektmigration (Voyager) ySpontane...

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

Dienste in einer Umgebung

Internet

gateway

PDA

service

Music service

serviceDiscovery

Alarm

Camera

Guestsdevices

LaptopTV/PC

Hotel wirelessnetwork

Jini: Registrierung

Jini: Lookup und Leasing

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.")}

}

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(); } }

}

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);

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);

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) }}

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(); }

}}

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

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

Aufbau und Struktur von JDBC : Treibermanager

Datenbanktreiber A Datenbanktreiber B

JDBC Treibermanager

Java Anwendung

Aufbau und Struktur von JDBC: Treiberarten

Datenbank-API

JDBC-Treiber-API

JDBC/ODBCBridge-Treiber

ODBC-Treiber

SpezifischerTreiber

Native Code

UniversellerTreiber

Native Code

DirekterTreiber

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

Verbindungsaufbau zu Datenbank

DriverManager

Connection Connection Connection

Statement Statement Statement

ResultSet ResultSet

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();

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);

}

Das Client-Server-Modell

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

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

Enterprise Services

Enterprise Services

Neue Schicht zwischen Kunden und Ressourcen Schnittstelle auf der Service-Ebene Ansatzpunkt für Sicherheit, Lastverteilung und

Fehlererholung

Enterprise Services

Komponentenorientierte Systemkonstruktion

Komponentenorientierte Systemkonstruktion

Komponentenorientierte Systemkonstruktion

Komponenten vs. ObjekteInstanzenbasierte SystemkonstruktionEreignisverwaltungSuche und Einbettung von KomponentenSpezifikation der Leistungen einer

KomponenteMeta-Protokoll

Attributanzeige Initialisierung

Database Integration usingJavaServer Pages (JSP)

Chád (shod) DarbyJ9 CONSULTINGdarby @ j-nine.com

Nachfolgende Folien über JSP übernommen aus:

Java Server Pages: RainForest - Video Store

Rain Forest - Video Store

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

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” <% … %>

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.

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() %>

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

JSP Design Goals (cont)

Provide a gateway to enterprise services

JSP file

DB

Socket Server

RMICORBA

EJB

JDBC

Sockets

Web Browser

ClientWeb Server

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.

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

Enterprise Java Beans (EJB)

Teile von einigen der nachfolgenden Folien wurden übernommen aus:

VL Anwendungssysteme Gerald Weber

Und beim nächsten Mal ...

... gibt's mehr über:ServletsMultitier-Architekturen (J2EE)

Komponentenorientierte Softwarekonstruktion (Beans)

Enterprise Java Beans