> Inhalt: Einführung in das Programmieren mit Java > Inhalt: Einführung in das Programmieren von Enterprise Java Beans |
|
Letzte
Bearbeitung dieses Dokuments: |
Voraussetzungen für das Verständnis dieses Dokuments:Grundverständnis der Software-Entwicklung und des Datenbank-Entwurfes. Dieses Dokument ist ein Teil des Tutorials Session Bean mit Datenbank-Zugriff (Java_EJB_03) – Einrichten des Projects und folgenden Dokumenten – kann aber auch alleine als Referenz verwendet werden, wie das MySQL-Datenbanksystem mit dem JBoss Java-Application-Server (JAS) verwendet wird. |
Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:Arbeitszeit:
|
Die
Anleitung in diesem Dokument beschreibt die Maßnahmen, um JBoss
mit einem MySQL-Datenbanksystem
zu betreiben.
Dieses Dokument ist Teil des Tutorials Session Bean
mit Datenbank-Zugriff.
Gegenüber dem im Java-Application-Server (JAS) JBoss integrierte Hypersonic ist MySQL ein Datenbanksystem für professionelle Verwendung.
In diesem Dokument wird beschrieben, welche Veränderungen notwendig sind, um MySQL für die Datenspeicherung zu verwenden.
Nach
der Installation der notwendigen Dateien werden 2 Möglichkeiten
zur Veränderung der META-INFormation eines EJB
vorgestellt:
* Änderung des XDoclet-Parameters im Code
des EJB.
Damit wird eine Datei mit der passenden
XML-Struktur erzeugt.
* Nachträgliche Änderung der
Datei mit der verantwortlichen XML-Struktur.
Die nachträgliche
Änderung ist dann notwendig, wenn eine Software bei der
Installation an die bestehende Umgebung (JAS und DB-System) angepaßt
werden muß.
Vorigerer Schritt: Packen in JAR-Dateien und 'deploy'
Vorbedingungen
Datenbank-Tabelle
in MySQL erstellen
XML-Datei
für die 'Datasource' MySQL bearbeiten
Allgemeine
Bemerkungen zum Namen einer 'Datasource'-Datei
Zuordnung
der Datasource über XDoclet-Parameter verändern
Zuordnung
der Datasource durch Editieren der XML-Datei verändern
Test
Weitere
Schritte und verwandte Dokumentation
Nächste
Schritte:
Tutorial:
Client-Programm für Session Bean mit Datenbank-Zugriff
(Java_EJB_04)
Eine
Anleitung unter
http://wiki.jboss.org/wiki/Wiki.jsp?page=SetUpAMysqlDatasource.
enthält eine leicht verständliche Erklärung mit
Beispielen.
Ein großer Dank an den/die anonymen Autor/en
JBoss Java Application Server installiert und dessen Vorbedingungen auch.
JAR- (Java-ARchive-) Datei mit den Klassen für die Verbindung zum MySQL-Datenbanksystem im passenden Verzeichnis von JBoss installiert; siehe MySQL Datenbank für die Verwendung mit Java-Programmen einrichten > Java-Archiv (JAR) Datei mit dem 'Connector' zu MySQL – Installation für JBoss JAS.
Eine MySQL-Datenbank ist eingerichtet; die Beispiele in diesem Dokuement beziehen sich auf die im MySQL Datenbank für die Verwendung mit Java-Programmen einrichten erstellte Datenbank.
Datenbank-Tabelle
in MySQL erstellen
Die
folgenden Anweisungen setzen voraus, daß die Datenbank
'js_tutorial' so wie unter
MySQL
Datenbank für die Verwendung mit Java-Programmen einrichten
erstellt
wurde und auch die Rechte wie beschrieben an den Benutzer 'mysql'
vergeben wurden.
Öffnen Sie ein 'Terminal'-Fenster durch Auswahl von Anwendungen > Systemwerkzeuge > Terminal. |
|
Zum
Aufrufen des Datenbank-Monitors geben Sie im 'Terminal'-Fenster
folgendes Kommando ein: Geben Sie nach der Aufforderung das Passwort ein. Daraufhin meldet sich der Datenbank-Monitor und wartet auf die Eingabe von SQL-Kommandos. |
|
Erstellen
Sie die neue Datenbank mit folgendem SQL-Kommando: Bitte beachten Sie, daß Sie das SQL-Kommando in einer Zeile oder über mehrere Zeilen verteilt schreiben können aber mit einem Strichpunkt (;) abschließen müssen ! Beenden Sie den Datenbank-Monitor durch das Kommando quit und schließen Sie das Terminal-Fenster durch das Kommando exit. |
|
Eine Muster-Datei für eine MySQL-'Datasource' wird bei der Installation von JBoss unter dem Verzeichnis-/Datei-Namen '/opt/jboss/docs/examples/jca/mysql-ds.xml' installiert.
Diese Datei wird unter gleichem Dateinamen in das Verzeichnis '/opt/jboss/server/default/deploy' kopiert.
Dabei können folgende Teile des Verzeichnisses bei Ihrer Installation vom Beispiel abweichen:
/opt/jboss/server/default/deploy
wenn
Sie JBoss in einem anderen Verzeichnis installiert haben.
/opt/jboss/server/default/deploy
'default'
ist das Konfigurations-Verzeichnis das JBoss beim Start verwendet
wenn Sie keine anderes Verzeichnis als Option (--configuration)
angegeben haben.
Wenn Sie ein anderes Verzeichnis
für die Konfiguration verwenden, dann ist die XML-Datei in das
'deploy' Unterverzeichnis des verwendeten
Konfigurations-Verzeichnisses zu kopieren.
Als Datenbank wird jene verwendet, die im MySQL Datenbank für die Verwendung mit Java-Programmen einrichten erstellt wurde.
Eine detaillierte Beschreibung der individuellen Werte folgt anschließend an die Beispiel-Datei; klicken Sie bitte auf die jeweiligen Zeilen um zur Beschreibung zu gelangen.
<?xml
version=
"1.0"
encoding=
"UTF-8"
?>
<!--
$Id: mysql-ds.xml 63175 2007-05-21 16:26:06Z rrajesh $ -->
<!--
Datasource config fpr MySQL using 3.0.9 available
from:
http://www.mysql.com/downloads/api-jdbc-stable.html
--><datasources>
<local-tx-datasource>
<jndi-name>
MySqlDS
</jndi-name>
<driver-class>
com.mysql.jdbc.Driver
</driver-class>
<connection-url>
jdbc:mysql://127.0.0.1:3306/js_tutorial
</connection-url>
<user-name>
mysql
</user-name>
<password>
drowssap
</password>
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
</exception-sorter-class-name>
<!--
Should only be used on drivers after 3.22.1 with "ping"
support
-->
<valid-connection-checker-class-name>
org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker
</valid-connection-checker-class-name>
<!--
-->
<!-- sql to call when connection is
created
<new-connection-sql>some arbitrary
sql</new-connection-sql>
-->
<!--
sql to call on existing pooled connection when it is obtained from
pool -
MySQLValidConnectionChecker is preferred for
newer drivers
<check-valid-connection-sql>some
arbitrary sql</check-valid-connection-sql>
-->
<metadata>
<type-mapping>mySQL
</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
<jndi-name>
ist
der Name dieser 'Datasource'-Beschreibung in der Java Naming and
Directory Interface.
Über diesen Namen wird in der
JAS-spezifischen Datei ('jboss.xml' bei Verwendung von JBoss) im
'META-INF' Verzeichnis des EJB der JNDI-Name der im Quell-Code des
EJB für die 'Datasource' verwendet wird ('Chat_DS' in diesem
Tutorial), mit der Datenbank verbunden.
Das 'Verbinden' der hier
definierten 'Datasource' der Datenbank mit der im Anwendungsprogramm
definierten 'Datasource' wird anschließen im Abschnitt
Zuordnung
der Datasource über XDoclet-Parameter verändern
bzw.
Zuordnung
der Datasource durch Editieren der XML-Datei verändern
beschrieben.
<driver-class>
ist
die Klasse, die den Code für die Verbindung zum Datenbanksystem
enthält.
Diese Klasse wird vom Hersteller des
Datenbanksystems bereitgestellt und ist üblicherweise in einer
eigenen Java-ARchiv- (JAR-) Datei enthalten.
In diesem Tutorial
ist das die Datei 'mysql-connector-java-5.1.5-bin.jar' (bzw. eine
neuere Version), die in das Verzeichnis
'/opt/jboss/server/default/lib'
kopiert wurde.
<connection-url>
ist
die Identifikation der Datenbank.
Diese Bezeichnung hängt
vom verwendeten Datenbanksystem ab; das verwendete Beispiel bezieht
sich auf das Datenbanksystem MySQL, das auf dem gleichen Computer
läuft wie der JBoss JAS.
Damit kann die TCP/IP-Adresse
(127.0.0.1) des 'localhost' verwendet werden.
<user-name>
ist
die Identifikation eines Benutzers, der Rechte für den Zugang
zur Datenbank besitzen muß.
Die Einrichtung einer
Datenbank unter MYSQL und die Vergabe von Berechtigungen ist im
Dokument MySQL
Datenbank für die Verwendung mit Java-Programmen einrichten
beschrieben.
<password>
ist
das Passwort zu der verwendeten Benutzer-Identifikation
(<user-name>
).
Die
Einrichtung einer Datenbank unter MYSQL und die Vergabe von
Berechtigungen ist im Dokument MySQL
Datenbank für die Verwendung mit Java-Programmen einrichten
beschrieben.
<valid-connection-checker-class-name>
ist
ein spezieller Parameter für MySQL-Datenbanksysteme.
Damit
wird eine Verbindung (Connection) zur Datenbank nicht geschlossen
wenn ein Zugriff durch das Java-Programm beendet ist.
Stattdessen
wird die 'geöffnete' Verbindung in einem Pool gehalten und ist
bei einer neuen Anforderung durch das Java-Programm schneller
verfügbar als wenn erst eine neuerliche Verbindung zur
Datenbank eröffnet werden müßte.
Dieser
Parameter wird hier dokumentiert um an einem Beispiel zu zeigen, daß
für ein bestimmtes Datenbanksystem auch spezielle, nur für
das jeweilige Datenbanksystem gültige Parameter, in dieser
Datei festgelegt werden können.
Für eine Liste der
möglichen Parameter ziehen Sie bitte die Dokumentation Ihres
verwendeten Datenbanksystems zu Rate.
Allgemeine
Bemerkungen zum Namen einer 'Datasource'-Datei
Die
XML-Struktur mit der Definition einer 'Datasourde' kann in einer
Datei mit beliebigem Namen enthalten sein.
Die vorher beschriebene
XML-Struktur könnte auch in einer Datei mit dem Namen
'srqp-fdsa.xml' abgespeichert sein.
JBoss und andere JAS
durchsuchen alle Dateien im jeweiligen Unterverzeichnis 'deploy' und
reagieren nur auf die entsprechenden Element-Namen einer vorhandenen
XML-Struktur.
Zu
welchem Datenbanksystem dann die Verbindung hergestellt wird hängt
allein von den Parametern in den XML-Elementen
<driver-class>
und
<connection-url>
ab.
Trotzdem
ist zu empfehlen, die Namen der Beschreibungsdateien so zu wählen,
daß das verwendete Datenbanksystem erkennbar ist.
Zu
beachten ist, daß der Name im XML-Element
<jndi-name>
('MySqlDS'
in diesem Beispiel) nur einmal in allen Dateien vorkommen darf !
Der
beschriebene Mechanismus erlaubt auch, aus einem Programm auf mehrere
Datenbanken – auch verschiedener Datenbanksysteme oder auf
verschiedenen Computern – zuzugreifen.
Die
Definition mehrerer 'Datasources' kann auch in einer Datei erfolgen.
Dazu ist nur notwendig, den Bereich
<local-tx-datasource>
der
XML-Struktur mehrmals – mit verschiedenen Parametern – in
einer Datei einzutragen.
Zuordnung
der Datasource über XDoclet-Parameter verändern
Während
der Erstellung des Codes für das EJB erfolgt eine Festlegung der
Zuordnung zwischen den internen und externen Bezeichnungen der
'Datasource' über XDoclet-Parameter. Eine Erklärung dazu
finden Sie unter
Schritt
2: Codieren
>
XDoclet-Anweisungen
des
ChatManagementBean
codieren
.
Hier
der Ausschnitt aus dem Code:
* ----------------------
* @ejb.resource-ref res-ref-name
= "jdbc/Chat_DS"
* res-type
= "javax.sql.Datasource"
* res-auth
= "Container"
*
* Anweisungen
für XDoclet die dem JBoss Java Application Server mitteilen,
* daß das vordefinierte Default-Dataset des in
JBoss integrierten
* Hypersonic Datenbank-Systems
verwendet werden
soll.
* ----------------------
* @jboss.resource-ref res-ref-name
= "jdbc/Chat_DS"
* jndi-name
= "java:/DefaultDS"
*
* @description
* Klasse für das
Session-Bean mit Datenbank-Zugriff aus dem Tutorial Java_EJB_03.
Durch
Ändern des XDoclet-Parameters wird in weiterer Folge die
veränderte Zuordnung generiert.
Hier ein Beispiel, wie die
unter XML-Datei
für die 'Datasource 'MySQL' bearbeiten
definierte
MySQL-Datenbank verwendet wird:
* Anweisungen
für XDoclet die dem JBoss Java Application Server mitteilen,
* daß das vordefinierte Default-Dataset des in
JBoss integrierten
* Hypersonic Datenbank-Systems
verwendet werden
soll.
* ----------------------
* @jboss.resource-ref res-ref-name
= "jdbc/Chat_DS"
* jndi-name
= "java:/MySqlDS"
Die
im Beispiel verwendeten XDoclet-Anweisungen sind für eine
Verwendung des JBoss Java Application Server.
Wenn Sie einen
anderen JAS verwenden orientieren Sie sich bitte an den Beispielen
des Herstellers Ihres verwendeten JAS.
Der
gesamte Code des EJB ist unter
Schritt
2: Codieren
>
Kompletter
Code des Session Bean
zu
finden.
Zuordnung
der Datasource durch Editieren der XML-Datei verändern
Dieser
Teil beschreibt, wie in einer fertig generierten JAR-Datei mit dem
EJB und den XML-Dateien die Zuordnung zwischen internem und externem
Namen der 'Datsource' verändert wird.
Diese
Prozedur kann aus 2 Gründen notwendig sein:
Das
entwickelte Java-Anwendungsprogramm wird auf mehreren JAS verwendet
und dort gelten jeweils eigene Regeln für die Namensgebung von
externen 'Datasource's.
Zur Anpassung ist es einfacher und
weniger fehleranfällig, die entsprechende XML-Datei in der
ausgelieferten JAR-Datei zu verändern als die XDoclet-Parameter
im Quell-Code.
Sie
setzen ein Java-Anwendungsprogramm ein das nicht im eigenen
Unternehmen entwickelt wurde.
Auch wenn Ihnen der Quell-Code
dafür zur Verfügung steht ist es einfacher, die
entsprechende XML-Datei(en) zu adaptieren als einen Zyklus von der
Änderung der XDoclet-Parameter im Quell-Code bis zur
Generierung der JAR-Datei(en).
Ein Test ist im Tutorial: Client-Programm für Session Bean mit Datenbank-Zugriff (Java_EJB_04) enthalten und kann erst ausgeführt werden wenn das Tutorial abgeschlossen ist.
Dokument |
Inhalt |
Tutorial: Client-Programm für Session Bean mit Datenbank-Zugriff (Java_EJB_04) |
Im nächsten Tutorial wird ein Client-Programm für das Session Bean mit Datenbank-Zugriff entwickelt. |