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