Untitled

Werbung
1
Java EE 7
2
EJB
Enterprise Java Beans
3
Features
4
EJB
•
Sind serverseitige Java-Komponenten
•
Diese stellen dem Programmierer gewisse Dienste
zur Verfügung, damit sich dieser auf die
Geschäftslogik konzentrieren kann.
•
Dabei werden auch die Aspektorientierung
berücksichtigt (Dependency Injection)
5
Stateful Session Beans
•
Stateful Session Beans sind POJOs
•
Halten Status für einen Client vor
•
@Stateful - Annotation
•
Werden für den Client durch einen Proxy
repräsentiert
6
Stateful Session Beans
•
Alle öffentlichen Methoden können vom Client aufgerufen
werden
•
@Remove-Annotation auf einer Methode wird den Status der
Bean löschen, wenn der Client sie aufruft
•
No-Interface View
•
Bean hat nur die @Stateful-Annotation
•
Ist nur für in derselben Java-EE-Applikation enthaltene
Komponenten erreichbar (Web-Schicht etc)
•
Proxy vom Typ der Klasse
7
Remote View
•
Um die Bean auch nichtlokalen Clients zugänglich
zu machen, benötigt sie eine Remote-Sicht
•
Interface annotiert mit @Remote
•
Proxy ist vom Typ des Interface
•
Clients müssen sich nicht innerhalb derselben
Java-EE-Applikation befinden und auch nicht auf
demselben Server liegen
8
Injizierung
•
Lookup und Injizierung wird vom System vorgenommen
•
@Inject oder @EJB
•
@EJB erlaubt es, einen JNDI-Pfad zu definieren:
@EJB(lookup=„java:comp/env/MyBean")
Stateful stateful
•
@Inject funktioniert nur für Beans innerhalb der lokalen
Applikation
•
@Inject funktioniert nur für No-Interface Views
9
LocalView
•
Interface ist mit @Local annotiert
•
Zusätzliches Interface für im selben EJB-Container
veröffentlichte Komponenten
•
•
Kann mehr Funktionalitäten bereitstellen
•
Nutzende Beans muss nicht in derselben
JavaEE-Applikation liegen
Proxy wird auf dem Interface erzeugt
10
Lebenszyklus
11
Lebenszyklus-Callbacks
•
@PostConstruct
Methode wird nach dem Erzeugen und dem Injizieren von
Abhängigkeiten aufgerufen
•
@PreDestroy
Methode wird aufgerufen, bevor der Status der Bean verworfen
wird
•
@PrePassivate
Methode wird eingebunden, bevor der Status der Bean
gespeichert wird (Passivierung)
•
@PostActivate
Methode wird eingebunden, nach der der Status der Bean geladen
und zugewiesen worden ist (Aktivierung)
12
StatefulBean
13
Servlet
14
Problem
•
Wird aus mehreren Browser-Session auf die Stateful-EJB
zugegriffen, so haben alle Sessions den gleichen Zustand.
•
Ursache: Das Servlet wird einmal erzeugt und bleibt
bestehen.
•
Abhilfe: Eine zustandslose CDI-Bean (BeanManager) wird
dazwischengeschaltet
15
Verbesserte Version
BeanManager
16
Verbesserte Version
Servlet
17
Ergebnis
•
Nun gibt es zwei getrennte Sessions
18
Lebenszyklusmethoden
und
Interceptors
19
20
21
Beispiel
Erweiterung unseres
EJB-Beispiels
22
Wildfly Log
23
24
25
26
nur in full profile
27
Beispiel
•
[to be continued …]
28
Herunterladen