• Save
Flexibilitaet mit CDI und Apache DeltaSpike
Upcoming SlideShare
Loading in...5
×
 

Flexibilitaet mit CDI und Apache DeltaSpike

on

  • 2,005 views

 

Statistics

Views

Total Views
2,005
Views on SlideShare
497
Embed Views
1,508

Actions

Likes
1
Downloads
0
Comments
0

44 Embeds 1,508

http://os890.blogspot.com 388
http://os890.blogspot.de 305
http://os890.blogspot.co.at 240
http://os890.blogspot.com.br 108
http://os890.blogspot.ru 66
http://os890.blogspot.fr 63
http://os890.blogspot.se 31
http://os890.blogspot.com.es 26
http://os890.blogspot.com.au 26
http://os890.blogspot.ch 25
http://os890.blogspot.jp 24
http://os890.blogspot.ca 24
http://os890.blogspot.in 19
http://os890.blogspot.it 17
http://os890.blogspot.com.tr 14
http://os890.blogspot.hk 13
http://os890.blogspot.co.uk 11
http://os890.blogspot.nl 11
http://os890.blogspot.be 11
http://os890.blogspot.hu 10
http://os890.blogspot.cz 9
http://www.slideee.com 8
http://os890.blogspot.no 8
http://os890.blogspot.mx 8
http://os890.blogspot.co.il 7
http://os890.blogspot.gr 5
http://os890.blogspot.sk 4
http://os890.blogspot.fi 3
http://os890.blogspot.pt 3
http://os890.blogspot.com.ar 3
http://os890.blogspot.ae 2
http://newsblur.com 2
http://os890.blogspot.dk 2
http://feedly.com 2
http://os890.blogspot.kr 1
http://os890.blogspot.tw 1
http://www.os890.blogspot.com 1
http://os890.blogspot.co.nz 1
http://www.tubebox.us 1
http://translate.googleusercontent.com 1
http://os890.blogspot.ie 1
http://webcache.googleusercontent.com 1
http://os890.blogspot.ro 1
http://131.253.14.66 1
More...

Accessibility

Categories

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

Flexibilitaet mit CDI und Apache DeltaSpike Flexibilitaet mit CDI und Apache DeltaSpike Presentation Transcript

  • THE SOFTWARE EXPERTS Flexibilität mit CDI & Apache DeltaSpike
  • THE SOFTWARE EXPERTS Agenda • Historie • DeltaSpike ist… • Portabilität • Bestandteile von DeltaSpike • DeltaSpike hilft… • CDI in EE-Servern
  • THE SOFTWARE EXPERTS Historie Java EE ohne CDI Spring Framework Seam2 MyFaces Orchestra MyFaces CODI Java EE mit CDI Seam3 + CDI implementation DeltaSpike Andere Extensions
  • THE SOFTWARE EXPERTS DeltaSpike ist... • Portable CDI-Erweiterung (für Apache OpenWebBeans und JBoss Weld) • Mögliche Basis für eigene CDI-Erweiterungen • Beispiel-Quelle für die Verwendung von CDI (API und SPI) • Sammlung der besten Konzepte aus  Apache MyFaces CODI  JBoss Seam3  u.v.m.
  • THE SOFTWARE EXPERTS Getestete Portabilität • Implementierungen  Apache OpenWebBeans (>= 1.1.4)  JBoss Weld (>= 1.1.10) • EE-Server  Apache TomEE 1.6.0+  JBoss AS7 und WildFly8  Oracle Glassfish 3 und 4  Oracle Weblogic 12.1.3 (derzeit indirekt)  IBM WebSphere (derzeit indirekt)
  • THE SOFTWARE EXPERTS
  • THE SOFTWARE EXPERTS DS Bestandteile im Überblick • Core (v0.1+) • CDI-Control (v0.2+) • Module
  • THE SOFTWARE EXPERTS DS Module - 1 • Security (v0.2+) • JPA (Transaction) (v0.3+) • JSF (v0.4+) • Partial-Bean (v0.4+) • Bean-Validation (v0.5+) • Data (Query) (v0.5+) • Servlet (v0.5+)
  • THE SOFTWARE EXPERTS DS Module - 2 • Scheduler (v0.6+) • Test-Control (v0.6+)
  • THE SOFTWARE EXPERTS CDI und DS - Let's rock!
  • THE SOFTWARE EXPERTS CDI SPI • Sehr umfangreich und flexibel • Zusammenhänge und Regeln in manchen Fällen wichtig (und oftmals vernachlässigt)
  • THE SOFTWARE EXPERTS Fast richtig • Beispiele  Falscher Bean-Lookup  Falscher Umgang mit Dependent-Beans  u.v.m. • Folgen  Einfache Use-Cases funktionieren (trotz Fehler)  Unerwartete Probleme können später auftreten
  • THE SOFTWARE EXPERTS Manueller Bean-Lookup • Aufgabenstellung: Manueller Bean-Lookup statt Injection • 1. Schritt eindeutig: Set<Bean<?>> beans = beanManager.getBeans(type, qualifiers);
  • THE SOFTWARE EXPERTS Manueller Bean-Lookup – Schritt 2 • Falsche Annahme: "Eindeutige Type/Qualifier Kombinationen führen immer nur zu einem Bean"  Falsche Folgerung – es genügt: Bean<?> bean = beans.iterator().next(); • Korrektur: @Alternative führt zu mehreren Bean<T>  Richtige Verwendung: Bean<?> bean = beanManager.resolve(beans);
  • THE SOFTWARE EXPERTS DS-Core hilft mit BeanProvider - 1 • Manueller Bean-Lookup vereinfacht  getContextualReference  getContextualReferences  getDependent • Lookup per  Typ  Name • Optionale Ergebnisse möglich
  • THE SOFTWARE EXPERTS DS-Core hilft mit BeanProvider - 2 • Lookup mit Default-Qualifier BeanProvider.getContextualReference(type) • Lookup mit 1-n Qualifier/n BeanProvider.getContextualReference( type, qualifiers) • Lookup optionales Bean mit Default-Qualifier BeanProvider.getContextualReference( type, true)
  • THE SOFTWARE EXPERTS DS hat geholfen Fall gelöst!
  • THE SOFTWARE EXPERTS CDI-Beans anpassen - 1 • CDI-Bootstrapping-Prozess stellt viele hilfreiche Events zur Verfügung • Die Erzeugung von eigenen Metadaten zur Veränderung von Beans kann komplex werden
  • THE SOFTWARE EXPERTS CDI-Beans anpassen - 2 • Beispiele  BeforeBeanDiscovery  externe Klassen können hinzugefügt werden (addAnnotatedType)  ProcessAnnotatedType  Beans können verändert (setAnnotatedType) oder exkludiert (veto) werden  AfterBeanDiscovery  Beans "nachträglich" hinzufügen (addBean)
  • THE SOFTWARE EXPERTS DS-Core hilft mit AnnotatedTypeBuilder • Aufgabenstellung: Interceptor autom. hinzufügen • Dynamische Veränderung von Bean-Metadaten • Beispiel AnnotatedType<T> annotatedType = processAnnotatedType.getAnnotatedType(); processAnnotatedType.setAnnotatedType( new AnnotatedTypeBuilder<T>() .readFromType(annotatedType) .addToClass( new TransactionalLiteral()) .create());
  • THE SOFTWARE EXPERTS DS hat geholfen Fall gelöst!
  • THE SOFTWARE EXPERTS Beans de-/aktivieren • Aufgabenstellung: Beans (bedingt) entfernen • Kontextabhängige Deaktivierung  ifProjectStage  exceptIfProjectStage  onExpression
  • THE SOFTWARE EXPERTS DS hilft mit @Exclude • Deaktivierung ohne Bedingung @Exclude public class MyManualTestService extends MyManualService { /*...*/ } • Aktivierung für Unit-Tests @Exclude(exceptIfProjectStage = ProjectStage.UnitTest.class) public class MyManualTestService extends MyManualService { /*...*/ }
  • THE SOFTWARE EXPERTS DS hat geholfen Fall gelöst!
  • THE SOFTWARE EXPERTS CDI in EE Servern
  • THE SOFTWARE EXPERTS Java EE5 • CDI kann manuell konfiguriert werden (siehe Konfiguration für Servlet-Container) • CDI-Containerstart erfolgt später (als in EE6+ Servern) • Apache DeltaSpike für EE6+ (Apache MyFaces CODI für EE5+) • Apache OpenWebBeans durch Plug-ins sehr flexibel (bzw. EJB-Injection in CDI-Beans)
  • THE SOFTWARE EXPERTS Java EE6 • CDI 1.0 • Upgrade abhängig vom Server • Die ersten Server-Versionen hatten oft Probleme • Viele Einschränkungen durch BDA-Regeln • In Weld-basierten Servern kann OWB helfen (http://os890.blogspot.com/2013/04/one-container-everywhere.html) • Gute Kompatibilität mit Apache DeltaSpike
  • THE SOFTWARE EXPERTS Java EE7 • CDI 1.1 • Aktuelle:  Oracle Glassfish 4  JBoss WildFly8 • Einschränkungen durch BDA-Regeln in vielen Fällen entschärft • Sehr früh mit Apache DeltaSpike getestet (Apache MyFaces CODI ab 1.0.6+)
  • THE SOFTWARE EXPERTS Q&A!?!
  • THE SOFTWARE EXPERTS Links zu weiteren Details • Apache DeltaSpike http://deltaspike.apache.org • Erweiterungen https://github.com/os890 • CDI@Work http://cdiatwork.irian.at • Professioneller Support http://www.irian.at
  • THE SOFTWARE EXPERTS Links zu weiteren Details • Apache DeltaSpike http://deltaspike.apache.org • Erweiterungen https://github.com/os890 • CDI@Work http://cdiatwork.irian.at • Professioneller Support http://www.irian.at