© DrHitch/Shutterstock.com
Shortcuts
CDI

7 Nutzung der Java-EE-Umgebung


Bei einem Einsatz in einem Application Server können CDI Beans die vom Server bereitgestellte Umgebung nutzen. Das sind einerseits Ressourcen im Sinne der Plattform Java EE, andererseits einige Infrastrukturdienste, die der Server anbietet.

Java EE Resources

Hierunter versteht man Objekte, die im Server oder auch als Anwendungsteile zur Verfügung gestellt und konfiguriert werden, über die auf Teilfunktionalitäten wie bspw. Datenbanken oder Web Services zugegriffen werden kann. Sie können mithilfe der in der Plattform Java EE allgemein definierten Injektionsannotationen verwendet werden (Tabelle 7.1).

Annotation

Bedeutung

@Resource

Injektion von Environment Entries und Resource Manager Factories (s. Text.)

@EJB

Injektion einer EJB-Referenz: im Zusammenhang mit CDI nur für Remote EJBs nötig; lokale EJBs können einfach mit @Inject injiziert werden

@PersistenceContext,
@PersistenceUnit

Injektion einer Entity Manager Factory bzw. eines Entity Managers

@WebServiceRef

Injektion einer Web-Service-Referenz

Tabelle 7.1: Annotationen zur Injektion von Java EE Resources

Von den genannten Annotationen verwenden wir hier beispielhaft nur @Resource (javax.annotation.Resource). Diese Annotation kann zum Zugriff auf sog. Resource Manager Factories genutzt werden. Damit sind Objekte gemeint, mit deren Hilfe man mit Subsystemen wie Datenbanken, Messaging, Mail etc. kommunizieren kann. Sie werden entweder global im Server administriert oder innerhalb einer Anwendungskomponente konfiguriert und sind mit einem Namen im Namensdienst des Servers eingetragen. @Resource akzeptiert globale Namen als Parameter lookup. Im Beispiel (Listing 7.1) wird eine DataSource (javax.sql.DataSource), die im Server global unter dem JNDI-Namen "jdbc/ee_demos" konfiguriert ist, in eine Instanzvariable injiziert.

@Resource(lookup = "jdbc/ee_demos")
private DataSource dataSource;

Listing 7.1: Injektion einer Datasource mithilfe von „@Resource“

Bedenken Sie, dass es sich hier um eine andere Art von Injektion handelt als wir sie sonst in diesem shortcut betrachten: Der Zugriff auf das gewünschte Objekt geschieht über einen Namen, der zur Entwicklungszeit weder auf Existenz noch auf Typkonformität geprüft werden kann!

@Resource kennt neben lookup den Parameter name, mit dem der Objektname relativ zur aktuellen Anwendungskomponente angegeben werden kann. Es würde den Rahmen dieses shortcuts sprengen, darauf näher einzugehen. Bei Interesse finden Sie im Begleitprojekt [...

Shortcuts
CDI

7 Nutzung der Java-EE-Umgebung

Bei einem Einsatz in einem Application Server können CDI Beans die vom Server bereitgestellte Umgebung nutzen. Das sind einerseits Ressourcen im Sinne der Plattform Java EE, andererseits einige Infrastrukturdienste, die der Server anbietet.

Shortcut Autorenteam


Bei einem Einsatz in einem Application Server können CDI Beans die vom Server bereitgestellte Umgebung nutzen. Das sind einerseits Ressourcen im Sinne der Plattform Java EE, andererseits einige Infrastrukturdienste, die der Server anbietet.

Java EE Resources

Hierunter versteht man Objekte, die im Server oder auch als Anwendungsteile zur Verfügung gestellt und konfiguriert werden, über die auf Teilfunktionalitäten wie bspw. Datenbanken oder Web Services zugegriffen werden kann. Sie können mithilfe der in der Plattform Java EE allgemein definierten Injektionsannotationen verwendet werden (Tabelle 7.1).

Annotation

Bedeutung

@Resource

Injektion von Environment Entries und Resource Manager Factories (s. Text.)

@EJB

Injektion einer EJB-Referenz: im Zusammenhang mit CDI nur für Remote EJBs nötig; lokale EJBs können einfach mit @Inject injiziert werden

@PersistenceContext,
@PersistenceUnit

Injektion einer Entity Manager Factory bzw. eines Entity Managers

@WebServiceRef

Injektion einer Web-Service-Referenz

Tabelle 7.1: Annotationen zur Injektion von Java EE Resources

Von den genannten Annotationen verwenden wir hier beispielhaft nur @Resource (javax.annotation.Resource). Diese Annotation kann zum Zugriff auf sog. Resource Manager Factories genutzt werden. Damit sind Objekte gemeint, mit deren Hilfe man mit Subsystemen wie Datenbanken, Messaging, Mail etc. kommunizieren kann. Sie werden entweder global im Server administriert oder innerhalb einer Anwendungskomponente konfiguriert und sind mit einem Namen im Namensdienst des Servers eingetragen. @Resource akzeptiert globale Namen als Parameter lookup. Im Beispiel (Listing 7.1) wird eine DataSource (javax.sql.DataSource), die im Server global unter dem JNDI-Namen "jdbc/ee_demos" konfiguriert ist, in eine Instanzvariable injiziert.

@Resource(lookup = "jdbc/ee_demos")
private DataSource dataSource;

Listing 7.1: Injektion einer Datasource mithilfe von „@Resource“

Bedenken Sie, dass es sich hier um eine andere Art von Injektion handelt als wir sie sonst in diesem shortcut betrachten: Der Zugriff auf das gewünschte Objekt geschieht über einen Namen, der zur Entwicklungszeit weder auf Existenz noch auf Typkonformität geprüft werden kann!

@Resource kennt neben lookup den Parameter name, mit dem der Objektname relativ zur aktuellen Anwendungskomponente angegeben werden kann. Es würde den Rahmen dieses shortcuts sprengen, darauf näher einzugehen. Bei Interesse finden Sie im Begleitprojekt [...

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