Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
-
Upload
adesso-ag -
Category
Technology
-
view
2.681 -
download
2
description
Transcript of Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 & CDI Andreas Hartmann & Stephan Müller adesso AG
Agenda
Architektur Vision
Querschnittsfunktionen
Technologie Stack
Schlanke Webarchitekturen
Technologien im Detail
Code-Beispiele
Cloud Ready
Architektur Vision
3 Layer Reflex
Presentation-Layer
Business-Layer <<Service>>
<<GUI>>
IntegrationLayer <<Adapter>>
<<D
omai
n M
odel
>>
Over-engineering
Boiler Plate Code
Expensive
Cross-Sectional Tasks
Technology Stack
Schlanke Webarchitekturen Tiny Enterprise Applications
Client Tier
<<View>>
<<Adapter DB>>
<< . . . >>
MiddleTier
<<Presenter>>
<<Model>>
<<Domain Model>>
Spring Data
jQuery
Bean Validation
JSF
CDI
Lombok
Schlanke Webarchitekturen Large Scale Enterprise Applications
Client Tier
<<View>>
MiddleTier
<<Domain Model>>
jQuery
<<Presenter>> <<Adapter DB>> <<Service>>
<<Model>> <<. . . >> << . . . >>
JSF
Spring Data
Dozer
CDI
Bean Validation
Lombok
Wunschliste für Dependency Injection ...
• Standardisierte DI für Java – Wiederverwendbarkeit – Testbarkeit – Flexibilität
• Fachlichkeit statt Infrastruktur – Eingeloggter Benutzer statt UserService
• ... und natürlich Erweiterbarkeit
Context and Dependency Injection
• CDI 1.0 (JSR-299) – typsicheres und schichtenneutrales Injection Framework – Annotationsbasiert
• @Produces, @RequestScope, @ConversationScope – mehrere Implementierungen
• Weld, Apache Open WebBeans, Caucho CanDI – nutzt DI for Java (JSR-330) als grundlegende API
• @Inject, @Named, ... – bietet Mechanismus zur individuellen Erweiterung
• CDI ermöglicht ... – Java Enterprise Entwicklung ohne EJB und ohne Spring
Context and Dependency Injection
• CDI Beans ersetzen JSF Beans
• Vorteile – alle Beans werden im CDI Container verwaltet – Injizieren von POJOs und Diensten in „Managed Beans“
möglich – Leichtgewichtig
• läuft auch im Web Container
JSF 2.0 (JSR 314) CDI 1.0 (JSR 299, JSR 330) @javax.faces.bean.ManagedBean @javax.inject.Named
@javax.faces.bean.ManagedProperty @javax.inject.Inject
@javax.faces.bean.SessionScoped @javax.enterprise.context.SessionScoped
HTML
• Einfache Nutzung mit Facelets und Composite Components
• Mit JSF2.2 auch HTML5 Komponenten
• freie, umfangreiche JavaScript Bibliothek
• komfortable Möglichkeit zur DOM Manipulation
• Erweiterbarkeit durch Plugins (u.a. DataTable)
Lombok • Reduziert Boilerplate
Code durch Annoations – @Getter, @Setter – @ToString – @HashCodeAndEquals – @Data – @NotNull
• Delombok Funktionalität
Bean Validation • Standardisierung von
Constraints in Form von Annotations
• Standardisierung des Metadata API
• Integration anderer Frameworks wie z.B. JSF und JPA
Dozer • Java Bean to
Java Bean Mapper
Spring Data • ermöglicht Zugriff auf
relationale und NoSQL Datenbanken
• CDI Integration in progress
Apache Deltaspike • Apache Incubator Projekt • zentrale Sammelstelle für CDI Erweiterungen
– u.a. für CODI & Seam3 Module
• implementierungsunabhängiger Zugriff auf CDI APIs
Code-Beispiele • Exceptionhandling
• Monitoring
• Security
Cloud-Ready • Deployment bei PaaS/IaaS Providern
– Amazon Beanstalk / EC2 – RedHat OpenShift – VMware Cloud Foundry
• Warum Cloud ...?
– Rechenleistung on demand – Elastizität und Skalierbarkeit – Hohe Flexibilität – Geringe Kosten
Cloud-Ready • Laufzeitumgebung
– Webcontainer – Application Server
• Unterstützte DI Frameworks – CDI – Spring
• Verfügbare Datenbank – RDBMS – NoSQL
þ ý (þ) nur OpenShift
þ
þ
þ
þ
Ressourcen JSF2.2 (JSR-344) http://jcp.org/en/jsr/detail?id=344 CDI (JSR-299) http://docs.jboss.org/cdi/spec/1.0/html_single jQuery http://jquery.com
http://datatables.net Dozer http://dozer.sourceforge.net Lombok http://projectlombok.org Spring Data http://www.springsource.org/spring-data Bean Validation http://hibernate.org/subprojects/validator
Vielen Dank für Ihre Aufmerksamkeit