Java EE

Werbung
t
el
nd 6
ha EE
Be ava
J
O’Reillys Taschenbibliothek
Java EE
kurz & gut
O’REILLY
Arun Gupta
Übersetzung von Thomas Demmig
Java EE
kurz & gut
Arun Gupta
Deutsche Übersetzung von
Thomas Demmig
Beijing Cambridge Farnham Köln Sebastopol Tokyo
Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch
können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und
Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung
für eventuell verbliebene Fehler und deren Folgen.
Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet
sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie
Einspeicherung und Verarbeitung in elektronischen Systemen.
Kommentare und Fragen können Sie gerne an uns richten:
O’Reilly Verlag GmbH & Co. KG
Balthasarstr. 81
50670 Köln
E-Mail: [email protected]
Copyright der deutschen Ausgabe:
2012 O’Reilly Verlag GmbH & Co. KG
1. Auflage 2012
Die Originalausgabe erschien 2012 unter dem Titel Java EE 6 Pocket Guide bei
O’Reilly Media, Inc.
Bibliografische Information Der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen
Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über
http://dnb.d-nb.de abrufbar.
Übersetzung: Thomas Demmig, Mannheim
Lektorat: Alexandra Follenius, Köln
Korrektorat: Eike Nitz, Köln
Produktion: Karin Driesen, Köln
Umschlaggestaltung: Karen Montgomery und Michael Oreal
Satz: Reemers Publishing Services GmbH, Krefeld, www.reemers.de,
Druck: fgb freiburger graphische betriebe; www.fgb.de
ISBN: 978-3-86899-958-7
Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.
Für Menka,
meine geliebte Frau und
beste Freundin.
Deine Unterstützung und
deine Ermutigung sorgen
dafür, dass unser Leben
Spaß macht und Sinn hat.
Für
Aditya und Mihir,
meine zwei fröhlichen
Jungs, die mit mir spielen
und mich aktiv halten.
Inhalt
Vorwort ........................................................................
IX
1
Java Platform, Enterprise Edition .....................................
Einführung .................................................................
Deliverables ................................................................
Was ist neu in Java EE 6 ..................................................
1
Managed Beans ..........................................................
Ein Managed Bean definieren und einsetzen ............................
Lifecycle Callback ..........................................................
13
Servlets ....................................................................
Servlets .....................................................................
Servletfilter .................................................................
Event Listener ..............................................................
Asynchrone Unterstützung ................................................
Web Fragments ............................................................
Security .....................................................................
Resource Packaging........................................................
Error Mapping..............................................................
Umgang mit Multipart Requests ..........................................
17
Java Persistence API ....................................................
Entitäten ...................................................................
Persistence Unit, Persistence Context und Entity Manager ..............
Entitäten erstellen, lesen, aktualisieren und löschen ....................
Entitäten validieren ........................................................
Transaktionen und Locking................................................
Caching .....................................................................
41
2
3
4
1
4
8
14
15
17
23
25
29
31
33
36
37
38
41
45
48
52
55
56
| V
5
Enterprise JavaBeans .................................................... 59
Stateful Session Beans ..................................................... 60
Stateless Session Beans .................................................... 62
Singleton Session Beans.................................................... 64
Message-driven Beans ...................................................... 66
Portable Global JNDI Names ............................................... 68
Transaktionen ............................................................... 69
Asynchron ................................................................... 72
Timer ........................................................................ 73
Embeddable API ............................................................ 78
EJB.Lite ...................................................................... 79
6
Contexts and Dependency Injection ................................... 81
Injection Points ............................................................. 82
Qualifier und Alternative ................................................... 83
Producer und Disposer ..................................................... 86
Interceptor und Decorator .................................................. 88
Scopes und Kontexte ....................................................... 92
Stereotype................................................................... 94
Events ....................................................................... 96
Portable Erweiterungen .................................................... 98
7
JavaServer Faces ..........................................................
Facelets......................................................................
Ressourcen-Handling .......................................................
Composite Components ....................................................
Ajax..........................................................................
HTTP GET ....................................................................
Server und Client Extension Points ........................................
Navigationsregeln ..........................................................
101
SOAP-basierte Webservices..............................................
Webservice-Endpoints ......................................................
Provider-basierte Dynamic Endpoints......................................
Endpoint-basierte Endpoints ...............................................
Webservice-Client ...........................................................
Dispatch-basierter dynamischer Client.....................................
Handler ......................................................................
123
8
VI | Inhalt
102
106
107
112
115
117
120
125
128
130
131
134
136
9
RESTful Webservices.....................................................
Einfache RESTful Webservices .............................................
HTTP-Methoden binden ...................................................
Mehrere Ressourcendarstellungen ........................................
Requests an eine Ressource binden ......................................
Exception Mapping ........................................................
139
10 Java Message Service ...................................................
Eine Nachricht verschicken ................................................
Quality of Service ..........................................................
Eine Nachricht synchron empfangen .....................................
Eine Nachricht asynchron empfangen ....................................
Temporäre Ziele............................................................
151
11 Bean Validation ..........................................................
Eingebaute Constraints ....................................................
Einen eigenen Constraint definieren ......................................
Validierungsgruppen .......................................................
Integration mit JPA ........................................................
Integration mit JSF ........................................................
163
140
142
145
146
149
154
156
157
159
161
164
167
171
174
176
Anhang A: Entwicklungsumgebung und Deployment für Java EE 6 .. 179
Anhang B: Weitere Literatur ................................................ 181
Index ............................................................................ 185
Inhalt | VII
Vorwort
Die Java EE 6-Plattform hat die einfache Entwicklung mit Java im
Enterprise-Umfeld auf eine neue Ebene gehoben. Dieses Buch richtet sich an Leute, die einen schnellen Überblick über die Plattform
erhalten wollen, um danach die Grundlagen zu erlernen.
Das Buch bietet einen Überblick über die Schlüsselspezifikationen
der Java EE 6-Plattform (eine Spezifikation pro Kapitel). Die wichtigsten Konzepte der verschiedenen Spezifikationen werden erklärt
und Beispiele dazu vorgestellt. Sie müssen nichts über frühere Versionen der Plattform wissen. Allerdings ist ein grundlegendes Verständnis von Java notwendig, um den Code zu verstehen.
In diesem Buch genutzte Konventionen
Die folgenden typographischen Konventionen werden in diesem
Buch verwendet:
Kursiv
Steht für neue Begriffe, URLs, E-Mail-Adressen, Dateinamen
und Dateierweiterungen.
Nichtproportionalschrift
Wird für Programmcode genutzt – auch innerhalb von Fließtext
–, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Kursive Nichtproportionalschrift
Zeigt Text an, der durch eigene Werte oder kontextabhängige
Werte ersetzt werden sollte.
| IX
Danksagungen
Dieses Buch wäre nicht möglich geworden ohne die Unterstützung
von sehr vielen Leuten.
Zu allererst bedanke ich mich bei O’Reilly für das Vertrauen in mich
und für die Möglichkeit, dieses Buch zu schreiben. Ihr Team hat
mich beim Schreiben, Überarbeiten, Korrekturlesen und Veröffentlichen exzellent unterstützt.
Bei O’Reilly hat mir Michael Loukides geholfen, die Grundlagen für
das Buch zu legen. Meghan Blanchette war in allen Phasen der
Entstehung eine außerordentlich große Hilfe, indem sie den Text
schon zwischendurch begutachtete, Feedback zur Darstellung gab,
Fachlektoren organisierte und mich bei Bedarf mit den richtigen
Ansprechpartnern im Team zusammenbrachte. Jessica Hosman hat
mir beim Einstieg in das Autorenleben geholfen und mich weiter
begleitet.
Emily Quill und Kristen Borg haben beim Lektorieren geholfen und
sichergestellt, dass auch die Kleinigkeiten stimmen. Vielen Dank
auch an die anderen Mitglieder des O’Reilly-Teams, mit denen ich
nicht direkt zu tun hatte, die aber auch zum Gelingen des Buchs
beigetragen haben.
Das Korrekturlesen und das Fachlektorat wurden von Markus Eisele
(@myfear, http://blog.eisele.net), John Yeary (@jyeary, http://javaevangelist.blogspot.com) und Bert Ertman (@BertErtman, http://bertertman.wordpress.com) vorgenommen, so dass sichergestellt ist, dass
die entscheidenden Dinge auch richtig dargestellt sind. Ihre umfangreiche Erfahrung und ihr Wissen haben sich an der Tiefe ihrer Kommentare gezeigt.
Ich bin Entwicklern auf der ganzen Welt für die zahlreichen Diskussionen dankbar, die mein Verständnis der Technologie verbessert haben. Vielen Dank meinen Kollegen bei Oracle und den JSR
Specification Leads, die mir die Anwendungsfälle der verschiedenen
Technologien erklärt haben. Und vielen Dank an jeden anderen in
meinem Leben, der mir die nötigen Pausen von Schreiben verschafft
hat.
X | Vorwort
KAPITEL 1
Java Platform,
Enterprise Edition
Einführung
Die Java Platform, Enterprise Edition (Java EE) bietet eine auf
Standards aufbauende Plattform für das Entwickeln von Web- und
Enterprise-Anwendungen. Diese Applikationen sind im Allgemeinen als Multitier-Anwendungen entworfen – mit einer Frontend-Schicht bestehend aus Web-Frameworks, einer MiddlewareSchicht, die sich um die Sicherheit und Transaktionen kümmert,
und einer Backend-Schicht, die die Verbindung zu einer Datenbank
oder einem Legacy-System umsetzt. Die Java EE Platform definiert
APIs für die verschiedenen Komponenten in jeder Schicht und
bietet dazu weitere Dienste an, zum Beispiel Namensräume, Einbinden und Ressourcenverwaltung, die für die gesamte Plattform
genutzt werden können. Jede Komponente ist in einer eigenen Spezifikation definiert, die auch die API, Javadocs und das erwartete
Verhalten beschreibt.
Die Java Platform, Enterprise Edition 6 (Java EE 6) wurde im Dezember 2009 veröffentlicht. Sie bietet einen einfachen, leicht zu
verwendenden Stack für das Bauen solcher Anwendungen. In der
älteren Version der Plattform (Java EE 5) gab es die ersten Schritte
für eine vereinfachte Entwicklung. Die Java EE 6 Platform sorgt für
eine noch bessere Produktivität und bietet viel mehr Funktionalität.
| 1
Die drei wichtigsten Ziele der Plattform sind folgende:
Einfache Anwendung
Die Java EE 6 Platform vereinfacht die Entwicklung erneut
drastisch, indem sie sehr oft Konvention statt Konfiguration
einsetzt und auf Annotationen für ein Plain Old Java Object
(POJO) zurückgreift. Indem Sie ein POJO um @Stateless,
@Stateful oder @Singleton ergänzen, machen Sie es zu einem
Enterprise JavaBean. Zudem lässt sich dies einfach in einer
WAR-Datei verpacken, statt eine Spezialvariante von JAR oder
EAR zu verwenden. Servlets sind ebenfalls POJOs, versehen mit
der Annotation @WebServlet. Deployment Descriptors wie
web.xml und faces-config.xml sind in den meisten Fällen optional – die Informationen, die im Allgemeinen in ihnen abgelegt sind, finden sich nun in Annotationen. Es gibt Standardregeln, wie man von einer JSF-Seite zu einer anderen navigiert.
Um ein POJO als REST-Webservice zu veröffentlichen, muss
man nur die Annotation @Path ergänzen.
Indem die Deployment Descriptors optional wurden, Konvention der Konfiguration vorgezogen und stark auf Annontationen aufgebaut wurde, lässt sich die Java EE 6 Platform einfacher
verwenden und es muss insgesamt auch weniger geschrieben
werden.
Leichtgewichtigkeit
Es gibt für die Java EE 6 Platform 31 Komponentenspezifikationen, die Sie im Anhang EE.6 der Plattformspezifikation finden.
Zu diesen Komponenten gehören Enterprise JavaBeans (EJB),
Servlets, JavaServer Faces (JSF), Java API for RESTful Web
Services (JAX-RS) und viele weitere. Für den Bau einer typischen Enterprise-Anwendung werden Sie nicht unbedingt alle
benötigen. Zudem waren manche der Technologien wie Java
API for XML Registries (JAXR) oder Java API for XML-based
RPC (JAX-RPC) zwar wichtig, als sie in die Plattform eingebracht wurden. Aber nun wurden sie durch bessere Komponenten ersetzt, zum Beispiel Java API for XML Web Services (JAXWS), oder sind nicht mehr im Einsatz.
2 | Kapitel 1: Java Platform, Enterprise Edition
Die Java SE Expert Group hat einen zweistufigen Prozess
definiert, mit dem Features von der Plattform genommen wurden. In diesem Prozess – als Pruning bezeichnet – wird ein
Feature in einem Release als optional gekennzeichnet (proposed
optional). In einem folgenden Release wird dann entschieden,
das Feature tatsächlich zu entfernen, es als erforderliche Komponente beizubehalten oder es im Status proposed removal zu
belassen. Die Java EE Expert Group hat einige Features mit
diesem Prozess behandelt. Das ist wie das Beschneiden eines
Rosenstrauchs im Frühjahr, damit neue Blüten wachsen können: Durch das Pruning von ungenutzten Features wird sichergestellt, dass trotz Hinzufügen neuer Features die Plattform
einfach und leichtgewichtig bleibt.
Die Java EE Platform führt auch den Begriff des Profils ein. Ein
Profil ist eine Konfiguration auf der Plattform, die an eine
bestimmte Klasse von Anwendungen angepasst ist. Dabei kann
es sich um eine Unter- oder Obermenge der Technologien auf
der Plattform handeln. Das Java EE 6 Web Profile ist als eigenständige Spezifikation für die Plattform definiert, wobei es sich
um eine Untermenge der Technologien der Plattform handelt.
Es ist für die Entwicklung moderner Webanwendungen angepasst. Damit fällt der »One Size Fits All«-Ansatz früherer Releases weg. Und auch wenn es sich »nur« um eine Untermenge
handelt, ist diese doch so umfassend, dass ein Großteil der
Standard-APIs enthalten ist und ohne Anpassungen viele unterschiedliche Web-Anwendungen damit geschrieben werden
können. Das Webprofil ermöglicht es dem Entwickler, WebAnwendungen schnell bauen zu können. Zudem wird verhindert, dass immer mehr eigene Web-Stacks entstehen, welche in
Bezug auf Wartungsfragen nur von Nachteil sein können. Weitere Profile können definiert werden, indem man dem Java
Community Process (JCP) folgt.
Durch Pruning und Web-Profile bleibt die Java EE 6 Platform
also leichtgewichtig und gut wartbar.
Erweiterbarkeit
Die Plattform bietet eine umfangreiche Sammlung an Funktionen an, um Enterprise-Anwendungen zu erstellen. Trotzdem
Einführung | 3
wird häufig auf Third-Party-Frameworks zurückgegriffen, um
Funktionalität zu ersetzen oder zu ergänzen. Diese Frameworks
müssen über einen ServletListener, einen ServletFilter oder
eine ähnliche Komponente registriert werden, damit die Laufzeitumgebung sie erkennen kann. Die Servlet-Spezifikation definiert einen Web Fragment-Mechanismus, über den diese Einstiegspunkte in das Framework in der Framework-Bibliothek
definiert werden. Die Servlet-Container registrieren dann das
Framework, so dass sich der Entwickler nicht darum kümmern
muss. So können die Frameworks wie ein integraler Bestandteil
der Plattform behandelt werden.
Zusätzlich definiert die Contexts and Dependency Injection
(CDI) Specification einen portablen Erweiterungsmechanismus,
mit dem Sie die Plattform in unterschiedlicher Art und Weise
ausbauen können – zum Beispiel durch das Bereitstellen bestimmter, vordefinierter Scopes. Ein neuer Scope kann dadurch
mit einem beliebigen Java EE 6-kompatiblen Anwendungsserver einfach definiert und eingebunden werden.
Spezifikationen wie CDI, JavaServer Faces 2, Java API for RESTful
Services, Java Persistence API 2 und Servlets 3 sorgen dafür, dass die
Java EE 6 Platform noch leistungsfähiger ist. Dieses Buch bietet
einen Überblick über die wichtigsten Technologien, die auf der
Plattform eingesetzt werden, sowie leicht verständliche Codebeispiele, mit denen die Verbesserungen von Java EE 6 erläutert werden.
Deliverables
Die Java EE 6 Platform wurde als Java Specification Request 316
bzw. JSR 316 entwickelt (http://jcp.org/en/jsr/detail?id=316), wobei
dem Java Community Process (JCP) 2.7 gefolgt wurde. Der JCP
definiert drei wichtige Deliverables für jeden JSR:
Spezifikation
Ein formales Dokument, das die vorgeschlagene Komponente
und ihre Features beschreibt.
4 | Kapitel 1: Java Platform, Enterprise Edition
Reference Implementation (RI)
Die binäre Implementierung der vorgeschlagenen Spezifikation.
Die RI hilft dabei, sicherzustellen, dass die vorgeschlagenen Spezifikationen in Binärform implementiert werden können. Zudem
erhält der Spezifikationsprozess so konstant Rückmeldung.
Technology Compliance Kit (TCK)
Eine Sammlung von Tests, die sicherstellen, dass die RI zur
Spezifikation passt. So können mehrere Hersteller konforme
Implementierungen liefern.
Java EE 6 besteht aus der Plattform-Spezifikation, die die Anforderungen definiert. Zudem enthält sie folgende Komponenten-Spezifikationen:
Web-Technologien
– JSR 45: Debugging Support for Other Languages
– JSR 52: Standard Tag Library for JavaServer Pages (JSTL)1.2
– JSR 245: JavaServer Pages (JSP) 2.2 and Expression
Language (EL) 1.2
– JSR 314: JavaServer Faces (JSF) 2.0
– JSR 315: Servlet 3.0
Enterprise-Technologien
– JSR 250: Common Annotations for the Java Platform 1.1
–
JSR 299: Contexts and Dependency Injection (CDI) for
the Java EE Platform 1.0
–
JSR 303: Bean Validation 1.0
–
JSR 316: Managed Beans 1.0
–
JSR 317: Java Persistence API (JPA) 2.0
–
JSR 318: Enterprise JavaBeans (EJB) 3.1
–
JSR 318: Interceptors 1.1
–
JSR 322: Java EE Connector Architecture 1.6
–
JSR 330: Dependency Injection for Java 1.0
–
JSR 907: Java Transaction API ( JTA) 1.1
–
JSR 914: Java Message Server (JMS) 1.1
–
JSR 919: JavaMail 1.4
Deliverables | 5
Webservice-Technologien
– JSR 67: Java APIs for XML Messaging (JAXM) 1.3
– JSR 93: Java API for XML Registries (JAXR) 1.0
– JSR 101: Java API for XML-based RPC (JAX- RPC) 1.1
– JSR 109: Implementing Enterprise Web Services 1.3
– JSR 173: Streaming API for XML (StAX) 1.0
– JSR 181: Web Services Metadata for the Java Platform 2.0
– JSR 222: Java Architecture for XML Binding (JAXB) 2.2
– JSR 224: Java API for XML Web Services (JAX- WS) 2.2
– JSR 311: Java API for RESTful Web Services (JAX-RS) 1.1
Verwaltungs- und Sicherheitstechnologien
– JSR 77: J2EE Management API 1.1
– JSR 88: Java Platform EE Application Deployment API 1.2
– JSR 115: Java Authorization Contract and Containers
(JACC) 1.3
– JSR 196: Java Authentication Service Provider Interface for
Containers (JASPIC) 1.0
Die einzelnen Komponeten arbeiten zusammen, um einen kombinierten Stack bereitzustellen (siehe Abbildung 1-1).
CDI
Extensions
Web
Fragments
JAX-RS
JAX-WS
JSP
EL
JSF
CDI
Interceptors
Common Annotations
Managed Beans
JPA
EJB
JTA
Abbildung 1-1: Java EE 6-Architektur
6 | Kapitel 1: Java Platform, Enterprise Edition
JMS
Bean Validation
Servlets
Was ist in Abbildung 1-1 zu sehen?
• JPA, JTA und JMS stellen die grundlegenden Dienste bereit,
wie zum Beispiel Datenbankzugriff, Transaktionen und Messaging.
• Managed Beans und EJB liefern ein vereinfachtes Programmiermodell, das POJOs nutzt, um auf die grundlegenden
Dienste zugreifen zu können.
• CDI, Interceptors und Common Annotations bieten Konzepte, die sich auf eine Vielzahl von Komponenten anwenden
lassen, wie zum Beispiel typsichere Dependency Injection, das
Ansprechen von Cross-Cutting Concerns über Interceptors
und eine gemeinsame Menge von Annotationen.
• CDI Extensions ermöglicht Ihnen, die Plattform standardisiert
über die vorhandenen Features hinaus zu erweitern.
• Webservices verwenden JAX-RS und JAX-WS. JSF, JSP und
EL definieren das Programmiermodell für Webanwendungen.
Web Fragments erlauben eine sehr natürlich umgesetzte automatische Registrierung von Web-Frameworks von Fremdfirmen.
• Bean Validation ermöglicht ein Standardvorgehen zum Deklarieren von Constraints und zum Validieren in verschiedenen
Technologien.
JAX-RPC (JSR 101), JAXR ( JSR 93), EJB Entity Beans (Teil von JSR
153) und Java EE Application Deployment (JSR 88) sind in dieser
Version der Plattform für das Pruning markiert.
Die RI von Java EE 6 wird in der GlassFish-Community gebaut. Die
GlassFish Server Open Source Edition bietet einen vollständig Java
EE 6-konformen, freien Open Source-Anwendungsserver. Sie ist
auch in einer Web Profile-Distribution verfügbar und kann unter
http://glassfish.org heruntergeladen werden. Der Anwendungsserver
lässt sich einfach einsetzen (ZIP-Installer und NetBeans/Eclipse/
IntelliJ-Integration), ist leichtgewichtig (die Download-Größe beginnt bei 30 MByte und der Platzverbrauch auf der Festplatte und
im Speicher ist gering) und modular (OSGi-basiert, Container starten bei Bedarf). Es gibt auch ein hochverfügbares Clustering mit
Deliverables | 7
zentraler Administration per CLI, einer webbasierten Administrationskonsole und REST-Management/Monitoring-APIs. Der Oracle
GlassFish Server ist Oracles kommerzielle GlassFish-Serverdistribution, die unter http://oracle.com/goto/glassfish heruntergeladen
werden kann. Während diese Zeilen entstehen, gibt es 17 Java
EE 6-konforme Anwendungsserver. Die vollständige Liste finden
Sie unter http://www.oracle.com/technetwork/java/javaee/overview/
compatibility-jsp-136984.html.
Das TCK steht allen Java EE-Lizenznehmern zur Verfügung, um
ihre Implementierungen zu testen.
Was ist neu in Java EE 6
Die Plattform wurde um ein paar neue Spezifikationen erweitert,
um ihre Funktionalität und Reichhaltigkeit zu erhöhen. Eine Reihe
bestehender Komponenten-Spezifikationen wurden überarbeitet,
um sie einfacher einsetzbar zu machen.
Die wichtigsten Features der zentralen Spezifikationen sind hier beschrieben:
Managed Beans
– POJO-basierte verwaltete Komponenten
– Eine gemeinsame Sammlung an Diensten, zum Beispiel eine
Lifecycle Resource Injection, Callbacks und Interceptors.
Enterprise JavaBeans
– Ein EJB kann mit einer einzelnen Quelldatei pro Bean
erzeugt und mit @Stateless, @Stateful oder @Singleton annotiert werden.
– EJBs können für den lokalen Zugriff in einem .war verpackt
werden, wobei @Local und ejb-jar für den lokalen und
Remote Access genutzt werden.
– EJBs lassen sich über einen portablen, globalen JNDINamen ansprechen.
– Eine Methode eines Session-Bean kann so gekennzeichnet
werden, dass es asynchron aufgerufen wird. Diese Metho-
8 | Kapitel 1: Java Platform, Enterprise Edition
den erlauben dem Client, den Rückgabewert später abzurufen oder das Fire-and-Forget-Muster zu nutzen.
– Zeitabhängige Events können mit einer cron-ähnlichen
Syntax eingeplant werden, indem @Schedule für Bean-Methoden definiert wird.
– Die Embeddable EJB API ermöglicht es Client-Code und
seinen zugehörigen Enterprise Beans, innerhalb der gleichen JVM und des gleichen Class Loaders zu laufen.
Servlets
– Annotationsgesteuerte Servlets (@WebServlet), Filter (@WebFilter) und Listener (@WebListener). Der Descriptor
web.xml wird in den meisten Fällen optional.
– Servlets, Filter und Listener können per Programm über
ServletContext registriert werden.
– Asynchrone Servlets ermöglichen es dem Control (oder
Thread), zum Container zurückzukehren, um andere Aufgaben zu erledigen, während darauf gewartet wird, dass ein
lange laufender Prozess endet.
– Framework-Bibliotheken können modular über web-fragment.xml integriert werden.
– Die
Servlet-Sicherheit lässt sich neben <securityconstraint> auch über @Servlet Security, @HttpConstraint
und @HttpMethodConstraint definieren.
Java API for RESTful Web Services
– POJO-basierte und annotationsgesteuerte Möglichkeit,
REST-Webservices zu veröffentlichen
– Ein Standard-Set von HTTP-Methoden wie GET, POST,
PUT und DELETE wird unterstützt.
– Jede Ressource kann in mehreren Formaten ausgegeben
werden; es werden auch eigene Typen unterstützt.
– Clientseitige Content Negotiation wird durch den HTTPHeader Accept: unterstützt.
Was ist neu in Java EE 6 | 9
Herunterladen