Turbine Konzepte und Dienste (insb. Velocity Integration) Julian Wank Gerald Rogl.

of 34/34
Turbine Konzepte und Turbine Konzepte und Dienste Dienste (insb. Velocity (insb. Velocity Integration) Integration) Julian Wank Julian Wank Gerald Rogl Gerald Rogl
  • date post

    06-Apr-2015
  • Category

    Documents

  • view

    105
  • download

    0

Embed Size (px)

Transcript of Turbine Konzepte und Dienste (insb. Velocity Integration) Julian Wank Gerald Rogl.

  • Folie 1
  • Turbine Konzepte und Dienste (insb. Velocity Integration) Julian Wank Gerald Rogl
  • Folie 2
  • 2 Inhalt Einfhrung Einfhrung MVC MVC Torque Torque Turbine Services Turbine Services Upload Service Upload Service Users and Security Users and Security Velocity oder JSP Velocity oder JSP Sessions Sessions
  • Folie 3
  • 3 Inhalt (2) Java Files und Templates Java Files und Templates Eine Seite mit Velocity bauen Eine Seite mit Velocity bauen Wie Templates gefunden werden Wie Templates gefunden werden Templates und Actions Templates und Actions Ausfhrungsreihenfolge Ausfhrungsreihenfolge Loader User Login Velocity Context Velocity Context Automatisch erzeugte Objekte Eigene Objekte hinzufgen Wichtige Pfade Wichtige Pfade Docs Docs
  • Folie 4
  • 4 Einfhrung Open Source Open Source Kostenlos Quellcode ist frei verfgbar Server-Side Java Framework Server-Side Java Framework Erlaubt schnelles und sicheres bauen von Web Applicationen Teile auch einzeln verwendbar Teile auch einzeln verwendbar TDK beinhaltet Servlet Runner Tomcat 4.0 Object-Relational Mapping Layer (Torque) Presentation Layer (Velocity oder JSP)
  • Folie 5
  • 5 Model-View-Controller (MVC) Design Pattern (Entwurfsmuster) Design Pattern (Entwurfsmuster) Architektur von Graphischen Benutzeroberflchen Graphischen Benutzeroberflchen Webgesttzten Anwendungen Webgesttzten Anwendungen Trennung von Daten Business Logic (Model) Daten Business Logic (Model) Prsentation User Interface (View) Prsentation User Interface (View) Ablaufsteuerung (Controller) Ablaufsteuerung (Controller) Bestandteile separat entwickeln Bestandteile separat entwickeln
  • Folie 6
  • 6 Fr die View empfiehlt Sun den Einsatz von Java Server Pages (JSPs) Daten werden aus Model geholt (an Stelle von speziellen Tags), und in die HTML-Seite eingefgt (Pull-MVC) Daten werden aus Model geholt (an Stelle von speziellen Tags), und in die HTML-Seite eingefgt (Pull-MVC) Push-Strategie: Model kmmert sich um die Aktualitt der View Push-Strategie: Model kmmert sich um die Aktualitt der View Controller Wird meist durch Servlet reprsentiert (reagiert auf Nutzerinteraktion mit der View und ruft entsprechende Methoden des Models auf) Wird meist durch Servlet reprsentiert (reagiert auf Nutzerinteraktion mit der View und ruft entsprechende Methoden des Models auf) VT: HTML Designer kann GUI ndern ohne den Java Code anzurhren
  • Folie 7
  • 7
  • Folie 8
  • 8 Torque Kreiert SQL Daten-Schema fr DB Kreiert SQL Daten-Schema fr DB Kreiert Java Object Source Files Kreiert Java Object Source Files Tabelle Klasse (nicht ndern!) Tabelle Klasse (nicht ndern!) (Business Objects mssen in XML modelliert sein) (Business Objects mssen in XML modelliert sein) Alles weitere Team 3 Alles weitere Team 3
  • Folie 9
  • 9 Turbine Services Als Interface verwirklicht Als Interface verwirklicht Erweiterbarkeit einfach Erweiterbarkeit einfach hnliches Service erweitern Neues Service schreiben (implements yourInterface extends TurbineBaseService) ber 25 eingebaute Services ber 25 eingebaute Services Upload Service Security Service Logging Service Cache Service Crypto Service
  • Folie 10
  • 10 Upload Service Einstellen (im TurbineResources.properties) Einstellen (im TurbineResources.properties) Ob files automatisch durch den ParameterParser angenommen werden Wo files vorlufig gespeichert werden sollen Die max. Gre einer Anfrage die noch bearbeitet werden soll Die max. Gre die ge-cashed wird (durch die TurbineUploadService class)
  • Folie 11
  • 11 Pfad im System setzen, wo sich das repository befindet Ein HTML File kreieren, dass als User-Interface dient Wenn FileItem kreiert wurde knnen die public- methoden darauf zugreifen und mit ihm arbeiten Um temporr gespeicherte Daten muss man sich nicht kmmern, da das Service einen eigenen Garbage Collector hat
  • Folie 12
  • 12 Users and Security Security Model Security Model User Group Role Permission ab Turbine 2 ab Turbine 2 org.apache.turbine.services.security Package
  • Folie 13
  • 13 Velocity oder JSP Designer hat die Wahl der Prsentations- Sprache Designer hat die Wahl der Prsentations- Sprache JSP (Java Server Pages) Etablierter Standard von Sun Microsystems Etablierter Standard von Sun Microsystems Existierende Konfiguration anpassen Existierende Konfiguration anpassen Velocity Einfacher zu arbeiten Einfacher zu arbeiten Auf Turbine zugeschnitten Auf Turbine zugeschnitten Zustzliche Power von JSP wird hier nicht vermisst Zustzliche Power von JSP wird hier nicht vermisst
  • Folie 14
  • 14 Sessions Problem: Zustandslosigkeit von HTTP Problem: Zustandslosigkeit von HTTP Es gibt keine Sessions jede Anfrage wird individuell und unabhngig von anderen betrachtet Auch fr Nicht-DBMS-Anwendungen ein Problem (Prsentieren der Ergebnisse einer Suche in Teilen) Verschiedene Varianten, Zustandsinfos in Abfragen einzubauen Verschiedene Varianten, Zustandsinfos in Abfragen einzubauen Zustandsinformation in URL kodieren Cookies Autorisation des Benutzers Versteckte Felder in Formularen Java Servlet Session Tracking API
  • Folie 15
  • 15 Zustandsinformation in URL kodieren Zustandsinformation in URL kodieren Session ID wird im URL kodiert, z.B. durch Extra Pfad Info (die das Servlet versteht) Extra Pfad Info (die das Servlet versteht) http://server:80/servlet/MyServlet/123 Zustzlichen Parameter Zustzlichen Parameter http://server:81/servlet/MyServlet?sessionid=123 Eigene Notation Eigene Notation http://server:82/servlet/MyServlet;$sessionid$123
  • Folie 16
  • 16 Cookies Cookies Sie werden am Client gespeichert (falls der Benutzer das erlaubt) Beschrnkungen 20 Cookies pro Site 20 Cookies pro Site 300 Cookies insgesamt pro User 300 Cookies insgesamt pro User Gre je Cookie maximal 4096 bytes Gre je Cookie maximal 4096 bytes
  • Folie 17
  • 17 Session Attribute Damit knnen serverseitig Werte gespeichert werden Damit knnen serverseitig Werte gespeichert werden Sie sind ntzlich um Dinge wie Login-Infos oder Warenkrbe zu implementieren Sie sind ntzlich um Dinge wie Login-Infos oder Warenkrbe zu implementieren
  • Folie 18
  • 18 Java Files und Templates Request Turbine Servlet Request Turbine Servlet Request Brokering Request Brokering Build Context Object Build Context Object Call Velocity Template Engine Call Velocity Template Engine
  • Folie 19
  • 19 Java Files und Templates 2 Eine Site mit Velocity bauen 1. Screen 1.Java Code in WEB-INF/classes compilieren 2..vm Template mit selben Namen erzeugen Unter templates/screens/ speichern Hier BODY-Teil der Seite 3.TurbineResources.properties editieren WEB-INF/conf module.packages=org.apache.turbine.modul es, com.yourcompany.app.modules classpath fr Turbine
  • Folie 20
  • 20 Java Files und Templates 3 Eine Site mit Velocity bauen Ausfhrung Ausfhrung 1. Request z.B. http://www.../HelloWorld.vm 2. HelloWorld class ausgefhrt (Klasse muss von VelocityScreen erben) 3. Velocity Template Engine aufgerufen und HelloWorld.vm ausgefhrt
  • Folie 21
  • 21 Java Files und Templates 4 Eine Site mit Velocity bauen 2. Layout und Navigation 1.Java Klassen erben von VelocitySiteLayout und VelocitySiteNavigation 2..vm Files werden im templates/layout bzw. /navigation Verzeichnis gespeichert Wichtig: Default.vm enthlt das Gesamtlayout indem Mens, Navigation etc. als Variable in eine Struktur eingefgt werden /templates//layouts/Default.vm
  • Folie 22
  • 22 Wie Templates gefunden werden data.getParameters().getString("template") liefert Pfad zum Template data.getParameters().getString("template") liefert Pfad zum Template 1. Screen, Navigation und Layout werden gesucht, beginnend im selben Verzeichnis wie Template 1. Selber Name 2. Default Wenn die Template Variable nicht existiert, wird VelocityScreen und templates/screens/index.vm ausgefhrt
  • Folie 23
  • 23 Templates und Actions Action Parameter im URI z.B. template/HelloWorld.vm/action/UpdateWorld UpdateWorld Java File ausgefhrt Action Parameter im URI z.B. template/HelloWorld.vm/action/UpdateWorld UpdateWorld Java File ausgefhrt Actions werden vor Screen ausgefhrt Actions werden vor Screen ausgefhrt Erst danach Screen Class und.vm Template Erst danach Screen Class und.vm Template Actions liefern nichts zurck, knnen aber in den Message String des RunData Objekts schreiben z.B. data.setMessage("Username does not exist") Actions liefern nichts zurck, knnen aber in den Message String des RunData Objekts schreiben z.B. data.setMessage("Username does not exist")
  • Folie 24
  • 24 Ausfhrungsreihenfolge 1. HTTP Client Request 2. Ausfhren des Turbine Servlets 3. Ausfhren Page Modul Wenn Action ausfhren 4. Screen Objekt nach Layout fragen 5. Layout ausfhren - Layout fhrt Screen (Body) aus 6. Layout fhrt Navigation Modul aus 7. Seite wird zurckgeliefert
  • Folie 25
  • 25 Ausfhrungsreihenfolge - Loader Loader wozu? Loader wozu? Dynamisches Laden der fnf Module Trennung von Code und Framework - Vorteile Update des Frameworks Update des Frameworks Distribution des Codes alleine Distribution des Codes alleine Web-App. Module bleiben in deren Package Pfad Loader Classpath WEB-INF/conf TurbineResource.properties MODULE PACKAGES hier eigene Module hinzufgen Loader Classpath WEB-INF/conf TurbineResource.properties MODULE PACKAGES hier eigene Module hinzufgen
  • Folie 26
  • 26 Ausfhrungsreihenfolge User Login Konfiguration: TurbineResources.properties Framework Settings Konfiguration: TurbineResources.properties Framework Settings Nachdem Session eingerichtet ist, werden Daten im RunData Objekt gespeichert ($data) Nachdem Session eingerichtet ist, werden Daten im RunData Objekt gespeichert ($data) Turbine Servlet fhrt LoginUser Action aus Turbine Servlet fhrt LoginUser Action aus Turbine Servlet fhrt DefaultPage aus Turbine Servlet fhrt DefaultPage aus
  • Folie 27
  • 27 Velocity Context automatisch erzeugte Objekte RunData Objekt RunData Objekt Keyword: data bzw. $data Interface zur Laufzeitinformation Ein Objekt pro Request TemplateLink Objekt TemplateLink Objekt Keyword $link Konvertierung von Links in Referenzen TemplatePageAttributes Objekt TemplatePageAttributes Objekt Keyword $page nderung von HTML Attributen
  • Folie 28
  • 28 Velocity Context eigene Objekte hinzufgen import org.apache.velocity.context.Context; import org.apache.velocity.context.Context; import org.apache.turbine.util.RunData; import org.apache.turbine.util.RunData; doBuildTemplate(RunData data, Context context) doBuildTemplate(RunData data, Context context) context.put("hello",new String("testing")); context.put("hello",new String("testing")); Im Template: $hello the hello reference Im Template: $hello the hello reference Output: testing the hello reference Output: testing the hello reference
  • Folie 29
  • 29 Wichtige Pfade Default Layout Default Layout webapps/APPNAME/templates/app/layouts/Def ault.vm Definiert wie das default layout angezeigt wird Files die in das layout template eingefgt werden Files die in das layout template eingefgt werden webapps/APPNAME/templates/app/navigations
  • Folie 30
  • 30 Wichtige Pfade (2) Files in diesem Verzeichnis sind die die "$screen_placeholder ersetzen Files in diesem Verzeichnis sind die die "$screen_placeholder ersetzen webapps/APPNAME/templates/app/screens Makros fr HTML Fragmente Makros fr HTML Fragmente #webapps/APPNAME/templates/app/GlobalMacros.vm Java file die sich auf Index.vm beziehen Java file die sich auf Index.vm beziehen webapps/APPNAME/WEB- INF/src/java/PACKAGE/modules/screens
  • Folie 31
  • 31 Wichtige Pfade (3) Java files fr Action Module Java files fr Action Module webapps/APPNAME/WEB- INF/src/java/PACKAGE/modules/actions Datenbank-Schema Datenbank-Schema webapps/APPNAME/WEB-INF/conf Build file (z.B. nach nderung des DB Schemas ausfhren) Build file (z.B. nach nderung des DB Schemas ausfhren) webapps/APPNAME/WEB-INF/build "ant compile" kompiliert Java files neu
  • Folie 32
  • 32 Wichtige Pfade (4) Java files die benutzt werden, um auf die Datenbank zuzugreifen Java files die benutzt werden, um auf die Datenbank zuzugreifen webapps/APPNAME/WEB- INF/src/java/PACKAGE/om TurbineResource.property file TurbineResource.property file webapps/APPNAME/WEB-INF/conf
  • Folie 33
  • 33 Docs http://jakarta.apache.org/turbine/ http://jakarta.apache.org/turbine/ http://jakarta.apache.org/turbine/ TDK How-Tos http://jakarta.apache.org/turbine/turbine- 2.3/apidocs/index.html http://jakarta.apache.org/turbine/turbine- 2.3/apidocs/index.html http://jakarta.apache.org/turbine/turbine- 2.3/apidocs/index.html http://jakarta.apache.org/turbine/turbine- 2.3/apidocs/index.html
  • Folie 34
  • 34 Ende Vielen Dank fr Eure Aufmerksamkeit!