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.
