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,561 views

 

Statistics

Views

Total Views
2,561
Views on SlideShare
2,234
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