© DrHitch/Shutterstock.com
Shortcuts
CDI

15 Integration von JPA, EJB und JSF


CDI stellt einen sehr zentralen Teil der Plattform Java EE dar. Insofern ist eine gute Anbindung anderer Plattformbestandteile ein wesentlicher Faktor für die Nutzbarkeit von CDI. Die im Folgenden angesprochenen Spezifikationen werden in den entsprechenden Kapiteln meines Buches „Java EE 6“ (ISBN: 978-3-86802-077-9, entwickler.press, 2012) noch detaillierter dargestellt.

Java Persistence

Die JPA-Anbindung geschieht im Wesentlichen über die Injektion von EntityManagerFactory bzw. EntityManager mithilfe der Annotationen @PersistenceUnit bzw. @PersistenceContext. Diese sind aber nicht nur für CDI Beans gültig, sondern plattformweit definiert. Mithilfe einer Producer-Methode lässt sich recht leicht ein im CDI-Sinne injizierbarer Entity Manager zur Verfügung stellen.

Enterprise JavaBeans

EJBs sind auch gemanagte Objekte. Die Integration mit CDI Beans ist in beiden Richtungen problemlos möglich. EJBs veröffentlichen allerdings eine oder mehrere genau definierte Sichten auf sich (Local Interface etc.). Für CDI Beans sind auch nur diese Sichten nutzbar.

CDI und EJB überlappen sich in vielen Bereichen: Beide sind Komponentensysteme, beide unterstützen Dependency Injection, beide kennen unterschiedliche Lebenszyklen. Eine Verschmelzung der beiden Spezifikationen in einer der künftigen Versionen der Plattform ist gut denkbar. Trotz großer Überschneidungen bieten EJBs einige Aspekte, die sich derzeit mit CDI alleine nicht lösen lassen.

JavaServer Faces

JSF nutzt Managed Beans als Schnittstelle von der meist HTML-basierten Oberfläche zur Java-Programmlogik. An dieser Stelle ist die Überschneidung mit CDI 100%ig: Die Managed Beans aus JSF lassen sich problemlos durch CDI Beans ersetzen, wenn diese mittels @Named einen Namen zugewiesen bekommen. Dieser ist dann wie oben dargestellt in Ausdrücken der JSF-EL nutzbar. Vorsicht ist geboten bei Benutzung der Scope-Annotationen: Die gibt es gleichnamig auch in JSF. Für CDI müssen aber die Annotationen aus dem Paket javax.enterprise.context verwendet werden, nicht die aus javax.faces.

Shortcuts
CDI

15 Integration von JPA, EJB und JSF

CDI stellt einen sehr zentralen Teil der Plattform Java EE dar. Insofern ist eine gute Anbindung anderer Plattformbestandteile ein wesentlicher Faktor für die Nutzbarkeit von CDI. Die im Folgenden angesprochenen Spezifikationen werden in den entsprechenden Kapiteln meines Buches „Java EE 6“ (ISBN: 978-3-86802-077-9, entwickler.press, 2012) noch detaillierter dargestellt.

Shortcut Autorenteam


CDI stellt einen sehr zentralen Teil der Plattform Java EE dar. Insofern ist eine gute Anbindung anderer Plattformbestandteile ein wesentlicher Faktor für die Nutzbarkeit von CDI. Die im Folgenden angesprochenen Spezifikationen werden in den entsprechenden Kapiteln meines Buches „Java EE 6“ (ISBN: 978-3-86802-077-9, entwickler.press, 2012) noch detaillierter dargestellt.

Java Persistence

Die JPA-Anbindung geschieht im Wesentlichen über die Injektion von EntityManagerFactory bzw. EntityManager mithilfe der Annotationen @PersistenceUnit bzw. @PersistenceContext. Diese sind aber nicht nur für CDI Beans gültig, sondern plattformweit definiert. Mithilfe einer Producer-Methode lässt sich recht leicht ein im CDI-Sinne injizierbarer Entity Manager zur Verfügung stellen.

Enterprise JavaBeans

EJBs sind auch gemanagte Objekte. Die Integration mit CDI Beans ist in beiden Richtungen problemlos möglich. EJBs veröffentlichen allerdings eine oder mehrere genau definierte Sichten auf sich (Local Interface etc.). Für CDI Beans sind auch nur diese Sichten nutzbar.

CDI und EJB überlappen sich in vielen Bereichen: Beide sind Komponentensysteme, beide unterstützen Dependency Injection, beide kennen unterschiedliche Lebenszyklen. Eine Verschmelzung der beiden Spezifikationen in einer der künftigen Versionen der Plattform ist gut denkbar. Trotz großer Überschneidungen bieten EJBs einige Aspekte, die sich derzeit mit CDI alleine nicht lösen lassen.

JavaServer Faces

JSF nutzt Managed Beans als Schnittstelle von der meist HTML-basierten Oberfläche zur Java-Programmlogik. An dieser Stelle ist die Überschneidung mit CDI 100%ig: Die Managed Beans aus JSF lassen sich problemlos durch CDI Beans ersetzen, wenn diese mittels @Named einen Namen zugewiesen bekommen. Dieser ist dann wie oben dargestellt in Ausdrücken der JSF-EL nutzbar. Vorsicht ist geboten bei Benutzung der Scope-Annotationen: Die gibt es gleichnamig auch in JSF. Für CDI müssen aber die Annotationen aus dem Paket javax.enterprise.context verwendet werden, nicht die aus javax.faces.

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang