Das C in CDI - Scopes und Contexts unter der Lupe
Upcoming SlideShare
Loading in...5
×
 

Das C in CDI - Scopes und Contexts unter der Lupe

on

  • 2,545 views

 

Statistics

Views

Total Views
2,545
Views on SlideShare
2,218
Embed Views
327

Actions

Likes
1
Downloads
11
Comments
0

1 Embed 327

http://www.openknowledge.de 327

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Das C in CDI - Scopes und Contexts unter der Lupe Das C in CDI - Scopes und Contexts unter der Lupe Presentation Transcript

    • Das "C" in CDIScopes und Contexts unter der Lupe Arne Limburg open knowledge GmbH
    • Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 2
    • CDI Contexts and Dependency Injection for the Java EE PlatformHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 3
    • usesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 4
    • Scopes im Java-Umfeld Request Application Batch-Job Session Browser-Tab Thread Web-Page ConversationHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 5
    • Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 6
    • Standard-Scopes in CDI (JSR 299)• @Dependent• @RequestScoped• @ConversationScoped• @SessionScoped• @ApplicationScoped• @Singleton aus JSR 330 (dazu später mehr)Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 7
    • Request ScopeRequest 1 @Inject @InjectRequest 2 @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 8
    • Session ScopeSession Request 1 @Inject @Inject Request 2 @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 9
    • Dependent ScopeRequest 1 @Inject @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 10
    • Conversation ScopeSession Request 1 @Inject Request 2 Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 11
    • Spezialfall @InjectHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 12
    • LifecycleInjection Target Contextual Reference Contextual Instance @Inject businessMethod() Lookup or create return businessMethod() return return Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 13
    • NormalScoped vs. „Pseudo“-Scoped• NormalScoped Beans • Erzeugung von Contextual Reference und Contextual Instance • @RequestScoped, @ConversationScoped, @SessionScoped, @ApplicationScoped • Meta-Annotation: @NormalScope• „Pseudo“-Scoped Beans • Kein eigener Lebenszyklus • @Dependent, @Singleton • Meta-Annotation: @Scope (aus JSR 330)Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 14
    • Passivating ScopesTemporäre Überführung in den Hintergrund(z.B. auf Festplatte)• Instanzen müssen serialisierbar sein• Referenzen müssen „passivation-capable“ seinZ.B. @ConversationScoped, @SessionScopedHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 15
    • Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 16
    • CDI-Erweiterungen - CoDIApache MyFaces CoDI – Überblick• „portable CDI extension“ • Apache OWB, Jboss Weld, Caucho CanDI• Bestandteile • JSF Modul (JSF 1.2 und JSF 2.0) • JPA Modul • Bean Validation (und ExtVal) Modul • I18n Modul • Scripting und Testing ModulHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 17
    • CoDI – Scopes Application Session Custom Scopes RequestHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 18
    • CoDI – Scopes Application Session Window Conversation View-Access RequestHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 19
    • CoDI - ScopesWas ist mit dem CDI @ConversationScoped?Der hat leider verschiedene Nachteile• Startet nicht automatisch• Probleme bei fehlgeschlagener Konvertierung/Validierung• Kein „restart()“ innerhalb eines Requests möglich• Keine Gruppierung möglich, d.h. • keine parallelen Konversationen • man beendet alles (oder eben nichts)Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 20
    • CoDI – ScopesWas ist @ViewAccessScoped?• CoDI @ConversationScoped light• Startet automatisch wie CoDI @ConversationScoped• Beendet automatisch Sobald die Folgeseite die Bean nicht mehr referenziert Bean wird aus dem Scope entferntHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 21
    • @ViewAccessScoped in Aktion @Named @ViewAccessScoped public class ViewAccessBean implements Serializable { ... }Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 22
    • CoDI – ScopesWas ist @WindowScoped?• @SessionScoped eXtreme• Advanced Session pro Browser-TabHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 23
    • @WindowScoped in Aktion @WindowScoped public class WindowBean implements Serializable { ... }Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 24
    • Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigenerScopes eigner ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 25
    • CDI-ExtensionsService-Provider-InterfaceHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 26
    • CDI-Extensions import javax.enterprise.inject.spi.*; public class MyCdiExtension implements Extension { public void registerContext( @Observes AfterBeanDiscovery a) { a.addContext(new MyContext()); } }Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 27
    • Context – Service Provider Interfacejavax.enterprise.context.spi.Context Class<? extends Annotation> getScope(); boolean isActive(); <T> get(Contextual<T> contextual); <T> get(Contextual<T> contextual, CreationalContext<T> creationalContext);Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 28
    • Das Contextual-InterfaceErzeugen einer Instanz: T instance = contextual.create(creationalContext);Zerstören einer Instanz: contextual.destroy(instance, creationalContext);Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 29
    • Fragen und Antworten! Arne Limburg open knowledge GmbH
    • Vielen Dank!Arne Limburgopen knowledge GmbH
    • Firmaopen knowledge GmbHBismarckstrasse 1326122 Oldenburgwww.openknowledge.dearne.limburg@openknowledge.de _openknowledge ArneLimburgHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 32