SeamFramework.orgCommunity Documentation

Teil I. Verwendung kontextueller Objekte

Die Web Beans (JSR-299) Speziifikation definiert einen Satz von Diensten für die Java EE Umgebung, der die Entwicklung von Anwendungen maßgeblich vereinfacht. Web Beans schichtet ein verbessertes Lebenszyklus- und Interaktionsmodell über bestehende Java-Komponententypen, einschließlich JavaBeans und Enterprise Java Beans. Zur Vervollständigung des traditionellen Java EE Programmiermodells bieten Web Beans Dienste:

Dependency-Einspeisung sowie kontextuelles Lebenszyklus-Management erspart dem Benutzer eines unbekannten API das Stellen und die Beantwortung folgender Fragen:

Ein Web Bean legt nur Typ und Semantik anderer Web Beans fest, von denen es abhängt. Es benötigt keine Informationen zum tatsächlichen Lebenszyklus, konkreter Implementierung, dem Threading-Modell oder anderen Clients eines Web Beans von dem es abhängt. Besser noch - die konkrete Implementierung, der Lebenszyklus und das Threading-Modell eines Web Beans von dem es abhängt können je nach Deployment-Szenario variieren, ohne dass dies Auswirkungen auf irgendeinen Client hätte.

Ereignisse, Interzeptoren und Dekoratoren verbessern die lose Paarung, die diesem Modell innewohnt:

Und das Wichtigste - Web Beans bieten all diese Facilities auf typensichere Weise. Web Beans verwenden nie string-basierte Bezeichner, um zu bestimmen, wie zusammenarbeitende Objekte zusammenpassen. Und XML wird - obwohl es nach wie vor eine Option bleibt - wird selten verwendet. Stattdessen verwenden Web Beans die bereits im Java-Objektmodell verfügbaren Typinformationen gemeinsam mit einem neuen Muster namens Binding-Annotationen, um Web Beans, deren Abhängigkeiten, deren Interzeptoren und Dekoratoren sowie deren Ereignis-Consumer zu verbinden.

Die Web Beans Dienste sind allgemein und wenden folgende Komponententypen an, die in der Java EE Umgebung existieren:

Web Beans bieten sogar die nötigen Integrationspunkte, so dass andere Arten von Komponenten, die durch zukünftige Java EE Spezifikationen oder nicht standardmäßige Frameworks definiert werden, sauber mit Web Beans integriert werden sowie die Web Beans Dienste nutzen und mit anderen Arten von Web Beans interagieren können.

Web Beans wurden durch eine Reihe bestehender Java Frameworks beeinflusst, darunter Seam, Guice und Spring. Jedoch besitzen Web Beans ihre eigenen Eigenschaften: Typesicherer als Seam, mehr stateful und weniger XML-zentrisch als Spring, mehr Web- und Enterprise-anwendungsfähig als Guice.

Und das Wichtigste - bei Web Beans handelt es sich um einen JCP-Standard, der sich sauber mit Java EE und mit jeder anderen Java SE Umgebung integrieren lässt, bei der einbettbares EJB Lite verfügbar ist.

Inhaltsverzeichnis

1. Erste Schritte mit Web Beans
1.1. Ihr erstes Web Bean
1.2. Was ist ein Web Bean?
1.2.1. API-Typen, Binding-Typen und Dependency-Einspeisung
1.2.2. Deployment-Typen
1.2.3. Geltungsbereich
1.2.4. Web Bean Namen und Unified EL
1.2.5. Interzeptor Binding-Typen
1.3. Welche Art von Objekten können Web Beans sein?
1.3.1. Einfache Web Beans
1.3.2. Enterprise Web Beans
1.3.3. Producer-Methoden
1.3.4. JMS-Endpunkte
2. Beispiel einer JSF-Webanwendung
3. Die Web Beans Referenzimplementierung
3.1. Das numberguess-Beispiel
3.2. Das translator-Beispiel
4. Dependency-Einspeisung
4.1. Binding-Annotationen
4.1.1. Binding-Annotationen mit Mitgliedern
4.1.2. Kombinationen von Binding-Annnotationen
4.1.3. Binding-Annotationen und Producer-Methoden
4.1.4. Der standardmäßige Binding-Typ
4.2. Deployment Typen
4.2.1. Aktivierung von Deployment-Typen
4.2.2. Deployment-Typ Präzedenz
4.2.3. Beispiel Deployment-Typen
4.3. Unbefriedigende Abhängigkeiten beheben
4.4. Client-Proxies
4.5. Erhalt eines Web Beans durch programmatsichen "Lookup"
4.6. Lebenszyklus-Callbacks, @Resource, @EJB und @PersistenceContext
4.7. Das InjectionPoint-Objekt
5. Geltungsbereiche und Kontexte
5.1. Typen von Geltungsbereichen
5.2. Eingebaute Geltungsbereiche
5.3. Der Geltungsbereich der Konversation
5.3.1. Konversationsdemarkierung
5.3.2. Konversationsfortpflanzung (Conversation Propagation)
5.3.3. Konversations-Timeout
5.4. Der abhängige Pseudo-Geltungsbereich ("Pseudo-Scope")
5.4.1. Die @New-Annotation
6. Producer-Methoden
6.1. Geltungsbereich einer Producer-Methode
6.2. Einspeisung in Producer-Methoden
6.3. Verwendung von @New mit Producer-Methoden