SlideShare ist ein Scribd-Unternehmen logo
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

Weitere ähnliche Inhalte

Was ist angesagt?

Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
Oliver Busse
 
Ant im Detail
Ant im DetailAnt im Detail
Ant im Detail
Jörn Dinkla
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
gedoplan
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0
Patrick Charrier
 
Einstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSetEinstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSet
Ralf Abramowitsch
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
René Winkelmeyer
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
Joachim Baumann
 
Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4
Jörn Dinkla
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion Schulung
Jörn Dinkla
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Steffen Gebert
 
systemd & Docker
systemd & Dockersystemd & Docker
systemd & Docker
Thorsten Höger
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"
schellsoft
 
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Informatik Aktuell
 
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
Fabian Lange
 
Kann ich mit Grails Enterprise Applikationen umsetzen?
Kann ich mit Grails Enterprise Applikationen umsetzen?Kann ich mit Grails Enterprise Applikationen umsetzen?
Kann ich mit Grails Enterprise Applikationen umsetzen?
Tobias Kraft
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
agilemethoden
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
OPITZ CONSULTING Deutschland
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
B1 Systems GmbH
 
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudWie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Patric Boscolo
 

Was ist angesagt? (20)

Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
 
Ant im Detail
Ant im DetailAnt im Detail
Ant im Detail
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0
 
Einstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSetEinstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSet
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion Schulung
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
systemd & Docker
systemd & Dockersystemd & Docker
systemd & Docker
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"
 
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
 
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Kann ich mit Grails Enterprise Applikationen umsetzen?
Kann ich mit Grails Enterprise Applikationen umsetzen?Kann ich mit Grails Enterprise Applikationen umsetzen?
Kann ich mit Grails Enterprise Applikationen umsetzen?
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
 
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudWie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
 

Andere mochten auch

Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
os890
 
MyFaces CODI and JBoss Seam3 become Apache DeltaSpike
MyFaces CODI and JBoss Seam3 become Apache DeltaSpikeMyFaces CODI and JBoss Seam3 become Apache DeltaSpike
MyFaces CODI and JBoss Seam3 become Apache DeltaSpike
os890
 
Make JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODIMake JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODI
os890
 
MyFaces CODI Conversations
MyFaces CODI ConversationsMyFaces CODI Conversations
MyFaces CODI Conversations
os890
 
OpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheConOpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheCon
os890
 
MyFaces Universe at ApacheCon
MyFaces Universe at ApacheConMyFaces Universe at ApacheCon
MyFaces Universe at ApacheCon
os890
 
Mia software@md day2011
Mia software@md day2011Mia software@md day2011
Mia software@md day2011
MDDAY11
 
le guide swebok
le guide swebokle guide swebok
le guide swebok
sammiiaa
 
Insomnie tr rythmes circadiens 050122014
Insomnie tr rythmes circadiens 050122014Insomnie tr rythmes circadiens 050122014
Insomnie tr rythmes circadiens 050122014
RESEAU MORPHEE
 
Apache DeltaSpike: The CDI Toolbox
Apache DeltaSpike: The CDI ToolboxApache DeltaSpike: The CDI Toolbox
Apache DeltaSpike: The CDI Toolbox
Virtual JBoss User Group
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
Antoine Sabot-Durand
 
Das Potential von Open Source Software nutzen und die Risiken minimieren
Das Potential von Open Source Software nutzen und die Risiken minimierenDas Potential von Open Source Software nutzen und die Risiken minimieren
Das Potential von Open Source Software nutzen und die Risiken minimieren
Matthias Stürmer
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010
MD DAY
 
Präsentation PM Forum - Social Software
Präsentation PM Forum  - Social SoftwarePräsentation PM Forum  - Social Software
Präsentation PM Forum - Social Software
GPMS
 
(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos
Rafael Rosa
 
Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk AG
 
Présentation update crm lsi
Présentation update crm lsi Présentation update crm lsi
Présentation update crm lsi
SaaS Guru
 
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
ljaquet
 
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
styropor
 
Freie Software in der (Groß-)Forschung
Freie Software in der (Groß-)ForschungFreie Software in der (Groß-)Forschung
Freie Software in der (Groß-)Forschung
Andreas Schreiber
 

Andere mochten auch (20)

Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
 
MyFaces CODI and JBoss Seam3 become Apache DeltaSpike
MyFaces CODI and JBoss Seam3 become Apache DeltaSpikeMyFaces CODI and JBoss Seam3 become Apache DeltaSpike
MyFaces CODI and JBoss Seam3 become Apache DeltaSpike
 
Make JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODIMake JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODI
 
MyFaces CODI Conversations
MyFaces CODI ConversationsMyFaces CODI Conversations
MyFaces CODI Conversations
 
OpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheConOpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheCon
 
MyFaces Universe at ApacheCon
MyFaces Universe at ApacheConMyFaces Universe at ApacheCon
MyFaces Universe at ApacheCon
 
Mia software@md day2011
Mia software@md day2011Mia software@md day2011
Mia software@md day2011
 
le guide swebok
le guide swebokle guide swebok
le guide swebok
 
Insomnie tr rythmes circadiens 050122014
Insomnie tr rythmes circadiens 050122014Insomnie tr rythmes circadiens 050122014
Insomnie tr rythmes circadiens 050122014
 
Apache DeltaSpike: The CDI Toolbox
Apache DeltaSpike: The CDI ToolboxApache DeltaSpike: The CDI Toolbox
Apache DeltaSpike: The CDI Toolbox
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
 
Das Potential von Open Source Software nutzen und die Risiken minimieren
Das Potential von Open Source Software nutzen und die Risiken minimierenDas Potential von Open Source Software nutzen und die Risiken minimieren
Das Potential von Open Source Software nutzen und die Risiken minimieren
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010
 
Präsentation PM Forum - Social Software
Präsentation PM Forum  - Social SoftwarePräsentation PM Forum  - Social Software
Präsentation PM Forum - Social Software
 
(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos
 
Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013
 
Présentation update crm lsi
Présentation update crm lsi Présentation update crm lsi
Présentation update crm lsi
 
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
 
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
 
Freie Software in der (Groß-)Forschung
Freie Software in der (Groß-)ForschungFreie Software in der (Groß-)Forschung
Freie Software in der (Groß-)Forschung
 

Ähnlich wie Flexibilitaet mit CDI und Apache DeltaSpike

BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
Marc Müller
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
Icinga
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
NETWAYS
 
Azure WorkshopPart1 Intro
Azure WorkshopPart1   IntroAzure WorkshopPart1   Intro
Azure WorkshopPart1 Intro
Oliver Michalski
 
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.jsTesten von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Sebastian Helzle
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012
Daniel Havlik
 
"git.net" gibt's nicht?
"git.net" gibt's nicht?"git.net" gibt's nicht?
"git.net" gibt's nicht?
inovex GmbH
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance Reloaded
Gregor Goldbach
 
Basisinfrastruktur aus Entwicklersicht
Basisinfrastruktur aus EntwicklersichtBasisinfrastruktur aus Entwicklersicht
Basisinfrastruktur aus Entwicklersicht
cmahnke
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep Dive
Bokowsky + Laymann GmbH
 
DataCite Einführung: Der Metadata Store (MDS)
DataCite Einführung: Der Metadata Store (MDS)DataCite Einführung: Der Metadata Store (MDS)
DataCite Einführung: Der Metadata Store (MDS)
Frauke Ziedorn
 
Oracle und Docker
Oracle und DockerOracle und Docker
Oracle und Docker
Stefan Oehrli
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
Tobias Kraft
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne root
cusy GmbH
 
IntelliJ für Flex
IntelliJ für FlexIntelliJ für Flex
IntelliJ für Flex
Simon Tiffert
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
Josef Adersberger
 
Cinema in the Cloud
Cinema in the CloudCinema in the Cloud
Cinema in the Cloud
Oliver Michalski
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
Frank Schmittlein
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
GWAVA
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
Patrick Paechnatz
 

Ähnlich wie Flexibilitaet mit CDI und Apache DeltaSpike (20)

BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
Azure WorkshopPart1 Intro
Azure WorkshopPart1   IntroAzure WorkshopPart1   Intro
Azure WorkshopPart1 Intro
 
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.jsTesten von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012
 
"git.net" gibt's nicht?
"git.net" gibt's nicht?"git.net" gibt's nicht?
"git.net" gibt's nicht?
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance Reloaded
 
Basisinfrastruktur aus Entwicklersicht
Basisinfrastruktur aus EntwicklersichtBasisinfrastruktur aus Entwicklersicht
Basisinfrastruktur aus Entwicklersicht
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep Dive
 
DataCite Einführung: Der Metadata Store (MDS)
DataCite Einführung: Der Metadata Store (MDS)DataCite Einführung: Der Metadata Store (MDS)
DataCite Einführung: Der Metadata Store (MDS)
 
Oracle und Docker
Oracle und DockerOracle und Docker
Oracle und Docker
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne root
 
IntelliJ für Flex
IntelliJ für FlexIntelliJ für Flex
IntelliJ für Flex
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Cinema in the Cloud
Cinema in the CloudCinema in the Cloud
Cinema in the Cloud
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 

Mehr von os890

MyFaces Extensions Validator r4 news
MyFaces Extensions Validator r4 newsMyFaces Extensions Validator r4 news
MyFaces Extensions Validator r4 news
os890
 
MyFaces CODI v0.9.0 News
MyFaces CODI v0.9.0 NewsMyFaces CODI v0.9.0 News
MyFaces CODI v0.9.0 News
os890
 
MyFaces Extensions Validator r3 News
MyFaces Extensions Validator r3 NewsMyFaces Extensions Validator r3 News
MyFaces Extensions Validator r3 News
os890
 
Metadatenbasierte Validierung
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierung
os890
 
MyFaces Extensions Validator 1.x.2 News
MyFaces Extensions Validator 1.x.2 NewsMyFaces Extensions Validator 1.x.2 News
MyFaces Extensions Validator 1.x.2 News
os890
 
MyFaces Extensions Validator Part 1 of 3
MyFaces Extensions Validator Part 1 of 3MyFaces Extensions Validator Part 1 of 3
MyFaces Extensions Validator Part 1 of 3
os890
 

Mehr von os890 (6)

MyFaces Extensions Validator r4 news
MyFaces Extensions Validator r4 newsMyFaces Extensions Validator r4 news
MyFaces Extensions Validator r4 news
 
MyFaces CODI v0.9.0 News
MyFaces CODI v0.9.0 NewsMyFaces CODI v0.9.0 News
MyFaces CODI v0.9.0 News
 
MyFaces Extensions Validator r3 News
MyFaces Extensions Validator r3 NewsMyFaces Extensions Validator r3 News
MyFaces Extensions Validator r3 News
 
Metadatenbasierte Validierung
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierung
 
MyFaces Extensions Validator 1.x.2 News
MyFaces Extensions Validator 1.x.2 NewsMyFaces Extensions Validator 1.x.2 News
MyFaces Extensions Validator 1.x.2 News
 
MyFaces Extensions Validator Part 1 of 3
MyFaces Extensions Validator Part 1 of 3MyFaces Extensions Validator Part 1 of 3
MyFaces Extensions Validator Part 1 of 3
 

Flexibilitaet mit CDI und Apache DeltaSpike

  • 1. THE SOFTWARE EXPERTS Flexibilität mit CDI & Apache DeltaSpike
  • 2. THE SOFTWARE EXPERTS Agenda • Historie • DeltaSpike ist… • Portabilität • Bestandteile von DeltaSpike • DeltaSpike hilft… • CDI in EE-Servern
  • 3. 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
  • 4. 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.
  • 5. 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)
  • 7. THE SOFTWARE EXPERTS DS Bestandteile im Überblick • Core (v0.1+) • CDI-Control (v0.2+) • Module
  • 8. 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+)
  • 9. THE SOFTWARE EXPERTS DS Module - 2 • Scheduler (v0.6+) • Test-Control (v0.6+)
  • 10. THE SOFTWARE EXPERTS CDI und DS - Let's rock!
  • 11. THE SOFTWARE EXPERTS CDI SPI • Sehr umfangreich und flexibel • Zusammenhänge und Regeln in manchen Fällen wichtig (und oftmals vernachlässigt)
  • 12. 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
  • 13. THE SOFTWARE EXPERTS Manueller Bean-Lookup • Aufgabenstellung: Manueller Bean-Lookup statt Injection • 1. Schritt eindeutig: Set<Bean<?>> beans = beanManager.getBeans(type, qualifiers);
  • 14. 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);
  • 15. THE SOFTWARE EXPERTS DS-Core hilft mit BeanProvider - 1 • Manueller Bean-Lookup vereinfacht  getContextualReference  getContextualReferences  getDependent • Lookup per  Typ  Name • Optionale Ergebnisse möglich
  • 16. 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)
  • 17. THE SOFTWARE EXPERTS DS hat geholfen Fall gelöst!
  • 18. 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
  • 19. 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)
  • 20. 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());
  • 21. THE SOFTWARE EXPERTS DS hat geholfen Fall gelöst!
  • 22. THE SOFTWARE EXPERTS Beans de-/aktivieren • Aufgabenstellung: Beans (bedingt) entfernen • Kontextabhängige Deaktivierung  ifProjectStage  exceptIfProjectStage  onExpression
  • 23. 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 { /*...*/ }
  • 24. THE SOFTWARE EXPERTS DS hat geholfen Fall gelöst!
  • 25. THE SOFTWARE EXPERTS CDI in EE Servern
  • 26. 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)
  • 27. 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
  • 28. 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+)
  • 30. 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
  • 31. 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