SeamFramework.orgCommunity Documentation
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:
einen verbesserten Lebenszyklus für stateful Komponenten, die an gut definierte Kontexte gebunden sind,
eine typensichere Herangehensweise an Dpendency-Einspeisung,
Interaktion über eine Ereignisbenachrichtigungs-Facility und
eine bessere Vorgehensweise bei der Bindung von Interzeptoren an Komponenten sowie eine neue Art von Interzeptor namens Dekorator, der für die Lösung von Business Problemen geeigneter ist.
Dependency-Einspeisung sowie kontextuelles Lebenszyklus-Management erspart dem Benutzer eines unbekannten API das Stellen und die Beantwortung folgender Fragen:
was ist der Lebenszyklus dieses Objekts?
wieviele simultane Clients kann es besitzen?
ist es multithreaded?
wo kann ich eines bekommen?
muss ich es explizit löschen?
wo sollte ich meinen Verweis darauf aufbewahren, wenn ich es nicht direkt verwende?
wie kann ich ein Indirection-Layer hinzufügen, damit die Implementierung dieses Objekts zum Zeitpunkt des Deployment variieren kann?
wie kann ich dieses Objekt mit anderen Objekten teilen?
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:
Ereignisbenachrictigungen entkoppeln Ereignis-Producer von Ereignis-Consumern,
Interzeptoren entkoppeln technische Probleme von Business-Logik und
Dekoratoren erlauben die Kompartmentalisierung von Business Problemen.
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:
alle JavaBeans,
alle EJBs und
alle Servlets.
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