Java EE Java EE Multitiered Applications

Werbung
Java EE
http://www.dke.univie.ac.at
Java EE Multitiered Applications
http://java.sun.com/javaee/5/docs/tutorial/
http://www.dke.univie.ac.at
1
Kommunikation Applikation/
Web Applikationen
http://java.sun.com/javaee/5/docs/tutorial/
http://www.dke.univie.ac.at
Begriffsdefinitionen Java EE
• “A Java EE component is a self-contained functional
software unit that is assembled into a Java EE
application with its related classes and files and that
communicates with other components.”
• 3 Typen von Komponenten in der Java EE
Spezfikation:
– Java EE Clients: Web Clients, Applets, Application Clients
– Java EE Web Components: Java Servlets, JavaServer
Faces, and JavaServer Pages (laufen auf dem Server)
– Business Components: Enterprise JavaBeans (laufen auf
dem Server)
http://java.sun.com/javaee/5/docs/tutorial/
http://www.dke.univie.ac.at
2
Begriffsdefinitionen Java EE
Web Clients (Thin clients) bestehen aus zwei Teilen:
– Dynamische Webseiten:
• Enthalten Markup Sprachen (HTML, XML,…)
• Werden erzeugt von Web Components
– Web Browser (z.B. Internet Explorer, Firefox, Opera…)
Web Clients fragen keine Datenbanken ab, führen
keine komple
komplexen
en Business-Transaktionen
B siness Transaktionen durch
d rch
oder sprechen auch keine Legacy Applikationen
direkt an -> Diese Funktionalitäten werden
ausgelagert an Enterprise Beans.
http://www.dke.univie.ac.at
Begriffsdefinitionen Java EE
Applets:
Webseiten die von den Webkomponenten erzeugt
Webseiten,
werden, können kleine client-seitige Applikationen
(=Applets) enthalten.
Ausführung: Auf dem Client in einer Java-VM (Virtual
machine)
Voraussetzungen:
– IInstallierters
t lli t
JJava-Plugin
Pl i für
fü den
d jeweiligen
j
ili
B
Browser
– uU Security Policies für Ausführung
Werden nur Webkomponenten mit dynamischen
Webseiten verwendet, sind keine Plugins oder
Security Policies erforderlich.
http://www.dke.univie.ac.at
3
Begriffsdefinitionen Java EE
Application Clients:
– Werden clientseitig ausgeführt
– Können komplexe grafische User-Interfaces bereitstellen
– Können direkt auf Enterprise Beans zugreifen oder über die
Web Tier Schnittstelle (Webkomponenten)
– Können auch in anderen Programmiersprachen als Java
geschrieben sein und trotzdem auf Java EE Server zugreifen
http://www.dke.univie.ac.at
Begriffsdefinitionen Java EE
Java Beans:
– Sind keine Komponenten im Sinne der Java EE
Spezifikation
– Sind definiert durch die Java Beans Component Architecture
– Besitzen properties
– Besitzen get () und set() Methoden um auf diese properties
entsprechend den Java Beans Namenskonventionen
zugreifen zu können
– Entsprechen weiteren
weiteren, spezifischen Design Patterns für
JavaBeans
String getName()
Die Methode besitzt keine Parameterliste, und der Rückgabetyp ist String.
void setName(String name)
Die Methode hat keine Rückgabe, aber genau einen Parameter.
http://www.dke.univie.ac.at
4
Begriffsdefinitionen Java EE
Webkomponenten:
– Servlets:
Sind Java-Klassen, die dynamisch Anfragen verarbeiten und
Antworten liefern
– JSP (Java Server Pages):
Text-basierte Dokumente, die als Servlets ausgeführt
werden; besser geeignet für statische Inhalte
– JSF (Java Server Faces):
Stellen ein Komponenten
Komponenten-Framework
Framework für User Interfaces
bereit, das auf Servlets und JSP aufbaut
Statische HTML Seiten und Applets sowie Utility-Klassen werden
mit Webkomponenten gebündelt, zählen aber nicht selbst zu
den Webkomponenten.
http://www.dke.univie.ac.at
Beispiel Servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out println(" head ")
out.println("<head>");
out.println("<title>Hello
World!</title>"); out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>"); } }
http://www.dke.univie.ac.at
5
Beispiel JSP
Utility Klasse:
public class Functions {
public static String reverse( String text ) {
return new StringBuffer( text).reverse().toString(); }
public static int numVowels( String text ) {
String vowels = "aeiouAEIOU";
int result = 0;
for( int i = 0; i < text.length(); i++ ) {
Code:
if(JSP
vowels.indexOf(
text.charAt( i ) ) != -1 ) {
result++; }
<u><b>Change Parameter</b></u>
}
f
action="functions.jsp"
ti
"f
ti
j " method="GET">
th d "GET"
return result; <form
foo
=
<input
type="text"
name="foo"
value="${param['foo']}">
}
<input
type="submit">
public static String caps( String text ) {
</form>
return text.toUpperCase();
<br>
}
}
http://www.dke.univie.ac.at
Vergleich Servlets und JSP
Java Server Pages
Servlets
Übersetzungszeitpunkt
Zur Laufzeit von JSP Engine
erzeugt
Werden vor Einsatz manuell übersetzt
Konfiguration
Keine Konfiguration notwendig
Konfiguration zur Ausführung notwendig
Bindung an URL
Unter tatsächlichem Pfad
erreichbar
Über Web Deployment Descriptor an
symbolische URL gebunden
Initialisierungsparameter
Nur allgemeine Kontextparameter
Individuelle Initialisierungsparameter über
Servlet-Konfiguration möglich
Vordefinierte
Variablen
Stehen zu Beginn zur Verfügung
Müssen aus Request/Response Objekten
geholt werden
HTML Code
Kann direkt zwischen
Anweisungen eingefügt werden
Muss über print oder write erzeugt werden
Dokumenttypen
Auf text-basierte Dokumente
beschränkt
Unterstützt Text als auch Binärformate
Services
Nur eine einzige Service-Methode
Eigene Service-Methoden für jeden RequestTyp möglich
Umwandlung
Können durch Servlets ersetzt
werden
Können nur bedingt durch JSP ersetzte
werden
(Stark, 2007)
http://www.dke.univie.ac.at
6
Konzept der Servlet-Filter
Client
Server
ohne Filter
Client
Server
mit Filter
Request und Response können
manipuliert werden ohne dass Client
und Server etwas darüber „wissen“
müssen
Vgl. (Stark, 2007)
http://www.dke.univie.ac.at
Anwendungen von Filtern
• Komprimierte Übertragung von Daten
• Protokollierung von Requests und Responses
Responses,
Debugging
• Validierung von Benutzereingaben in Formularen,
Abfangen von Fehlern
• Authentifizierung von Benutzern
• Verteilung von Requests (Request Dispatching)
• XSLT Verarbeitung
• Verwendung mit Session-Listeners
• …
(Stark, 2007)
http://www.dke.univie.ac.at
7
Umsetzung der Servlet-Filter in Java
Filter Interface
implementiert
Filter
Implementierung
greift zu auf
Filter Konfiguration
Definiert Anwendungsbereich des
Filters:
• Bindung an symbolischen Namen
• Bindung des Namens an URLPattern
http://www.dke.univie.ac.at
Beispiel zu Filtern
package de.akdabas.javaee.filters;
import java.io.IOException;
i
import
jjavax.servlet.Filter;
l Fil
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig; import javax.servlet.ServletRequest; import
javax.servlet.ServletResponse; import javax.servlet.ServletException;
public class BaseFilter implements Filter {
protected FilterConfig filterConfig;
public void init(FilterConfig aConfig) {
filterConfig = aConfig; }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain
chain) throws IOException, ServletException {
chain.doFilter(request, response); }
public void destroy() { filterConfig = null; } }
(Stark, 2007)
http://www.dke.univie.ac.at
8
Beispiel zu Filterkonfiguration
<filter>
<filter-name>baseFilter</filter-name>
<filter-class>
fil
l
de.akdabas.javaee.filters.BaseFilter
</filter-class>
</filter>
…
<filter-mapping>
<filter-name>baseFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(Stark, 2007)
http://www.dke.univie.ac.at
Filterketten
Client
Server
http://www.dke.univie.ac.at
9
Enterprise Java Beans
Eigenschaften:
• Kapselung der Geschäftslogik in einem zentralen
Dienst und Bereitstellung des Dienstes für alle
Frontend-Applikationen
• Transaktionsmanagement:
Mechanismen zur parallelen Verarbeitung von
Anfragen, die voneinander abhängig sind
• Loadbalancing:
Verteilung von Aufgaben auf verschiedene Server,
die nach außen hin nur als ein Rechner erscheinen
http://www.dke.univie.ac.at
EJB Kapselung
Client
Application Server
EJB Container
ApplicationServer
EJB
EJB
EJB
WebServer
EJB
EJB
EJB
Vgl. (Stark, 2007)
http://www.dke.univie.ac.at
10
Transaktionsmanagement
Unterstützung der parallelen Verarbeitung von
Aufgaben, die entweder alle gemeinsam oder keine
von ihnen ausgeführt werden sollen
Beispiel Reisebuchung:
Kunde bucht Reise auf Website.
Es müssen gleichzeitig Kontodaten und Verfügbarkeit
von Flug, Hotel, Schiff,… geprüft werden.
Nur wenn alle positiv evaluiert werden, soll die Buchung
durchgeführt werden.
Vgl. (Stark, 2007)
http://www.dke.univie.ac.at
Diskussion Transaktionsmanagement
http://www.dke.univie.ac.at
11
Loadbalancing
• Verteilung einer großen Menge an Aufgaben auf
mehrere Server
• Vermeidung der Überlastung eines einzelnen Servers
• Nach außen verhält sich der Rechnerverbund wie ein
einzelner Rechner
• Clientsysteme wissen nicht, mit welchem
(physischen) Rechner sie gerade verbunden sind
http://www.dke.univie.ac.at
Webserver – Application Server
Application Server
Servlet Container
Darstellung (Servlets/JSP)
EJB Container
Anwendung
Session Beans
Datenhaltung
Entity-Beans oder PersistenzAPI
(Stark, 2007)
http://www.dke.univie.ac.at
12
Aufgaben EJB Container
• Überwachung des Lebenszyklus von EJBs
• Instanzen-Pooling
Instanzen Pooling
Es können mehrere Instanzen von EJBs erzeugt werden und in
dem Pool verwaltet werden.
• Namens- und Verzeichnisdienst
• Transaktionsdienst
Zusammenfassen von Aufgaben zu Transaktionen
(commit/rollback – Funktionalitäten)
• Nachrichtendienst
Asychrone Kommunikation und Objektaustausch zwischen
EJBs
• Persistenz
Speicherung von Zuständen der EJBs
(Stark, 2007)
http://www.dke.univie.ac.at
Typen von EJBs
• Entity Beans
Schnittstelle zur Datenbank,, repräsentiert
p
Datensätze einer
Tabelle als Java-Objekte; Von Session-Beans verwendet um
Datensätze zu lesen oder zu manipulieren; neue Version:
Persistenz-API
• Session Beans
Kapseln Geschäftslogik und stellen sie in Form von Services
bereit; greifen für Datenbankzugriff auf Entitiy Beans oder
Persistenz-API zu
• Message Driven Beans
Ermöglichen asynchrone Kommunikation zwischen EJBKomponenten über Java Message Service (JMS)
(Stark, 2007)
http://www.dke.univie.ac.at
13
Session Beans
• Stateless Session Beans
– Besitzen keinen Zustand
– „vergessen“ nach einer Transaktion den Client
– Können daher über gemeinsamen Pool verwaltet werden
• Stateful Session Beans
– Speichern Zustand in Instanz-Variablen
(„Konversationsgedächtnis“)
– „Merkt“ sich die Interaktionen mit dem Client
(Stark, 2007)
http://www.dke.univie.ac.at
Beispiel Warenkorb
• Virtueller Warenkorb = Stateful Session Bean
– Merkt sich Interaktion mit Client
– Stellt für jeden Client immer genau diese Instanz zur
Verfügung
– Ist genau einem Benutzer zugeordnet
• Einzelne Produkte in Warenkorb = Stateless Session
Beans
– Sind für alle Clients g
gleich
– Brauchen sich daher nicht zu merken, von welchem Client
sie gerade angefordert werden
(Stark, 2007)
http://www.dke.univie.ac.at
14
Herunterladen