Contexts and Dependency Injection (CDI)

Dieser Abschnitt enthält Informationen zu CDI 1.2 (Contexts and Dependency Injection, Kontext- und Abhängigkeitsinjektion) für die Plattform Java™ EE, eine auf JBoss Weld basierende Implementierung von JSR 346.

CDI wird in einer Anwendung von einer beans.xml-Datei innerhalb des betreffenden Moduls oder von einer Bean mit Annotationen gemäß der Definition in der Spezifikation JSR 346 aktiviert. Sie finden die Datei beans.xml im Verzeichnis WEB-INF eines Webarchivs (WAR-Datei) oder im Verzeichnis META-INF anderer Archivtypen. Wenn CDI aktiviert ist, stellt der Container folgende Services bereit:
  • Kontextmanagement
  • Typsichere Abhängigkeitsinjektion: Eine CDI-gesteuerte Bean wird nach Bedarf instanziiert und injiziert.
  • Decorators, die eine oder mehrere Bean-Schnittstellen implementieren und Geschäftslogik enthalten können. Decorators werden standardmäßig inaktiviert. Sie können mehrere Decorators pro Bean haben, deren Reihenfolge in der Datei beans.xml definiert ist. Verwenden Sie beans.xml oder @Priority, um die Decorators zu aktivieren.
  • Interceptorbindungen: Interceptor, die in der Datei beans.xml manuell oder mit @Priority global aktiviert werden, werden mit einem Interceptor-Bindungstyp gebunden.
  • Ereignismodell
  • Integration in JSF-Dateien (JavaServer Faces) und JSP-Dateien (JavaServer Pages) mit Expression Language (EL)
  • JavaEE-Komponentenklassen, die Injektionen und die Verwendung von Interceptors unterstützen

Die spezifikationsrelevanten API-Klassen für JSR 299 und JSR 330 und modifizierte IBM® Implementierungsklassen, die auf Apache OpenWebBeans basieren, werden in einem Paket mit der Laufzeitumgebung des Anwendungsservers bereitgestellt.

Obwohl die CDI-Implementierung des Produkts auf Apache OpenWebBeans basiert, wurden folgende Änderungen und Zusätze für OpenWebBeans hinzugefügt, um die Integration in die Serverlaufzeit zu unterstützen:
  • Integration in andere Java EE-Container (Java Platform, Enterprise Edition) in WebSphere Application Server Traditional, die injizierbare Komponenten unterstützen.
  • ScannerService-Implementierung, die den Bytecode-Scanner von WebSphere Application Server Traditional verwendet.
  • Direkte Verwendung der EJB-Metadaten (Enterprise JavaBeans) des Produkts zur Bestimmung der EJB-Typen.
  • Automatische Registrierung der Servlet-Listener, Filter, Interceptors für CDI-Anwendungen, die nicht mehr von jeder Anwendung hinzugefügt werden müssen.
  • Produktspezifische Implementierungen vieler OpenWebBeans-SPIs (Service Programming Interface), z. B. ResourceInjectionService, TransactionService, Failover-Service usw.
Wichtig: Containergesteuerte Transaktionen und Sicherheit werden von CDI nicht bereitgestellt.
Fehler vermeiden Fehler vermeiden: CDI wird nur von der WebSphere Application Server Traditional-Standardrichtlinie für das Klassenladeprogramm (Klassenlader für jede WAR-Datei der Anwendung) unterstützt, jedoch nicht mit der alternativen Einstellung Einzelner Klassenlader für gesamte Anwendung.gotcha

Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cweb_cdi
Dateiname:cweb_cdi.html