Das "C" in CDIScopes und Contexts unter der Lupe  Arne Limburg    open knowledge GmbH
Agenda1        Einführung2        Standard-Scopes3        CDI-Erweiterungen4        Definition eigener ScopesHerbstcampus ...
CDI                                                         Contexts and                                                  ...
usesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe   4
Scopes im Java-Umfeld                                      Request                                                        ...
Agenda1        Einführung2        Standard-Scopes3        CDI-Erweiterungen4        Definition eigener ScopesHerbstcampus ...
Standard-Scopes in CDI (JSR 299)• @Dependent• @RequestScoped• @ConversationScoped• @SessionScoped• @ApplicationScoped• @Si...
Request ScopeRequest 1                                                   @Inject                                          ...
Session ScopeSession          Request 1                                                                        @Inject    ...
Dependent ScopeRequest 1                                                            @Inject                               ...
Conversation ScopeSession          Request 1                                                            @Inject          R...
Spezialfall                                                @InjectHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts...
LifecycleInjection Target                           Contextual Reference                          Contextual Instance     ...
NormalScoped vs. „Pseudo“-Scoped• NormalScoped Beans  • Erzeugung von Contextual Reference und Contextual Instance  • @Req...
Passivating ScopesTemporäre Überführung in den Hintergrund(z.B. auf Festplatte)• Instanzen müssen serialisierbar sein• Ref...
Agenda1        Einführung2        Standard-Scopes3        CDI-Erweiterungen4        Definition eigener ScopesHerbstcampus ...
CDI-Erweiterungen - CoDIApache MyFaces CoDI – Überblick• „portable CDI extension“  • Apache OWB, Jboss Weld, Caucho CanDI•...
CoDI – Scopes                                          Application                                         Session        ...
CoDI – Scopes                                          Application                                         Session        ...
CoDI - ScopesWas ist mit dem CDI @ConversationScoped?Der hat leider verschiedene Nachteile• Startet nicht automatisch• Pro...
CoDI – ScopesWas ist @ViewAccessScoped?• CoDI @ConversationScoped light• Startet automatisch  wie CoDI @ConversationScoped...
@ViewAccessScoped in Aktion           @Named           @ViewAccessScoped           public class ViewAccessBean            ...
CoDI – ScopesWas ist @WindowScoped?• @SessionScoped eXtreme• Advanced Session pro Browser-TabHerbstcampus 2011 – Das „C“ i...
@WindowScoped in Aktion           @WindowScoped           public class WindowBean                    implements Serializab...
Agenda1        Einführung2        Standard-Scopes3        CDI-Erweiterungen4        Definition eigenerScopes              ...
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                      ...
Context – Service Provider Interfacejavax.enterprise.context.spi.Context  Class<? extends Annotation> getScope();  boolean...
Das Contextual-InterfaceErzeugen einer Instanz:  T instance       = contextual.create(creationalContext);Zerstören einer I...
Fragen und Antworten!    Arne Limburg     open knowledge GmbH
Vielen Dank!Arne Limburgopen knowledge GmbH
Firmaopen knowledge GmbHBismarckstrasse 1326122 Oldenburgwww.openknowledge.dearne.limburg@openknowledge.de               _...
Upcoming SlideShare
Loading in …5
×

Das C in CDI - Scopes und Contexts unter der Lupe

2,492
-1

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,492
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Das C in CDI - Scopes und Contexts unter der Lupe

  1. 1. Das "C" in CDIScopes und Contexts unter der Lupe Arne Limburg open knowledge GmbH
  2. 2. Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 2
  3. 3. CDI Contexts and Dependency Injection for the Java EE PlatformHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 3
  4. 4. usesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 4
  5. 5. 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
  6. 6. Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 6
  7. 7. 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
  8. 8. Request ScopeRequest 1 @Inject @InjectRequest 2 @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 8
  9. 9. Session ScopeSession Request 1 @Inject @Inject Request 2 @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 9
  10. 10. Dependent ScopeRequest 1 @Inject @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 10
  11. 11. Conversation ScopeSession Request 1 @Inject Request 2 Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 11
  12. 12. Spezialfall @InjectHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 12
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 16
  17. 17. 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
  18. 18. CoDI – Scopes Application Session Custom Scopes RequestHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 18
  19. 19. CoDI – Scopes Application Session Window Conversation View-Access RequestHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 19
  20. 20. 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
  21. 21. 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
  22. 22. @ViewAccessScoped in Aktion @Named @ViewAccessScoped public class ViewAccessBean implements Serializable { ... }Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 22
  23. 23. CoDI – ScopesWas ist @WindowScoped?• @SessionScoped eXtreme• Advanced Session pro Browser-TabHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 23
  24. 24. @WindowScoped in Aktion @WindowScoped public class WindowBean implements Serializable { ... }Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 24
  25. 25. Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigenerScopes eigner ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 25
  26. 26. CDI-ExtensionsService-Provider-InterfaceHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 26
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. Fragen und Antworten! Arne Limburg open knowledge GmbH
  31. 31. Vielen Dank!Arne Limburgopen knowledge GmbH
  32. 32. Firmaopen knowledge GmbHBismarckstrasse 1326122 Oldenburgwww.openknowledge.dearne.limburg@openknowledge.de _openknowledge ArneLimburgHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 32

×