Das C in CDI - Scopes und Contexts unter der Lupe

  • 2,135 views
Uploaded on

 

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,135
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
11
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Das "C" in CDIScopes und Contexts unter der Lupe Arne Limburg open knowledge GmbH
  • 2. Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 2
  • 3. CDI Contexts and Dependency Injection for the Java EE PlatformHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 3
  • 4. usesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 4
  • 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. Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 6
  • 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. Request ScopeRequest 1 @Inject @InjectRequest 2 @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 8
  • 9. Session ScopeSession Request 1 @Inject @Inject Request 2 @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 9
  • 10. Dependent ScopeRequest 1 @Inject @Inject Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 10
  • 11. Conversation ScopeSession Request 1 @Inject Request 2 Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 11
  • 12. Spezialfall @InjectHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 12
  • 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. 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. 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. Agenda1 Einführung2 Standard-Scopes3 CDI-Erweiterungen4 Definition eigener ScopesHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 16
  • 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. CoDI – Scopes Application Session Custom Scopes RequestHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 18
  • 19. CoDI – Scopes Application Session Window Conversation View-Access RequestHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 19
  • 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. 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. @ViewAccessScoped in Aktion @Named @ViewAccessScoped public class ViewAccessBean implements Serializable { ... }Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 22
  • 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. @WindowScoped in Aktion @WindowScoped public class WindowBean implements Serializable { ... }Herbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 24
  • 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. CDI-ExtensionsService-Provider-InterfaceHerbstcampus 2011 – Das „C“ in CDI – Scopes und Contexts unter der Lupe 26
  • 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. 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. 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. Fragen und Antworten! Arne Limburg open knowledge GmbH
  • 31. Vielen Dank!Arne Limburgopen knowledge GmbH
  • 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