Enterprise JavaBeans 3.1

Java Persistence API, Criteria API, XML Deployment Descriptor, Transaktionsschutz, Security, Webservices Außerdem zum Thema bei mitp: Uwe Rozanski ...
Author: Hedwig Lange
5 downloads 0 Views 1MB Size
Java Persistence API, Criteria API, XML Deployment Descriptor, Transaktionsschutz, Security, Webservices

Außerdem zum Thema bei mitp:

Uwe Rozanski

Rozanski

Aufbau, Anwendung und Einsatz aller Beanarten

• Einrichten der Entwicklungsumgebung mit Eclipse und JBoss

ISBN 978-3-8266-5603-3

• EntityManager

• Arbeiten mit und Einsatz Uwe Rozanski erläutert ausführlich den Aufbau und die Anwendung jeder einzelnen Beanart. von Entity Beans • Annotations für Entity Beans • Beziehungen zwischen Entity Beans • Tabellenstrukturen und Vererbungen

Jedes Kapitel enthält zahlreiche Beispiele, die den konkreten Einsatz der Beans anhand von Sourcecode aufzeigen. In einem großen Teil des Buches wird eine Kundenverwaltung aufgebaut und weiterentwickelt, um die praktische Verwendung der einzelnen Beanarten konkret aufzuzeigen.

ISBN 978-3-8266-1780-5

Zusätzlich werden auch so wichtige Themen behandelt wie der Transaktionsschutz, die Verwendung von XML Deployment Descriptoren, Transaktionen Security und Webservices. Des Weiteren geht der XML Mapping für Entities Autor in einzelnen Abschnitten auf Unterschiede Interceptors und Entity zu EJB 2.1 und EJB 3.0 ein. Ein vollständiges BeiListener spiel eines Webshops rundet das Buch ab. Hier finSecurity den Sie auch wichtige Hinweise für die Erstellung Webservices größerer Projekte.

• Abfragen und EJB QL • Criteria API • • • • •

• Beispiel Webshop

Mit diesem Buch wird es Ihnen gelingen, die kompliziert wirkende EJB-Welt zu verstehen und EJBs Auf der CD: effektiv für Ihre Anwendungen einzusetzen. Das Java 6.0, Eclipse, JBoss, Buch ist so aufgebaut, dass es sich sowohl zum alle Beispiele aus dem Buch Selbststudium als auch als Seminarunterlage eig(Beispiele auch auf net. Durch den strukturierten Aufbau ist es ebenwww.mitp.de/9066 falls langfristig als Referenz einsetzbar.

ISBN 978-3-8266-5601-9

zum kostenlosen Download)

978-3-8266-9066-2_umschlag06.indd 1

Enterprise JavaBeans 3.1 Einstieg, Umstieg, Praxis und Referenz

ISBN ISBN978-3-8266-9066-2 978-3-8266-9066-2

(D) € 39,95

Über den Autor: Uwe Rozanski hält seit 1988 Seminare zu Großrechner- und Client/Server-Systemen, hat in zahlreichen IT-Projekten umfangreiche Erfahrungen gesammelt und bereits Bücher zu Cobol, Silverlight und EJB 3.0 geschrieben.

Einstieg, Umstieg, Praxis und Referenz

Der Einsatz von Enterprise JavaBeans ist bei der Programmierung von serverseitigen Unternehmensanwendungen Standard. Dieses Buch behandelt den neuesten Entwicklungsstand der Enterprise JavaBeans und die Java Persistence API. Es • Clientprogrammierung mit JSP bietet eine übersichtliche Darstellung der komplexen EJB-Welt und zeigt anhand zahlreicher prak• Stateless, Stateful und Singleton Session Beans tischer Beispiele, Übungsaufgaben und Musterlösungen, wie Sie effizient und erfolgreich EJBs • Message-Driven Beans programmieren. Gleich zu Anfang wird eine Ent• Timer Service wicklungsumgebung mit Eclipse und JBoss aufge• Entity Beans und die baut, damit die Beispiele in der Praxis nachvollzoPersistenzschicht gen werden können.

Aus dem Inhalt:

Enterprise JavaBeans 3.1

Praxisbeispiele und Übungen mit Musterlösungen zu jedem Kapitel, vollständiges Beispiel eines Webshops

inklusive CD-ROM

28.02.2011 14:46:12

9066.book Seite 21 Dienstag, 1. März 2011 4:41 16

Einleitung Zielgruppe Wer die Programmierung von Enterprise JavaBeans (EJB) für den Einsatz in einem Applikationsserver von Grund auf erlernen oder sich nur auf den neuesten Stand der Technik bringen will, ist hier genau richtig. Dieses Buch beschäftigt sich mit EJB in der Version 3.1 und erläutert Kapitel für Kapitel logisch aufeinander aufbauend jede einzelne Beanart. Leser, die das erste Mal mit dieser Technologie in Berührung kommen, finden neben der rein technischen Betrachtungsweise wichtige Hinweise auf Einsatzgebiete der einzelnen Komponenten, aber auch Informationen darüber, wie man eine serverseitige Anwendung besser nicht programmieren sollte. Für erfahrene Leser wird in einzelnen Abschnitten auf die Unterschiede zu EJB 2.1 eingegangen, damit ihnen der Einstieg in den aktuellen Standard leichter fällt. Vor allem die Persistenzschicht von EJB wurde radikal geändert. Hier ist eigentlich kein Stein auf dem anderen geblieben. Ein Vergleich zu EJB 2.1 ist hier kaum möglich. Dennoch finden Sie viele Hinweise auf Ähnlichkeiten und konkrete Vorschläge, wie man mit dem neuen Standard ebenso aufgeräumt, modular und flexibel programmieren kann wie früher. In den Kapiteln finden Sie zu jedem Aspekt Beispiele, die in Java programmiert sind. Daher kann die Kenntnis dieser Programmiersprache durchaus als Voraussetzung definiert werden, die ein Leser mitbringen muss, wenn er den maximalen Nutzen aus diesem Buch ziehen will. Die überwiegende Menge aller Oberflächen wurde mit Hilfe von JSP (JavaServer Pages) programmiert. Auch diese beinhalten viel Java-Quellcode, für den Rest gibt es ein eigenes Kapitel, das in die JSP-Programmierung einführt. Alle Beispiele und Übungen sind auf der beiliegenden CD enthalten. Dort finden Sie auch die Entwicklungsumgebung Eclipse und den Applikationsserver JBoss. Die Bedienung beider Werkzeuge wird ausführlich erklärt, bestehende Erfahrungen mit Eclipse sind für den Leser in jedem Fall von Vorteil, aber nicht zwingend erforderlich. Alle Beispiele sind in Java Version 6 geschrieben. Bei der Zusammenstellung seiner Entwicklungsumgebung muss man darauf achten, dass alle Komponenten zusammenspielen. Der Applikationsserver JBoss kommt hier in der Version 6.0.0 zum Einsatz.

© des Titels »Enterprise JavaBeans 3.1« (ISBN 978-3-8266-9066-2) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9066

21

9066.book Seite 22 Dienstag, 1. März 2011 4:41 16

Einleitung

Da der Java-EE-Standard sehr viel Gebrauch von Annotations macht, die es erst seit Java 5 gibt, wurde gleich im ersten Kapitel ein Abschnitt diesem Thema gewidmet. Auch auf den Einsatz von Generics wird kurz eingegangen, da sie in dem einen oder anderen Beispiel Anwendung finden. Dem sollte man aber nicht zu viel Gewicht beimessen, es werden lediglich einfache typisierte Container benutzt. Der ideale Leser dieses Buches kann in Java programmieren und hat Erfahrungen mit der Entwicklungsumgebung Eclipse. Vorkenntnisse in EJB sind, wie erwähnt, nicht erforderlich, aber auch nicht hinderlich. Man bekommt alles mitgeliefert und erklärt, was für die Programmierung einer EJB-Anwendung notwendig ist. Als Applikationsserver wird JBoss benutzt, weil dieser frei zugänglich ist. Besonders wichtig ist die Tatsache, dass alle Beispiele so realisiert sind, dass sie auch auf anderen Applikationsservern lauffähig sind, die den Standard Java EE 6 unterstützen.

Neu in EJB 3.1 In diesem Abschnitt sind die wichtigsten Neuerungen des EJB-Standards 3.1 gegenüber der Vorgängerversion 3.0 kurz erklärt. Daneben hat es noch viele kleinere Erweiterungen gegeben, die alle im Rahmen dieses Buches berücksichtigt sind. Wenn Sie noch keine Erfahrungen mit der Programmierung von EJBAnwendungen haben, sollten Sie diesen Abschnitt überspringen, da Ihnen alles Notwendige in den einzelnen Kapiteln erklärt wird.

Local-Client-View ohne Interface Will man sich innerhalb des Applikationsservers auf eine andere Session Bean beziehen, dann macht man das typischerweise über deren Local-Interface. Diese Vorgehensweise wird auch weiterhin unterstützt. Wer seine Bean aber mit der Annotation @LocalBean versieht, benötigt kein zusätzliches Interface mehr. Ihm stehen dann alle als public deklarierten Methoden der Bean als Business-Methoden zur Verfügung.

Komplettes Deployment mit einer WAR-Datei Seit EJB 3.1 ist es möglich, in eine WAR-Datei auch Session Beans und Entity Beans zu packen und diese dann gleichzeitig mit dem Webauftritt zu deployen. Dieses Vorgehen bietet sich an, wenn der EJB-Teil nicht so umfangreich ist.

Embedded-EJB – EJB Light Jeder Hersteller eines Applikationsservers ist jetzt verpflichtet, eine Light-Variante seines Servers zur Verfügung zu stellen, die dann fest mit einer klassischen Client-Anwendung verbunden werden kann. Durch das Starten dieser Anwendung wird dann gleichzeitig auch der Server gestartet. Endet das Programm, endet auch

22

© des Titels »Enterprise JavaBeans 3.1« (ISBN 978-3-8266-9066-2) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9066

9066.book Seite 23 Dienstag, 1. März 2011 4:41 16

Neu in EJB 3.1

der Server. Dies erleichtert zum einen das Testen, bietet sich aber eventuell auch als Installationsvariante an, wenn das gesamte Paket von einem Kunden auf einem Laptop oder Ähnlichem betrieben werden soll und es sich dann um eine Single-User-Anwendung handelt.

Singleton Session Beans Bei dieser neuen Beanart ist sichergestellt, dass der Applikationsserver pro VM maximal eine Instanz der zugehörigen Beanklasse erstellt und alle Clients sich diese teilen. Damit hat man beispielsweise die Möglichkeit, zentrale Informationen für alle Clients zu hinterlegen. Durch entsprechende Annotations kann man sehr genau die konkurrierenden Zugriffe auf die verschiedenen Business-Methoden dieser Bean steuern. Man muss sich aber darüber im Klaren sein, dass es beim Einsatz eines Clusters doch wieder so sein wird, dass es pro VM eine eigene Instanz dieser Bean gibt.

Automatische Timer Seit EJB 3.1 ist es mit der Annotation @Schedule möglich, automatische Timer zu definieren, die ohne weiteres Zutun eines Clients direkt vom Applikationsserver gestartet werden. Dabei kann man vorgeben, dass sie in einem bestimmten Intervall oder beispielsweise werktags zu einer bestimmten Uhrzeit ausgelöst werden sollen.

Asynchrone Methodenaufrufe Ruft ein Client eine Business-Methode einer Session Bean auf, dann muss er warten, bis diese beendet ist, um mit seiner eigenen Logik fortfahren zu können. Bei den neu eingeführten asynchronen Methoden ist das nicht mehr so. Der Client bekommt sofort die Steuerung zurück und kann dann nach einer bestimmten Zeitspanne sogar dem Applikationsserver mitteilen, dass die länger laufende serverseitige Methode sich vorzeitig beenden soll. Für Stateful Session Beans ist jedoch sichergestellt, dass gleichzeitig maximal eine Methode an ihr ausgeführt werden kann. Würde ein Client, der gerade eine länger laufende asynchrone Methode aufgerufen hat, sofort eine weitere Methode derselben Bean benutzen wollen, dann muss dieser zweite Aufruf solange warten, bis der erste abgearbeitet ist.

Standardisierte JNDI-Namen Wer seine Anwendung unabhängig von einem bestimmten Hersteller eines Applikationsservers schreiben will, musste sich bisher immer mit dem unterschiedlichen Aufbau der JNDI-Namen dieser Hersteller beschäftigen. Damit ist seit EJB 3.1 Schluss. Endlich ist genau festgelegt, wie diese Namen aufgebaut sein müssen.

© des Titels »Enterprise JavaBeans 3.1« (ISBN 978-3-8266-9066-2) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9066

23

9066.book Seite 24 Dienstag, 1. März 2011 4:41 16

Einleitung

Criteria API Nicht alle SQL-Abfragen lassen sich mit Hilfe von NamedQueries fest definieren, weil sich ihr struktureller Aufbau erst zur Laufzeit der Anwendung ergibt. War man bisher darauf angewiesen, sie mit Hilfe einzelner, aneinander gehängter Zeichenketten zu erzeugen, hat man jetzt eine ganze Fülle von Klassen und Methoden zur Verfügung, die die Erstellung der eigentlichen Abfrage übernehmen. Damit wird ein großes Fehlerpotential ausgeschlossen, sowohl wegen der Vermeidung von Syntaxfehlern als auch wegen der zur Verfügung stehenden Typsicherheit der Parameter und Vergleiche.

Inhalt des Buches Die Kapitel des vorliegenden Buches sind thematisch geordnet und in sich abgeschlossen. Das erste Kapitel gibt eine allgemeine Einführung in die Programmierung einer EJB-Anwendung anhand eines konkreten, ablauffähigen Beispiels und richtet sich vor allem an die Leser, die sich bisher noch nicht mit dieser Technik beschäftigt haben. Der Abschnitt über Annotations könnte aber auch für erfahrene EJB-Programmierer interessant sein, die sich noch nicht mit Java 6 beschäftigt haben. Gleich das zweite Kapitel zeigt dann, wie die Entwicklungsumgebung aufgebaut werden kann, um die Beispiele auch in der Praxis nachzuvollziehen und durch eigene Änderungen noch besser zu verstehen. Wer sich zunächst einmal einen theoretischen Überblick verschaffen will, kann dieses Kapitel überspringen. Ab dem dritten Kapitel wird dann eine Beanart nach der anderen ausführlich und auch immer wieder an Beispielen erklärt, wobei sich ein Kapitel ausschließlich mit der Programmierung von JSP-Seiten für browserbasierte Oberflächen beschäftigt. Auch JSP ist Teil von Java EE 6 und wird in eigentlich allen weiteren Kapiteln benutzt. Danach wird sehr ausführlich auf Entity Beans eingegangen, über die man die Persistenzschicht einer Anwendung in einem Applikationsserver programmiert. Besonders die heute sehr leistungsstarke Abfragesprache EJB QL und die Anwendung der neuen Criteria-API wird ausführlich behandelt. Dem Leser wird eine kleine EJB-Anwendung auch im Quellcode zur Verfügung gestellt, mit der er eigene Abfragen testen kann, bevor er sie in seine Programme einbaut. Die nächsten Kapitel beschäftigen sich dann mit weiteren wichtigen Themen wie dem Transaktionsschutz, der Definition von Metadaten mit Hilfe der optionalen Deployment Descriptors, mit Security und Webservices. Abgerundet wird das Ganze mit einem kompletten Beispiel eines Webshops, in dem nochmals wichtige Bausteine der EJB-Programmierung im Zusammenspiel gesehen werden können. Hier finden Sie auch wichtige Hinweise für die Erstellung größerer Projekte.

24

© des Titels »Enterprise JavaBeans 3.1« (ISBN 978-3-8266-9066-2) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9066

9066.book Seite 25 Dienstag, 1. März 2011 4:41 16

Verwendung als Seminarunterlage

Besonders erwähnt werden muss das Kapitel über das Arbeiten mit Entity Beans, in dem aufgezeigt wird, wie man eine sinnvolle und sehr dynamische Form der Kommunikation zwischen Client und Server implementieren kann. Alle danach folgenden Beispiele verwenden diese Transportschicht, die beispielsweise den Client in die Lage versetzt, seine Eingabemasken generisch aufzubauen. Damit entkoppelt man die Programmierung grafischer Oberflächen, auf die dann fast völlig verzichtet werden kann, von der Anwendungslogik. Wird ein neues Attribut benötigt, erweitert man seine Datenbanktabelle und passt die Entity Bean und die fachliche Logik an. Die Oberflächen werden ganz automatisch reagieren, wenn sie dieses zusätzliche Feld in der dynamischen Transportschicht finden. Fast jedes Kapitel endet mit einer komplexeren Übung. Nach der Aufgabenstellung ist dann auch eine mögliche Lösung abgedruckt, anhand derer der Leser sofort überprüfen kann, ob seine Gedankengänge und Lösungsansätze korrekt waren, wobei es natürlich immer viele mögliche Wege zu einer guten Lösung gibt. Wer sich intensiv mit dem Thema beschäftigen will, ist aufgefordert, die eine oder andere Übung zunächst alleine zu versuchen und erst danach sein Ergebnis mit dem Vorschlag in dem Buch zu vergleichen. Wie bereits erwähnt, befinden sich auch alle Lösungen des Buches auf der beiliegenden CD.

Verwendung als Seminarunterlage Die Reihenfolge der Kapitel und die Tatsache, dass jedes Thema in sich abschließend behandelt ist, ermöglichen es, dass das vorliegende Buch auch als Begleitmaterial zu einem Seminar über das Thema EJB 3.1 Verwendung finden kann. Der Autor hat selbst eine langjährige Erfahrung als Seminarleiter und das Konzept zu dem Buch aus einem logischen Seminaraufbau abgeleitet. In dem ersten Kapitel werden die theoretischen Grundlagen zu EJB erklärt, die, wie alle anderen Kapitel auch, frei vorgetragen werden sollten. Damit der Zuhörer nicht den Faden verliert, bezieht man sich konkret auf die einzelnen Abbildungen und vor allem auf die abgedruckten Beispiele, indem man sie kurz durcharbeitet. Schon das nächste Kapitel dient dann dazu, die notwendige Entwicklungsumgebung zusammen mit den Teilnehmern einzurichten und ein erstes, sehr einfaches Beispiel lauffähig zu machen. Hat dies reibungslos funktioniert, lassen sich auch alle Übungen problemlos angehen. Wie bereits erwähnt, schließen viele Kapitel mit einer Übung ab und es macht durchaus Sinn, diese, wenn auch nicht alle, von den Teilnehmern versuchen zu lassen. Gerade die Tatsache, dass die Lösungen unmittelbar abgedruckt sind, gibt dem unerfahrenen Seminarbesucher eine gewisse Sicherheit und die Erfahrung hat gezeigt, dass es eigentlich keinen gibt, der die Lösungen nur abschreibt. Er wäre in einem Schreibmaschinenkurs besser aufgehoben.

© des Titels »Enterprise JavaBeans 3.1« (ISBN 978-3-8266-9066-2) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9066

25

9066.book Seite 26 Dienstag, 1. März 2011 4:41 16

Einleitung

Ein Buch als Schulungsunterlage hat für den Teilnehmer den großen Vorteil, dass er auch nach dem Seminar noch einmal das ein oder andere nachlesen kann, was klassische Handouts oft nicht bieten. Der Seminarleiter sollte aber nicht den Fehler begehen, große Teile des Buches einfach nur vorzulesen, seine Hörer werden es ihm nicht danken. Legt man den Schwerpunkt auf die praktische Arbeit, dann entspricht der Umfang dieses Buches einem fünftägigen Seminar, wobei man pro Tag eine bis maximal zwei Übungen von den Teilnehmern programmieren lassen sollte. Bei umfangreicheren Themen ist es auch sinnvoll, nur einzelne Klassen zur Ausarbeitung zu geben. Es bleibt nur noch, viel Spaß und Erfolg bei der Beschäftigung mit den Enterprise JavaBeans zu wünschen. Es ist innerhalb der Java-Welt die beste Technologie, um komplexe, unternehmensweite Anwendungen zu schreiben, mit der eine Vielzahl von Benutzern im Haus oder über das Internet gleichzeitig arbeiten kann.

Danksagung An dieser Stelle bedanke ich mich bei meiner Frau Silvia, die mich mit endloser Geduld und vielen richtigen Anstößen beim Schreiben dieses Buches begleitet hat. Auch bei meinen Kindern Ulrich und Vanessa will ich mich für die Zeit bedanken, die sie mir gelassen haben.

26

© des Titels »Enterprise JavaBeans 3.1« (ISBN 978-3-8266-9066-2) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9066