Begriffsdefinitionen Java EE

Werbung
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://www.dke.univie.ac.at
Begriffsdefinitionen Java EE
Web Clients (Thin clients) bestehen aus zwei Teilen:
– Dynamische Webseiten:
• Enthalten
E th lt M
Markup
k S
Sprachen
h (HTML
(HTML, XML,…)
XML )
• Werden erzeugt von Web Components
– Web Browser (z
(z.B.
B Internet Explorer,
Explorer Firefox
Firefox, Opera
Opera…))
Web Clients fragen keine Datenbanken ab
ab, führen
keine komplexen Business-Transaktionen durch
oder sp
ode
sprechen
ec e auc
auch keine
e e Legacy
egacy Applikationen
pp at o e
direkt an -> Diese Funktionalitäten werden
ausgelagert
g g an Enterprise
p
Beans.
http://www.dke.univie.ac.at
Begriffsdefinitionen Java EE
Applets:
Webseiten, die von den Webkomponenten erzeugt
werden,
d
kö
können kl
kleine
i client-seitige
li t iti A
Applikationen
lik ti
(=Applets) enthalten.
Ausführung: Auf dem Client in einer Java
Java-VM
VM (Virtual
machine)
Voraussetzungen:
– Installierters Java-Plugin für den jeweiligen Browser
– uU Security
y Policies für Ausführung
g
Werden nur Webkomponenten mit dynamischen
Webseiten verwendet, sind keine Plugins oder
Security Policies erforderlich.
http://www.dke.univie.ac.at
Begriffsdefinitionen Java EE
Application Clients:
– Werden clientseitig ausgeführt
– Können komplexe grafische User
User-Interfaces
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, 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
Begriffsdefinitionen Java EE
Webkomponenten:
– Servlets:
Sind Java
Java-Klassen
Klassen, die dynamisch Anfragen verarbeiten und
Antworten liefern
– JSP (Java Server Pages):
T tb i t D
Text-basierte
Dokumente,
k
t di
die als
l S
Servlets
l t ausgeführt
füh t
werden; besser geeignet für statische Inhalte
– JSF ((Java Server Faces):
)
Stellen ein Komponenten-Framework für User Interfaces
bereit, das auf Servlets und JSP aufbaut
Statische HTML Seiten und Applets sowie Utility-Klassen werden
mit Webkomponenten
p
g
gebündelt,, zählen aber nicht selbst zu
den Webkomponenten.
http://www.dke.univie.ac.at
Beispiel Servlet
import java.io.*;
import javax
javax.servlet.*;
servlet *
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse
p
p
response)
p
throws
IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello
World!</title>"); out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
i
( /
)
out.println("</html>"); } }
http://www.dke.univie.ac.at
Beispiel JSP
<%@ page language="java"%>
<jsp:useBean
j p
id="simpleBean"
p
scope="request"
p
q
class="com.devsphere.examples.mapping.simple.SimpleBean"/>
<HTML>
<HEAD><TITLE>Simple
p bean</TITLE></HEAD>
<BODY>
<H3>Simple Example</H3>
<P><B>
P B SimpleBean properties: </B>
/B
<P> string = <jsp:getProperty name="simpleBean" property="string"/>
<P> number = <jsp:getProperty name="simpleBean" property="number"/>
<P> integer = <jsp:getProperty name="simpleBean"
name simpleBean property
property="integer"/>
integer />
<P> flag = <jsp:getProperty name="simpleBean" property="flag"/>
<P> colors = <%= toString(simpleBean.getColors()) %>
<P> list = <%= toString(simpleBean
toString(simpleBean.getList())
getList()) %>
<P> optional = <jsp:getProperty name="simpleBean" property="optional"/>
<P> subBean.string = <%= simpleBean.getSubBean().getString() %>
<P> subBean
subBean.number
number = <%= simpleBean.getSubBean().getNumber()
simpleBean getSubBean() getNumber() %>
</BODY></HTML>
http://www.dke.univie.ac.at
Vergleich Servlets und JSP
Java Server Pages
Servlets
ÜbersetzungsÜbersetzungs
zeitpunkt
Zur Laufzeit von JSP Engine
erzeugt
Werden vor Einsatz manuell übersetzt
Konfiguration
Keine Konfiguration notwendig
Konfiguration zur Ausführung notwendig
Bi d
Bindung
an URL
Unter
U
t tatsächlichem
t t ä hli h
Pfad
Pf d
erreichbar
Über W
Üb
Web
b Deployment
D l
tD
Descriptor
i t an
symbolische URL gebunden
Initialisierungsparameter
p
Nur allgemeine Kontextparameter
Individuelle Initialisierungsparameter über
Servlet-Konfiguration
g
möglich
g
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
Vgl. (Stark, 2007)
http://www.dke.univie.ac.at
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
ü
http://www.dke.univie.ac.at
Anwendungen von Filtern
• Komprimierte Übertragung
Ü
von Daten
• Protokollierung von Requests und Responses,
D b
Debugging
i
• Validierung von Benutzereingaben in Formularen,
Abfangen von Fehlern
• Authentifizierung von Benutzern
• Verteilung von Requests (Request Dispatching)
• XSLT Verarbeitung
• Verwendung
V
d
mit
it S
Session-Listeners
i Li t
• …
http://www.dke.univie.ac.at
Umsetzung der Servlet-Filter in Java
Filter Interface
implementiert
p
Filter
ImplemenImplemen
tierung
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
k
de.akdabas.javaee.filters;
d kd b j
filt
import java.io.IOException;
import javax.servlet.Filter;
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
bli void
id init(FilterConfig
i it(Filt C fi aConfig)
C fi ) {
filterConfig = aConfig; }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain
chain)
h i ) th
throws IOE
IOException,
ti
S
ServletException
l tE
ti {
chain.doFilter(request, response); }
public void destroy() { filterConfig = null; } }
http://www.dke.univie.ac.at
Beispiel zu Filterkonfiguration
<filter>
filt
<filter-name>baseFilter</filter-name>
<filter-class>
de.akdabas.javaee.filters.BaseFilter
</filter-class>
</filter>
…
<filter-mapping>
<filter-name>baseFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
http://www.dke.univie.ac.at
Filterketten
Client
Server
http://www.dke.univie.ac.at
Enterprise Java Beans
Eigenschaften:
• Kapselung der Geschäftslogik in einem zentralen
Di
Dienst
t und
dB
Bereitstellung
it t ll
d
des Di
Dienstes
t fü
für alle
ll
Frontend-Applikationen
• Transaktionsmanagement:
Mechanismen zur parallelen Verarbeitung von
Anfragen,
age , die
d e voneinander
o e a de ab
abhängig
ä g g ssind
d
• Loadbalancing:
Verteilung
g von Aufgaben
g
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
http://www.dke.univie.ac.at
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
werden, soll die Buchung
durchgeführt werden.
http://www.dke.univie.ac.at
Beispiel Transaktionsmanagement
http://www.dke.univie.ac.at
Loadbalancing
• Verteilung einer großen Menge an Aufgaben auf
mehrere Server
• Vermeidung
V
id
d
der Üb
Überlastung
l t
eines
i
einzelnen
i
l
S
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 C
Container
i
Anwendung
Session Beans
Datenhaltung
Entity-Beans oder PersistenzAPI
http://www.dke.univie.ac.at
Aufgaben EJB Container
• Überwachung
Ü
des Lebenszyklus von EJBs
• Instanzen-Pooling
Es können mehrere Instanzen von EJBs erzeugt werden und in
dem Pool verwaltet werden.
• Namens
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
http://www.dke.univie.ac.at
Typen von EJBs
• Entity Beans
Schnittstelle zur Datenbank, repräsentiert Datensätze einer
Tabelle als Java-Objekte;
j
; Von Session-Beans verwendet um
Datensätze zu lesen oder zu manipulieren; neue Version:
Persistenz-API
• Session
S
i B
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 EJB
EJBKomponenten über Java Message Service (JMS)
http://www.dke.univie.ac.at
Session Beans
• Stateless Session Beans
– Besitzen keinen Zustand
– „vergessen
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
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 gleich
– Brauchen sich daher nicht zu merken, von welchem Client
sie gerade angefordert werden
http://www.dke.univie.ac.at
Herunterladen