Achtung: Die überarbeitete 2. Auflage zu Enterprise JavaBeans 3.0 ist erschienen.
Nähere Informationen unter www.ejbbuch.de
|
Neben den Java-Quelltexten aus dem Buch enthält das Archiv auch Konfigurationen für die J2EE-Server JBOSS, Orion, Oracle (OC4J) und BEA Weblogic. Zum Kompilieren, Deployen und Redeployen der EJB-Komponenten sowie zum Start deren Test-Clients stehen Ant-Skripte zur Verfügung. Vorbereitungen Die Beispiele sind getestet und vorbereitet für JBOSS 3.0/3.01, Orion 1.5.4/1.6, Oracle OC4J 9.0.2/9.0.3 und BEA Weblogic 7.0. (Andere J2EE-Server können gemäß dem im Folgenden dargestellten Konfigurationsschema allerdings sehr einfach hinzugefügt werden.) Anforderungen Die Beispiele laufen grundsätzlich auf jedem J2EE-Server mit EJB 2.0-Unterstützung. Dies sind zur Zeit neben den oben aufgeführten etwa WebSphere 5 von IBM, Borland Enterprise Server 5, BeanTransactions 3.0 von Fujitsu-Siemens Computer. Weitere Informationen zu J2EE/EJB-Servern finden Sie auf www.ejbsig.de, www.j2ee-develop.de, www.theserverside.com und www.javaskyline.com/serv.html.
Neben einem J2EE-Server ist auch das Open-Source-Tool Ant (jakarta.apache.org/ant/) zu empfehlen, um die beigelegten Skripte nutzen zu können. Anpassen der Umgebung
Synposis der Aufrufe der Buildfiles ant -f build_XXX YYY-ZZZ
Ziele (Targets) der Buildfiles Im Folgenden werden die Befehlsklassen am Helloworld-Beispiel und für den JBOSS-Server dargestellt. Völlig äquivalent funktioniert dies auch für die anderen Beispiele und Serverprodukte.
Die Konfigurationsdateien für Ant liegen alle im Verzeichnis "./conf". Es umfasst drei generische Ant-Skript-Fragmente (die per "&ENTITY;" in das Ant-Skript eingefügt werden). Weiterhin gibt es hier für jeden J2EE-Server jeweils ein Unterverzeichnis, in dem sich spezifische Einstellungen und Ant-Targets finden, beispielsweise "./conf/weblogic". Das Verzeichnis "./source" ist das Quelltextverzeichnisses.
Die Pfadstruktur korrespondiert mit der Java-Package-Struktur der Beispiele:
"ejbbuch.helloworld" liegt etwa im Pfad "./source/ejbbuch/helloworld".
Alle diese Einstellungen finden sich unter ".conf/<J2EE-Server>/setup.xml". Dies umfasst zum Beispiel Usernamen/Passwort für den Deployment-Vorgang (Orion, OC4J), den Inhalt des Client-Classpath und Pfade in der Server-Installation. Die Details hängen vom J2EE-Server ab. In den Unterverzeichnissen ".conf/<J2EE-Server>/server-conf/" finden sich zudem Server-Konfigurationsdateien bzw. Auszüge davon, die Sie übernehmen können. So gibt es etwa die Datei ".conf/weblogic/server-conf/config.xml", deren Inhalt man in die config-xml-Datei des Weblogic-Servers übernehmen kann, um die serverseitigen Einstellungen (Datasources, JMS-Destinations etc.) passend für die Beispiele vorzubereiten. Weiterhin liegt in Abhängigkeit des J2EE-Servers auch die Datei "jndi.properties" in "./source/ejbbuch/<Beispiel>/conf/<J2EE-Server>". Darin sind für Orion und OC4J auch Username und Passwort angegeben, mit denen sich der Client authentifiziert. Im Folgenden werden die nötigen Konfigurationen und ggf. Einschränkungen bzgl. der verschiedenen J2EE-Server dargestellt. Dazu gehen wir kapitelweise die Beispiele durch. Hinweis zu den Datenbanken Für Beispiele, die auf eine Datenbank zugreifen, ist jeweils die
DDL-Anweisung angegeben, um die nötige Tabelle zu erzeugen. Dies
ist bei CMP-Entity Beans allerdings nur bei Weblogic nötig. Weiterhin werden Orion und JBOSS mit der Open-Source-Datenbank "HypersonicSQL" ausgeliefert, die auch als Standarddatenbank selektiert ist. Deshalb ist bei Orion und JBOSS praktisch keine Installation bzgl. der Datenbank zu treffen. Für Weblogic und Oracle OC4J sind exemplarische Konfigurationen mitgeliefert, um eine Oracle-Datenbank anzusprechen. Beispieldaten Zur Ausführung der folgenden Beispiele müssen die Datenbank-Tabellen nicht mit Daten vorinitialisiert werden. Die Beispiele , die auf die Datenbank zugreifen, erzeugen über den jeweiligen Testclient die nötigen Test-Daten durch Anlegen von bestimmten Entity-Objekten. Legende:
Ant-Buildfile: build_buch.xml DDL-Statement zum Erzeugen der verwendeten Datenbank-Tabelle:
Ant-Buildfile: build_helloworld.xml
Ant-Buildfile: build_warenkorb.xml
Ant-Buildfile: build_produkt.xml DDL-Statement zum Erzeugen der verwendeten Datenbank-Tabelle: Problem bei Oracle OC4J: Das Beispiel lässt
sich anscheinend nicht deployen. Es erscheint folgender Fehler:
Ant-Buildfile: build_kontakt.xml DDL-Statement zum Erzeugen der verwendeten Datenbank-Tabelle:
Ant-Buildfile: build_adresse.xml DDL-Statement zum Erzeugen der verwendeten Datenbank-Tabelle:
Ant-Buildfile: build_bestellwesen Dies ist ein komplexes und umfangreich kommentiertes Beispiel zu Container Managed Relationships und ejbSelect-Methoden: Das verwendete Beziehungsgeflecht der CMP-Entity Beans entspricht dem auf Seite 219 im Buch. Das Stateless Session-Bean "TestManager" demonstriert die Benutzung der Beans und ihrer Beziehungen (gesteuert von einem Testclient), wie in Kapitel 6.2 bis 6.4 im Buch dargestellt. DDL-Statements zum Erzeugen der verwendeten Datenbank-Tabellen Problem bei Oracle OC4J: Das Beispiel lässt
sich anscheinend nicht deployen. Dies liegt am selben Problem wie beim
Beispiel "Produkt" (Kapitel 6): die double/Double-Erkennung
bei Collection-wertigen ejbSelect-Methoden klappt nicht. Problem bei JBOSS: Mir ist es nicht gelungen,
das Beispiel mit JBOSS 3.0.0/3.0.1 zu deployen -- es kam dabei immer eine
NullPointerException. Mit der aktuellen Developer-Version 4.0.0alpha von
JBOSS, die man vom CVS-Server herunterladen kann, funktioniert das Beispiel
dagegen völlig problemlos.
Ant-Buildfile: build_kontoBMP.xml DDL-Statement zum Erzeugen der verwendeten Datenbank-Tabelle (sie
muss für alle J2EE-Server manuell angelegt werden):
Ant-Buildfile: build_newsticker.xml DDL-Statement zum Erzeugen der verwendeten Datenbank-Tabelle: Weitere Konfiguration für JBOSS:
In "<JBOSS_DIST>/server/default/deploy/jbossmq-destinations-service.xml"
muss folgender Eintrag hinzugefügt werden: Problem bei JBOSS: Mir ist es nicht gelungen,
eine "Durable"-Topic zu verwenden. Das Problem scheint wohl
die HypersonicSQL-Datenbank zu sein. Denn sie unterstützt nicht das
XA-Protokoll, das benötigt wird, wenn zwei oder mehrere Ressourcen
an einer Transaktion teilnehmen (intern wird dabei ein 2-Phasen-Commit-Protokoll
implementiert). Dies scheint aber nötig zu sein, wenn das Message-Driven
Bean mit einer vom Container gestarteten Transaktion aufgerufen wird und
dann ein CMP-Entity Bean aufruft (Datenbank als weitere Ressource). Der
Ausweg wäre a) explizit auf XA zu verzichten, oder b) eine XA-fähige
Datenbank bzw. DataSource zu verwenden, etwa Oracle, Interbase, PostgreSQL
etc. Problem bei Oracle OC4J 9.03: Mir ist es
nicht gelungen, das Beispiel zu deployen. Es kam stets die Fehlermeldung: Weitere Konfigurationen bei Orion:
Rechtliches Die Autoren des Buches, die Firma MGM EDV-Beratung GmbH und der Spektrum-Verlag übernehmen weder Garantie noch die juristische Verantwortung oder irgendeine Haftung für die Nutzung der zur Verfügung gestellten Beispiele und Informationen, für deren Wirtschaftlichkeit oder fehlerfreie Funktion für einen bestimmten Zweck. Ferner können die erwähnten Personen für Schäden, die auf einer Fehlfunktion von Programmen oder ähnliches zurückzuführen sind, nicht haftbar gemacht werden. Auch nicht für die Verletzung von Patent- und anderer Rechten Dritter, die daraus resultieren. Eine telefonische oder schriftliche Beratung durch den Verlag über den Einsatz der angegebenen Programme ist nicht möglich. Die Autoren des Buches, die Firma MGM EDV-Beratung GmbH und der Spektrum-Verlag übernehmen keine Gewähr dafür, dass die beschriebenen Programme frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnahmen, Handelsnamen, Warenbezeichnungen usw. auf diesen Web-Seiten und in den Quelltext-Archiven berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürfen.
|