Vorlesung Applikationsserver

Werbung
Kap. 6 Applikationsserver
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 1
Kap. 6
Applikationsserver – Übersicht
Applikationsserver: Durchgängige Infrastruktur zur
Entwicklung von Anwendungssystemen, die alle Schichten
umfasst (Client bis DBS)
‰
6.1 Übersicht über die J2EE-Architektur
•
•
Anforderungen moderner mehrschichtiger Anwendungen
J2EE-Architektur
– EJB-Container
– Web-Container
– Application Client Container
– Applet Container
‰
6.2 J2EE Web-Tier
– Java Servlets
– JSP – Java Server Pages
‰
6.3 Workshop: IBM WebSphere
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 2
6.1 Übersicht über die J2EE-Architektur
Anforderungen moderner Anwendungen
‰
‰
‰
Datenverwaltung
•
•
•
Unterstützung relationale Datenbanksysteme
Unterstützung host-basierte Datenbanksysteme
Geeigente abstrakte Schnittstelle zur Anwendungsseite
Anwendungslogik
•
•
•
•
•
•
WORA: Write-Once-Run-Anywhere
Komponentenorientierung
Wiederverwendbarkeit
Deployment mit deklarativer Änderung von Eigenschaften
Verteilungstransparenz und Ortstransparenz
Verteilte Abläufe mit Transaktionseigenschaften
Präsentation
•
•
•
Plattformunabhängigkeit: Unterstützung von Web-Standards
Unterstützung verschiedener Endgeräte
Ansprechende Darstellung mit dynamisch generierten Inhalten
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 3
Ebenen moderner Anwendungssysteme
Web-Tier
Web Server Farm
Business Tier
Anwendungsserver
Datenbanksysteme
Hostsysteme
Legacy
Unterstützung von Web-Anwendungen
Skalierbarkeit auf der Middleware-Ebene
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 4
Moderne Anwendungssysteme
Quelle: C. Mohan – Application Server Tutorial VLDB 2002
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 5
Problematik dynamisch generierter Inhalte
‰
Dynamisch generierte Inhalte sind bei herkömmlichen Anwendungen
kein Problem
•
•
•
‰
Web-Anwendungen
•
•
•
‰
Eigens erstellte Client-Anwendung
Aber: zusätzliche Installation, nicht plattformunabhängig
Aber: WORA funktioniert hier offensichtlich auf der Präsentationsebene noch
nicht!!!
Anforderungen:
– Mitführen des Nutzerkontextes (Session)
– Interaktion mit dynamisch erstellten Inhalten
Problematik:
– HTTP: nicht zustandsbehaftet, kein Kontext
– statische HTML-Seiten
– unterschiedliche Endgeräte
Lösungen bislang eher umständlich und aufwändig: Cookies, CGI-Skripte, ...
Neue Infrastruktur: Applikationsserver – Ausdehnen der WORAPhilosophie auch auf die (server-seitige) Präsentationsebene (Web-Tier)
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 6
J2EE-Architektur
‰
‰
‰
‰
J2EE - Aktuelle Spezifikation
Java™ 2 Platform Enterprise Edition Specification, v1.4 (Public
Draft 11.4.2003)
http://java.sun.com/j2ee/j2ee-1_4-pfd3-spec.pdf
Standardisierung durch Sun im Java Community Process
(Mitwirkung u.a. BEA, IBM, IONA, Oracle, SAP)
Zielsetzung
•
•
•
•
Standardisierung der Entwurfskomponenten von mehrstufigen
Anwendungssystemen
Standardisierung der Laufzeitumgebungen von mehrstufigen
Anwendungssystemen
Durchgängige Unterstützung von Web-Anwendungen
Einfache Programmierung (Produktivitätserhöhung in der SoftwreEntwicklung)
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 7
Komponenten der J2EE-Architektur
Präsentation
(client-seitig)
Präsentation
(server-seitig)
Pure HTML
Java Server
Page
EJB
Java Server
Page
EJB
Java
Servlet
EJB
Java Applet
Browser
Java
Application
Desktop
J2EE Client
Beliebiges
Endgerät
Anwendungslogik
(server-seitig)
Java
Servlet
Web Container
Unternehmensweite IS
EJB
EJB
Container
J2EE Plattform
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 8
Komponenten der J2EE-Architektur
‰
‰
EJB-Container: Laufzeitumgebung für EJB-Komponenten (s. Kapitel 5)
Web-Container:
•
•
•
•
‰
Application Client Container
•
•
‰
‰
WORA-Philosophie für die Präsentationsebene
Dynamische Erstellung von (HTML-)Dokumente für Präsentationsebene
Laufzeitumgebung für
– Java Server Pages (JSPs)
– Java Servlets
Weiter unten in diesem Kapitel ausführlicher besprochen
Abgespeckte J2EE-Laufzeitumgebung (Container) für eine Java ClientAnwendung
Nur Security und Deployment (JNDI, JDBC, RMI-IIOP, JMS, s.u.) aus der
üblichen Container-Funktionalität
Applet Container: wie Appl. Client Container, aber Applet
Programmiermodell
Fokus bei uns im folgenden auf Web-Tier (EJB-Container s. Kapitel 5)
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 9
Verwandte Standards und Protokolle (1)
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 10
Verwandte Standards und Protokolle (2)
‰
‰
‰
‰
‰
‰
Servlets, JSP: Java servlets und Java Server Pages sind Komponenten,
die in einem Web Server ablaufen, der dynamisches HTML und Session
Management für Browser Clients unterstützt.
JMS: Java Messaging Service - asynchrone Kommunikation mit
transaktionellen Message Queues oder Pub/Sub.
JNDI: Java Naming and Directory Interface – Zugriff auf Namensdienste
wie DNS, NDS, LDAP, oder CORBA Naming.
RMI/IIOP: Remote Method Invocation - erzeugt Remote Interfaces für die
Java-to-Java Kommunikation. Dazu wird des CORBA Standard-IIOPKommunikationsprotokoll eingestzt.
JDBC: JDBC Database Access API – einheitlicher Zugriff auf relationale
Datenbanken
Java IDL: Java Interface Definition Language - erzeugt Remote
Interfaces für Java-to-CORBA-Kommunication.
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 11
Verwandte Standards und Protokolle (3)
‰
‰
‰
‰
‰
JTA: Java Transaction API – API zur Definition von
Transactionsgrenzen
JTS: Java Transaction Service – Distributed Transaction
Management Service auf der Basis des CORBA Object
Transaction Service.
JavaMail: protokoll-unabhängiges Framework für Mail- und
Nachrichten-basierte Anwendungen. (JavaMail setzt das JAF
API voaus.)
JAF: JavaBeans Activation Framework – Services, um den
Typ beliebiger Daten zu ermitttlen und ein geeignetes
JavaBean zu erzeugen, um die Daten zu manipulieren.
J2SE: Java2 Standard Edition
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 12
Verwendung der verwandten Standards
API
Applet
Application
Client
Web
EJB
JDBC 2.0
N
Y
Y
Y
JTA 1.0
N
N
Y
Y
JNDI 1.2
N
Y
Y
Y
Servlet 2.2
N
N
Y
N
JSP 1.1
N
N
Y
N
EJB 1.1
N
Y*)
Y*)
Y
RMI-IIOP 1.0
N
Y
Y
Y
JMS 1.0
N
Y
Y
Y
JavaMail 1.1
N
N
Y
Y
JAF 1.0
N
N
Y
Y
*) Beschränkt auf die Enterprise Bean Client APIs)
Stand: J2EE V1.4 2003/05/20
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 13
6.2 J2EE Web-Tier
Ebene zwischen Clients und Anwendungslogik
‰
Funktionalität
•
•
•
•
•
•
‰
Bisherige Lösungen
•
•
•
‰
Interaktion zwischen Web-Clients und Anwendungslogik steuern
Erzeugen dynamischer Inhalte (HTML, Bilder, Sprache,...)
Präsentation von Daten und Abfragen von Benutzereingaben (HTTP PUT,
GET, POST,...)
Abfolge von Bildschirmmasken steuern
Verwaltung von Sessionkontexten
Unterstützung verschiedener Endgeräte
CGI-Skripte
Web-Server Extensions: NSAPI (Netscape), ISAPI (MS IIS)
Problematik: aufwändig, skaliert nicht,
kompromittiert evtl. Server-Stabilität
Web-Tier: neue Lösung mit J2EE
•
•
•
Web-Container analog EJB-Container
Java Servlets, JSP – Java Server Pages
Verwaltung des Sessionkontextes durch den Container
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 14
J2EE Web-Container: Java Servlets
‰
‰
Java-Komponente, die auf der Serverseite abläuft.
Servlet Container: Laufzeitumgebung (Java VM) für Servlets
•
•
•
•
‰
Lebenzyklus von Servlets
Umsetzen von URLs auf Servlet-Methodenaufrufe
Interception von Aufrufen des Servlets für Standardfunktionalität
Im Gegensatz zu CGI kein neuer Prozess für einen Servlet-Aufruf
Aufgabenstellung von Servlets
•
•
•
•
•
•
Entgegennehmen von Methoden-Aufrufen
Implementierung von Anwendungslogik in den Methoden
Verwendung der Standarddienste des Container für DB-Zugriff,
Transaktionen, ...
Ausgeben von dynamisch erzeugten Inhalten (HTML, MIME,...)
Zugriff und Aufrufe von nachgelagerten EJBs
Je nach genauer Aufgabe unterschiedliche Servelt-Typen
– Generisches Servlet: service()-Metode für Anwendungsfunktionalität
– HTTP-Servlet: Methoden für die HTTP-Operationen GET, POST, Cookies
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 15
Beispiel: Hello-Servlet für HTTP-GET
public class HelloServlet extends HttpServlet {
public void doGet( HttpServletRequest request,
HttpServletResponse response) throws ... {
response.setContentType(“text/html“);
PrintWriter out = response.getWriter();
out.println(“<html>“); out.println(“<body>“);
out.println(“<H1> Hello World! </H1>“);
out.println(“</body>“); out.println(“</html>“);
out.close();
}
}
Das Servlet nimmt HTTP-GET-Aufrufe entgegen
und erzeugt ein HTML-Dokument mit dem Inhalt „Hello World“
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 16
Problematik von Servlets
‰
Synchronisation
•
•
‰
‰
Normalerweise nur eine Servlet-Instanz
Parallele Aufrufe erzeugen mehrere Threads, die auf der
gleichen Instanz arbeiten
Zugriff auf Benutzereingaben erfordert Hilfskonstrukte
Transaktionelle Garantien sind bei HTTP-Aufrufen nicht
vorgesehen
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 17
J2EE Web-Container: JSP
‰
‰
‰
Beobachtung:
•
•
Struktur und Layout der meisten Web-Seiten gleich
Aber unterschiedliche Dateninhalte auf den Seiten
Idee bei JSP – Java Server Pages
•
•
•
Statisches Template (HTML) für Struktur und Layout
Spezieller Markup für dynamische Inhalte
Dadurch werden Servlets vermieden, die viel statischen Text
generieren müssen.
Spezieller Markup in JSP
•
•
•
•
<%@ page %>: Import von Java-Klassen
jsp:useBean: Binden von EJBs an JSP-Variablen
<% %>: sog. Scriptlets mit dem Java-Code zur Erzeugung der
dynamischen Inhalte
<%= %>: Zugriff auf Java-Variablen, Ausgabe von deren Inhalten in
der erzeugten Seite
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 18
Beispiel für eine JSP
<%@ page import="java.util.*, bankPackage.*" %>
<HTML>
<BODY>
Einbinden der
<H1>Account Page</H1>
Beans
Balance for account number 2000:
Erzeugen des
<% { // new block %>
Beans
<jsp:useBean id="finance" scope="page"
class="bankPackage.FinanceBean"/>
<% Integer iBalance = finance.getBalance(new Integer(2000));
out.print(iBalance.toString()); %>
<% } // close the block %>
Methodenaufruf
</BODY>
</HTML>
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 19
Problematik von JSP
‰
‰
Layout und Code sind physikalisch nicht voneinander
getrennt.
Java-Code in Scriptlets verführt zu Copy-PasteProgrammierung
•
•
Geringe Wiederverwendung
Schlechte Wartbarkeit des Codes
‰
Gutes Layout erfordert zusätzliche Produkte
(Diese werden jedoch von den Applikationsservern
meist unterstützt.)
‰
Wiederverwendung durch Tag Libraries
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 20
Zusammenfassung Applikationsserver
‰
‰
‰
‰
Heutige Anwendungssysteme erfordern zusätzliche
Middleware-Ebene: Web-Tier zur Umsetzung von WebAnwendungsfunktionalität
J2EE-Standard für Applikationsserver
•
•
•
•
Zugriff auf Datenbanken und Host-Systeme
Anwendungslogik durch EJBs
Web-Tier mit Servlets und JSP
J2EE-Laufzeitumgebungen für div. Clients
J2EE bindet viele weitere Standards nach dem
Baukastenprinzip ein
Skalierbarkeit auf allen Ebenen wichtiges Kriterium bei
der Entwicklung der verschiedenen Produkte
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 21
Referenzen
‰
‰
‰
Sun: J2EE Web-Seite: http://java.sun.com/j2ee/
I. Singh, B. Stearns, M. Johnson: Designing Enterprise
Applications with the J2EE Platform, 2nd Edition
(http://java.sun.com/blueprints/guidelines/designing_en
terprise_applications_2e/index.html)
S. Bodoff et al.: J2EE Tutorial:
http://java.sun.com/j2ee/tutorial
Objektverwaltung höherer Ordnung (OHO) – SS 2003
Kapitel 6: Applikationsserver – 22
Herunterladen