Java EE Plattform

Werbung
JAVA EE PLATTFORM
CAS Enterprise Application Development Java EE
Simon Martinelli, 10.2013
[email protected] | about.me/simas_ch
INHALT
1. ÜBERBLICK
2. PRINZIPIEN UND PATTERNS
3. CONTAINER SERVICES
2
1 ÜBERBLICK
3
1 ÜBERBLICK
VON DER APPLIKATION ZUR
PLATTFORM
Applikation
Applikation
Framework
Infrastruktur
Code
Library
Applikation
Java EE Plattform
Web Container
EJB Container
Komponenten
Komponenten
Dienste
Quelle: Stephan Fischli
4
1 ÜBERBLICK
PLATTFORM
Komponente
Komponente
Komponente
Komponente
Komponente
Container
Dienste
Anwendungsorientierte Middleware / Java EE Plattform
Kommunikationsinfrastruktur
Betriebssystem / Verteiltes System
Quelle: Pearson
5
1 ÜBERBLICK
CONTAINER, DIENSTE UND
KOMPONENTEN
Java EE
Plattform
enthält
stellt zur Verfügung
Container
Dienst
läuft in
verwendet
Komponente
Quelle: Stephan Fischli
6
1 ÜBERBLICK
GESCHICHTE
Quelle: Oracle
7
1 ÜBERBLICK
JAVA EE 7
Quelle: Oracle
8
1 ÜBERBLICK
SPEZIFIKATIONEN
Quelle: blog.eisele.net
9
1 ÜBERBLICK
SCHICHTEN
Quelle: Oracle
10
1 ÜBERBLICK
CONTAINER
Quelle: Oracle
11
1 ÜBERBLICK
APIS
Quelle: Oracle
12
2 PRINZIPIEN/PATTERNS
METADATEN
INJECTION
KONTEXT / SCOPES
PROXY
AOP / INTERCEPTORS
13
2 PRINZIPIEN/PATTERNS
METADATEN
• Annotationen
• Ab Java 5
• Compiler geprüft
• Business Code “Verschmutzung”
• XML
• Kein Recompile bei Änderungen
• Fehleranfällig
14
2 PRINZIPIEN/PATTERNS
DEPENDENCY INJECTION
• Don’t call us - we call you! (Hollywood Prinzip)
• Inversion of Control
• Beziehungen werden von aussen gesetzt
• Constructor
• Setter
• Annotations
• Frameworks
• Java EE
• Spring
• Google Guice
15
2 PRINZIPIEN/PATTERNS
KONTEXT
Der Lebenszyklus und die Interaktionen von zustandsbehafteten Komponenten werden an wohldefinierte aber
erweiterbare Kontexte gebunden
Request
Conversation
Session
Application
16
2 PRINZIPIEN/PATTERNS
SCOPES
• Der Scope gibt einem Objekt ein wohldefinierten Lifecycle
Kontext
• Ein Objekt wird bei der ersten Verwendung automatisch
erzeugt
• Das Objekt wird automatisch zerstört, wenn der Kontext
endet
17
2 PRINZIPIEN/PATTERNS
PROXY
18
Bildquelle: Wikipedia
2 PRINZIPIEN/PATTERNS
AOP
• Aspektorientierte Programmierung (AOP) erlaubt, generische
Funktionalität über mehrere Klassen hinweg zu verwenden
• Logische Aspekte eines Anwendungsprogramms werden
dabei von der eigentlichen Geschäftslogik getrennt
• Typische Anwendungsbeispiele sind Transaktionsverwaltung, Auditfähigkeit und Logging
19
2 PRINZIPIEN/PATTERNS
INTERCEPTOR
20
3 CONTAINER SERVICES
NAMING
TRANSAKTIONEN
REMOTING
SECURITY
CONCURRENCY
MESSAGING
POOLING
ASYNCHRONITÄT
PERSISTENZ
VALIDIERUNG
21
3 CONTAINER SERVICES
NAMING
• Das Java Naming and Directory Interface (JNDI) erlaubt es
Komponenten, andere Komponenten und Ressourcen zu
lokalisieren
• Eine Ressource ist ein Objekt, das eine Verbindung zu
Systemen wie Datenbanken oder Messaging erlaubt
• Jede Komponente und jede Ressource wird durch einen
eindeutigen JNDI Namen identifiziert
/jndi/name
Komponente
Ressource
22
3 CONTAINER SERVICES
REMOTING
• Enterprise Java Beans (EJB) mit Remote Interface können
über EJB Remoting aufgerufen werden
Context ctx = new InitialContext();
checkoutService = (CheckoutServiceRemote)
ctx.lookup("ProShopEar/CheckoutService/remote");
• Web Services
• HTTP(S)
• Java EE kennt SOAP und REST Web Services
23
3 CONTAINER SERVICES
CONCURRENCY
• Requests werden parallel verarbeitet, indem der Container
wenn nötig mehrere Instanzen der Komponenten und
mehrere Verbindungen zu Ressourcen erzeugt
• Concurrent Ressourcen sind Objekte, die Parallelität in
Java EE-Anwendungen ermöglichen
24
3 CONTAINER SERVICES
POOLING
25
3 CONTAINER SERVICES
POOLING
• Unter Pooling versteht man generell die Wiederverwendung
physischer Ressourcen (z.B. Datenbankverbindungen oder
Threads)
• Da der Aufbau einer Ressource eine relativ rechenintensive
Operation darstellt, kann damit die Performanz verbessert
werden
26
3 CONTAINER SERVICES
PERSISTENZ
Applikation
JPA
Provider
(EclipseLink, Hibernate etc.)
JDBC API
(Datenbank-unabhängig)
JDBC Treiber
(Datenbank-abhängig)
Datenbank
27
3 CONTAINER SERVICES
PERSISTENZ
• Java Database Connectivity (JDBC)
• Einheitliche Datenbankschnittstelle der Java-Plattform zu
relationalen Datenbanken verschiedener Hersteller
• Für jede spezifische Datenbank sind eigene Treiber erforderlich, die
meist vom Hersteller des Datenbank-Systems geliefert werden
• Java Persistence API (JPA)
• Setzt auf JDBC auf
• Ist die Standardisierung von O/R-Mapping für Java
• JPA ist eine unabhängige Spezifikation sowohl für Java SE als auch
Java EE
28
3 CONTAINER SERVICES
TRANSAKTIONEN
begin transaction
debit checking account
credit savings account
update history log
commit transaction
• Aus logischer Sicht ist eine Transaktion ein Arbeitspaket, das
einen geschäftlichen Nutzen erzeugt
• Sie sollte so klein wie möglich aber so gross wie nötig sein,
um alle Integritätsbedingungen einhalten zu können
• Aus technischer Sicht ist eine Transaktion eine Folge von
Lese- und/oder Änderungsoperationen in der Datenbank
oder einem anderen System
29
3 CONTAINER SERVICES
SECURITY
1)
2)
4)
5)
3)
30
3 CONTAINER SERVICES
SECURITY
• Wird durch den Container bereitgestellt
• Unterstützt Authentifizierung und Autorisierung
• Kann deklarativ
@RolesAllowed("BASKET")
public EmptyDTO deleteBasket(Basket basket)
oder imperativ verwendet werden
sessionContext.isCallerInRole("BASKET");
• Hinweis: Keine Autorisierung auf Datenebene
31
3 CONTAINER SERVICES
MESSAGING
 Point to Point
Publish / Subscribe 
Quelle: Java EE 7 Tutorial, Oracle
32
3 CONTAINER SERVICES
MESSAGING
• Message Passing ist ein Kommunikationsmodell zum
asynchronen Transport von Daten zwischen Prozessen
• Die Daten werden innerhalb von Nachrichten (Messages)
übertragen
• Messaging Systeme kennen zwei Modelle
• Point to Point
• Publish / Subscribe
• Java Message Service (JMS) ist die standardisierte
Schnittstelle für den Zugriff auf Messaging Systeme
33
3 CONTAINER SERVICES
ASYNCHRONITÄT
• EJB Methodenaufrufe
@Asynchronous
public Future<String> processPayment(Order order)
{ ... }
• Timer Service
@Schedule(dayOfWeek="Sun", hour="0")
public void cleanupWeekData() { ... }
34
3 CONTAINER SERVICES
VALIDIERUNG
35
3 CONTAINER SERVICES
BEAN-VALIDIERUNG
• Einheitliche Form
• Eine Sprache für alle (Annotationen)
• Basierend auf dem Domain Modell (JavaBeans)
• Einheitliche Validierung
• Ein Framework
• Eine Implementierung
• Brücke zu anderen Technologien
• API, um auf Bedingungen zuzugreifen
36
Herunterladen