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