> Inhalt: Einführung in das Programmieren mit Java > Inhalt: Einführung in das Programmieren von Enterprise Java Beans 

Tutorial: Session Bean mit Datenbank-Zugriff, EJB-Standard (Java_EJB_07) – Maßnahmen für den Zugriff auf eine MySQL-Datenbank

* Bitte beachten Sie die Hinweise und Bestimmungen bezüglich Urheberrecht, Haftungsausschluß und geschützte Marken oder Warenzeichen die für dieses Web-Dokument und möglicherweise auch für 'verlinkte' Dokumente gelten.

  • Der Betreiber dieser Web-Site (www.javascout.biz) ist nicht verantwortlich für den Inhalt von Web-Sites, die innerhalb dieses Web-Dokumentes oder anderer Dokumente von www.javascout.biz verlinkt sind.

  • Wenn dieses Web-Dokument oder andere Dokumente dieser Web-Site (www.javascout.biz) Rechte von Ihnen verletzen, oder sie glauben, dass Rechte Anderer (Dritter Personen) dadurch verletzt werden, informieren Sie bitte den Betreiber dieser Web-Site.
    Eine E-Mail können Sie ganz einfach durch anklicken des Symbols oder Textes im Frame rechts oben senden.

Dieses Dokument drucken.

 Letzte Bearbeitung dieses  Dokuments:
2010-07-28

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, EJB-Standard (Java_EJB_07) – Einrichten des Projects und folgenden Dokumenten – kann aber auch alleine als Referenz verwendet werden, wie das MySQL-Datenbanksystem mit dem JBoss oder Glassfish Java-Application-Server (JAS) verwendet wird.

Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:

Arbeitszeit:
Ca. 30 bis 60 Minuten; abhängig von Ihrer Erfahrung mit der Erstellung von XML-Dateien
.

Die Anleitung in diesem Dokument beschreibt die Maßnahmen, um JBoss oder Glassfish 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ß.

Inhaltsverzeichnis:

Vorigerer Schritt: Packen der Dateien in Java-Archive (JAR) und 'deploy' 

Dank für Vorarbeiten 

Datenbank-Tabelle in MySQL erstellen 

XML-Datei ejb-jar.xml erstellen 

Anleitungen bei Verwendung von JBoss 
Vorbedingungen 
XML-Datei für eine 'Datasource' des MySQL Datenbanksystems bearbeiten 
Allgemeine Bemerkungen zum Namen einer 'Datasource'-Datei 
XML-Datei im EJB für die Zuordnung der Datasource erstellen 

Anleitungen bei Verwendung von Glassfish 
Vorbedingungen 
Einen Connection Pool erstelen 
Eine Datasource festlegen 
XML-Datei im EJB für die Zuordnung der Datasource erstellen 

Packaging Configuration für Java_EJB_07.jar erweitern 

Test und Fehlersuche (erst nach Fertigstellung des Client-Programms möglich) 

Packaging Configuration für das Enterprise Archive (EAR-Datei) erstellen 

Gesamter Code am Ende des Tutorials 
Java-Klassen für das EJB (abgeschlossen im Schritt Codieren) 
Datei
ejb-jar.xml 
Datei
jboss.xml 
Datei
sun-ejb-jar.xml 

Weitere Schritte und verwandte Dokumentation 

Nächstes Tutorial:
Tutorial: Client-Programm für Session Bean mit Datenbank-Zugriff, EJB-Standard (Java_EJB_08) 

Dank für Vorarbeiten

Die Anleitung unter http://wiki.jboss.org/community/wiki/SetUpAMysqlDatasource enthält eine leicht verständliche Erklärung mit Beispielen für JBoss.
Ein großer Dank an den/die anonymen Autor/en/innen.

Für Glassfish schrieb Torsten Horn eine komplette Anleitung für ein EJB.
Die Anleitung finden Sie unter http://www.torsten-horn.de/techdocs/jee-sunglassfish.htm.

zum Inhaltsverzeichnis

Datenbank-Tabelle in MySQL erstellen

Die folgenden Anweisungen setzen voraus, dass 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:
mysql –host='127.0.0.1' –user='mysql' -p js_tutorial

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:
create table Chat (Erstellt_TS timestamp not null primary key, Erstellt_TCPIP_Adresse char(15), Message_Text varchar(2040));

Bitte beachten Sie, dass 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.


zum Inhaltsverzeichnis

XML-Datei ejb-jar.xml erstellen

Diese Datei enthält die allgemeine Konfiguration für eine EJB.
In
Tutorial: Einfache Session Bean, EJB3-Standard (Java_EJB_05) – Packen in EAR-Datei und Ändern des JNDI-Namens > Ändern des JNDI-Namens wurde gezeigt, wie dem EJB ein beliebiger JNDI-Name zugeordnet wird.

In diesem Abschnitt werden in die Datei 'ejb-jar.xml' allgemeine Informationen über die Datasource aufgenommen.

Vorbemerkung:
Der JAS erwartet die Datei 'ejb-jar.xml' im Verzeichnis META-INF innerhalb der Datei mit dem Java-ARchiv.


Damit das jetzt zu erstellende Verzeichnis META-INF nicht mit einem (später zu erstellenden) Verzeichnis für das Enterprise-ARchiv (Datei 'Java_EJB_07.ear') kollidiert, wird das Verzeichnis META-INF innerhalb des Verzeichnis 'gen' angelegt.

Das Verzeichnis wird auf folgende Weise erstellt:
Das Verzeichnis 'gen' (innerhalb des Project Java_EJB_07) wird mit der rechten Maustaste angeklickt und aus dem Kontext-Menu wird New > Folder ausgewählt.

 
 

Im geöffneten Fenster (New Folder) wird der Name des Verzeichnisses (META-INF / Bitte Großschreibung beachten !) erfasst und durch Anklicken der Schaltfläche [ Finish ] bestätigt.

Anschließend ist das erstellte Verzeichnis in der Verzeichnisstruktur des Bereichs 'Package Explorer' zu sehen.

  
 

Das gerade erstellte Verzeichnis ('META-INF') wird mit der rechten Maustaste angeklickt und aus dem Kontext-Menu wird New > File ausgewählt.

  
 

Im geöffneten Fenster (New File) wird der Name der Datei (ebj-jar.xml / Bitte Kleinschreibung beachten !) erfasst und durch Anklicken der Schaltfläche [ Finish ] bestätigt.

Anschließend ist die erstellte Datei in der Verzeichnisstruktur des Bereichs 'Package Explorer' zu sehen.

  
 

Die XML-Struktur (unterhalb der Abbildung) mit den Anweisungen für JBoss kann in die geöffnete Datei kopiert werden.

 
 



Die Datei enthält folgende XML-Struktur:

<?xml version="1.0"?>
<ejb-jar version="3.0">
  <display-name>
ChatManagement EJB</display-name>
  <description>
EJB aus dem JavaScout EJB-Tutorial 07</description>
  <enterprise-beans>
    <session>
      <ejb-name>
Java_EJB_07_Tutorial</ejb-name>
      <mapped-name>
mapped_ChatManagementBeanJNDI</mapped-name>
      <resource-ref>
        <res-ref-name>
ds/Chat_DS</res-ref-name>
        <res-type>
javax.sql.DataSource</res-type>
        <res-auth>
Container</res-auth>
      </resource-ref>
    </session>
  </enterprise-beans>
</ejb-jar>

Die Bedeutung der XML-Elemente für die Zuordnung des JNDI-Namens zum EJB und der Beschreibung wurde bereits unter Tutorial:Einfache Session Bean, EJB3-Standard (Java_EJB_05) – Packen in EAR-Datei und Ändern des JNDI-Namens > Ändern des JNDI-Namens > Konfigurationsdatei ejb-jar.xml erstellen erklärt.

Anschließend sind die XML-Elemente, die für die Datasource notwendig sind, beschrieben:

zum Inhaltsverzeichnis

Anleitungen bei Verwendung von JBoss

Bei JBoss (getestet mit Versionen 5.0.1 und 5.1.0, jeweils 'GA') funktioniert ein JAR mit der Standard-Datei 'ejb-jar.xml' nicht !

Durch einen Fehler in den Versionen 5.0.1 GA und 5.1.0 GA kann JBoss die Anweisungen in der Datei 'ejb-jar.xml' nicht verarbeiten und es tritt beim 'deploy' eine 'Null Pointer Exception' auf.
Bei der Suche im Internet habe ich gefunden, dass der Fehler durch Installation des aktuellsten 'EJB3-Plugin' behoben werden kann.
Die Installation des 'EJB3-Plugin' ist nicht einfach und es ist mir trotzdem nicht gelungen, ein 'deploy' der JAR- oder EAR-Datei ohne 'Null Pointer Exception' auszuführen.

Solange der Fehler durch eine neuere Version von JBoss nicht behoben ist empfehle ich, mit Glassfish Version 2.1.1 zu testen !
Die Anleitung dazu finden Sie im Abschnitt Anleitungen bei Verwendung von Glassfish.



zum Inhaltsverzeichnis

Vorbedingungen

zum Inhaltsverzeichnis

XML-Datei für eine 'Datasource' des MySQL Datenbanksystems bearbeiten

Konzept bei der Zuordnung von Datenbanken zu EJB ist, dass auch die Verbindung zu einer Datenbank mit einem JNDI- (Java Naming and Directory Interface) Namen versehen ist.
Die Zuordnung zwischen einem EJB und der Datenbank erfolgt in Konfigurationsdateien.
Diese Konfigurationsdateien werden in einem späteren Abschnitt besprochen.

Die Zuordnung eines JNDI-Namens an eine Datenbank ist in einer XML-Struktur definiert. Diese XML-Struktur kann in jeder Datei mit XML-Struktur und einem beliebigem Namen enthalten sein – soferne diese Datei im Verzeichnis 'deploy' von JBoss enthalten ist.
Um leichter den Überblick behalten zu können ist es aber sinnvoll, den Namen der Datei entweder an das Datenbanksystem oder den Aufgabenbereich anzupassen.
In diesem Beispiel ist die mit JBoss gelieferte Datei entsprechend dem Datenbanksystem benannt und dieser Name wird beibehalten.

Zu beachten ist allerdings, dass ein JNDI-Name für eine Verbindung zur Datenbank nur einmal innerhalb des 'deploy'-Verzeichnisses vorhanden sein darf – gleich in welcher Datei mit XML-Struktur; mehr dazu ist im Abschnitt Allgemeine Bemerkungen beschrieben.

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:

Als Datenbank wird jene verwendet, die im Dokument MySQL Datenbank für die Verwendung mit Java-Programmen einrichten erstellt wurde; diese hat den Namen 'js_tutorial'.

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 for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->

<datasources>
  <local-tx-datasource>
    <jndi-name>
MySqlDS_JS_Tutorial</jndi-name>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <connection-url>jdbc:mysql://192.168.0.99: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>

Die Werte bis hierher sind bei jedem Datenbanksystem erforderlich. Sie reichen aus um eine Datenbank für die Entwicklung von Software einzubinden.
Anschließend finden Sie zwei weitere Werte um zu zeigen, dass in dieser Datei weitere, speziell auf MySQL abgestimmte Einstellungen festgelegt werden können.
Die Aufzählung und Erklärung aller Möglichkeiten würde den Umfang dieses Tutorials bei weitem überschreiten.
Das Festlegen weiterer Einstellungen ist notwendig wenn eine Datenbank für den Echtbetrieb optimiert werden soll.
Für eine Liste der möglichen Einstellungen und Ihrer Auswirkungen ziehen Sie bitte die Dokumentation Ihres verwendeten Datenbanksystems zu Rate.

zum Inhaltsverzeichnis

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, dass das verwendete Datenbanksystem erkennbar ist.

Zu beachten ist, dass der Name im XML-Element <jndi-name> ('MySqlDS_JS_Tutorial' 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.

zum Inhaltsverzeichnis

XML-Datei im EJB für die Zuordnung der Datasource erstellen

Die Definition der Verbindung zwischen einem EJB und der 'Datasource' (in unserem Fall die Datenbank mit JNDI-Namen 'MySqlDS_JS_Tutorial'; erstellt im Abschnitt XML-Datei für eine 'Datasource' des MySQL Datenbanksystems bearbeiten) ist nicht 'genormt' und für alle JAS (Java Application Server) einheitlich.
JBoss erwartet diese Definition der Verbindung in der Datei 'jboss.xml' im Verzeichnis 'META-INF' in der JAR-Datei mit den Klassen für das EJB.

Vorbedingung für die folgenden Anleitungen ist, dass ein Unterverzeichnis 'META-INF' innerhalb des Verzeichnisses 'gen' im Project vorhanden ist.
Das Erstellen des Unterverzeichnisses 'META-INF' erfolgt im Abschnitt
XML-Datei ejb-jar.xml erstellen.


Das Verzeichnis ('META-INF') wird mit der rechten Maustaste angeklickt und aus dem Kontext-Menu wird New > File ausgewählt.

  
 

Im geöffneten Fenster (New File) wird der Name der Datei (jboss.xml / Bitte Kleinschreibung beachten !) erfasst und durch Anklicken der Schaltfläche [ Finish ] bestätigt.

Anschließend ist die erstellte Datei in der Verzeichnisstruktur des Bereichs 'Package Explorer' zu sehen.

  
 

Die XML-Struktur (unterhalb der Abbildung) mit den Anweisungen für JBoss kann in die geöffnete Datei kopiert werden.

 
 



Die Datei enthält folgenden Code:

<?xml version="1.0"?>
<jboss>
  <enterprise-beans>
    <session>

      <ejb-name>Java_EJB_07_Tutorial</ejb-name>
      <resource-ref>
        <res-ref-name>
ds/Chat_DS</res-ref-name> 
        <jndi-name>
java:/MySqlDS_JS_Tutorial</jndi-name>
      </resource-ref>
    </session>
  </enterprise-beans>
</jboss>

Wenn Sie nur eine Konfigurationsdatei für JBoss benötigen setzen Sie bitte mit dem Abschnitt Packaging Configuration für Java_EJB_07.jar erweitern fort.

zum Inhaltsverzeichnis

Anleitungen bei Verwendung von Glassfish

Glassfish bietet die Möglichkeit, die Datasource über eine Web-Oberfläche einzurichten.
Damit kann auch auf einem anderen Computer - als von dem, auf dem Glassfish installiert ist – die Datasource erstellt oder verändert werden.

zum Inhaltsverzeichnis

Vorbedingungen

zum Inhaltsverzeichnis

Einen Connection Pool erstellen

Die Definition der Verbindung zwischen einem EJB und der 'Datasource' (in unserem Fall die Datenbank mit JNDI-Namen 'MySqlDS_JS_Tutorial'; erstellt im folgenden Abschnitt Eine Datasource festlegen) ist nicht 'genormt' und das Erstellen erfordert für jeden JAS (Java Application Server) ein eigenes Vorgehen.

In Glassfish erfolgt die Verbindung über einen Connection Pool.
Dieser wird über die Web-Oberfläche für die Administration von Glassfish erstellt.
Gegenüber dem Editieren einer XML-Datei hat die Definition der Werte über die Web-Oberfläche den Vorteil, dass Tippfehler weitgehend ausgeschlossen sind.

Eröffnen Sie einen Webbrowser und geben Sie als URL die TCP/IP-Adresse (im Beispiel: 192.168.0.99) und den Port (Standardwert nach der Installation: 4848) für die Glassfish-Administration ein.

Anschließend erscheint die Anmeldekonsole (ohne Abbildung); auf dieser geben Sie bitte den 'User Name' (Standardwert nach der Installation: admin) und das 'Password' (Standardwert nach der Installation: adminadmin) ein und klicken danach mit der linken Maustaste auf die Schaltfläche [ Login ].
 

  
 

Im folgenden Fenster klicken Sie die Schaltfläche Create New JDBC Connection Pool an.

 
 

Im folgenden Fenster erfassen Sie bitte folgende Konfigurationsdaten:

  • 'Name':
    Dieser Wert ist frei wählbar; in diesem Beispiel wurde
    MySqlConnectionPool verwendet.

  • 'Resource Type':
    Wählen Sie
    javax.sql.Datasource aus.

  • 'Database Vendor':
    Wählen Sie bitte
    MySQL aus; damit wird im folgenden Fenster festgelegt, welche Konfigurationsparameter geändert werden können.

Klicken Sie anschließend auf die Schaltfläche [  Next  ].

  
 

Im folgenden Fenster haben Sie die Möglichkeit, die Verbindung zur Datenbank detailliert zu konfigurieren.
Für dieses Tutorial sind aber die Standard-Einstellungen ausreichend und eine Erklärung aller Konfigurationsparameter würde die Aufgabe dieses Dokuments bei weitem überschreiten.

Für die Verwendung sind nur drei Einstellungen notwendig.

Scrollen Sie nach unten bis Sie den Bereich 'Additional Properties' sehen und ändern Sie folgende Werte:.

Klicken Sie anschließend auf die Schaltfläche [  Finish  ].

  
 

Im folgenden Fenster sehen Sie eine Übersicht der vorhandenen Connection Pools.

Zum Testen klicken Sie mit der linken Maustaste auf den Namen des gerade erstellten Connection Pools.

 
 

Zum Testen, ob die Verbindung zur Datenbank fehlerfrei funktioniert, klicken Sie bitte mit der linken Maustaste auf die Schaltfläche [  Ping  ].

Im gleichen Fenster wird dann das Ergebnis ('Ping Succeeded' auf gelbem Hintergrund) angezeigt.

 
 
 
 

zum Inhaltsverzeichnis

Eine Datasource festlegen

Gegenüber JBoss ist bei Glassfish nicht mehr möglich, eine 'ganz einfache' Definition in einer XML-Datei mit einer minimalen Anzahl von Werten zu erstellen.

Die Einstellung von Glassfish führt schon dahin, dass das MySQL-Datenbanksystem wesentlich mehr Anforderungen erfüllen kann als für dieses Tutorial gebraucht werden.
Die Trennung in Connection Pool und Datasource hat den Sinn, über die Parameterisierung verschiedener Connection Pools eine optimale Zugriffszeit für jedes EJB, das auf die Datenbank zugreifen will, zu erreichen.

Wählen Sie im linken Rahmen
Resources > JDBC > JDBC Resources
aus.
Die Untergruppen können Sie ein- bzw. Ausblenden wenn Sie mit der linken Maustaste auf das kleine Dreieck links neben dem Menu-Eintrag klicken.

Im darauf hin erscheinenden rechten Rahmen klicken Sie bitte auf die Schaltfläche [  New  ].

  
 

Im folgenden Fenster erfassen Sie bitte folgende Konfigurationsdaten:

  • 'JNDI Name':
    Dieser Wert ist frei wählbar; in diesem Beispiel wurde
    MySqlDS_JS_Tutorial verwendet.
    Dieser Name kann innerhalb der verwendeten Domain von Glassfish nur einmal als JNDI-Name verwendet werden.

  • 'Pool Name':
    Wählen Sie
    MySQLConnectionPool aus.
    Dieser Connection Pool wurde im vorigen Abschnitt erstellt.

Klicken Sie anschließend auf die Schaltfläche [  OK  ].

  
 

Im folgenden Fenster sehen Sie eine Übersicht der vorhandenen Datasources.

 
 

zum Inhaltsverzeichnis

XML-Datei im EJB für die Zuordnung der Datasource erstellen

Die Definition der Verbindung zwischen einem EJB und der 'Datasource' (in unserem Fall die Datenbank mit JNDI-Namen 'MySqlDS_JS_Tutorial'; erstellt im Abschnitt Anleitungen bei Verwendung von Glassfish > Eine Datasource festlegen) ist nicht 'genormt' und muss individuell für den verwendeten JAS (Java Application Server) erstellt werden.
JBoss erwartet diese Definition der Verbindung in der Datei 'jboss.xml' im Verzeichnis 'META-INF' in der JAR-Datei mit den Klassen für das EJB.

Vorbedingung für die folgenden Anleitungen ist, dass ein Unterverzeichnis 'META-INF' innerhalb des Verzeichnisses 'gen' im Project vorhanden ist.
Das Erstellen des Unterverzeichnisses 'META-INF' erfolgt im Abschnitt
XML-Datei ejb-jar.xml erstellen.


Das Verzeichnis ('META-INF') wird mit der rechten Maustaste angeklickt und aus dem Kontext-Menu wird New > File ausgewählt.

  
 

Im geöffneten Fenster (New File) wird der Name der Datei (sun-ejb-jar.xml / Bitte Kleinschreibung beachten !) erfasst und durch Anklicken der Schaltfläche [ Finish ] bestätigt.

Anschließend ist die erstellte Datei in der Verzeichnisstruktur des Bereichs 'Package Explorer' zu sehen.

  
 

Die XML-Struktur (unterhalb der Abbildung) mit den Anweisungen für Glassfish (und andere JAS von SUN) kann in die geöffnete Datei kopiert werden.

 
 



Die Datei enthält folgenden Code:

<?xml version="1.0"?>
<sun-ejb-jar>
  <enterprise-beans>
    <ejb>

      <ejb-name>Java_EJB_07_Tutorial</ejb-name>
      <resource-ref>
        <res-ref-name>
ds/Chat_DS</res-ref-name> 
        <jndi-name>
MySqlDS_JS_Tutorial</jndi-name>
      </resource-ref>
    </ejb>
  </enterprise-beans>
</sun-ejb-jar>

zum Inhaltsverzeichnis

Packaging Configuration für Java_EJB_07.jar erweitern

Damit die in den vorigen Abschnitten erstellte(n) Konfigurationsdatei(en) auch in die JAR-Datei mit den Klassen für das EJB aufgenommen wird, muss die Packaging Configuration für die Datei 'Java_EJB_07.jar' angepasst werden.

Klicken Sie dazu mit der linken Maustaste auf den Reiter 'Project archives' und dann auf das Project ('Java_EJB_07' im Bereich 'Package Explorer').

Wenn die Archiv-Dateien nicht zu sehen sind, klicken Sie mit der linken Maustaste auf das kleine Dreieck links neben 'Java_EJB_07'.

Der Eintrag für ein Verzeichnis wird auf folgende Weise erstellt:
Die Zeile mit dem Namen der Archivdatei ('Java_EJB_07.jar') wird mit der rechten Maustaste angeklickt und aus dem Kontext-Menu wird New > Folder ausgewählt.

 
 

Im geöffneten Fenster (Create a folder) wird der Name des Verzeichnisses (META-INF / Bitte Großschreibung beachten !) erfasst und durch Anklicken der Schaltfläche [ OK ] bestätigt.

Anschließend ist das erstellte Verzeichnis in der Verzeichnisstruktur des Bereichs 'Project archives' zu sehen.

  
 

Der gerade erstellte Eintrag für 'META-INF' wird mit der rechten Maustaste angeklickt und aus dem Kontext-Menu wird New Fileset ausgewählt.

  
 

Im folgenden Fenster ('Fileset Wizard') wird durch Anklicken der Schaltfläche [ Workspace... ] (über dem Eingabefeld 'Includes') ein eigenes Fenster geöffnet, in dem als Nächstes jenes Verzeichnis, in dem die Datei mit der Konfiguration ist, ausgewählt werden kann.

  
  

Im erscheinenden Auswahl-Fenster ('Select a destination') wird zum Verzeichnis 'gen/META-INF' manövriert, in dem die Konfigurationsdatei liegt.
Dieses Verzeichnis wurde im Abschnitt
XML-Datei im EJB für die Zuordnung der Datasource erstellen erstellt.

Die Verzeichnis-Struktur wird angezeigt bzw. verborgen, wenn das kleine Dreieck links neben einem Verzeichnis-Namen angeklickt wird.

Die Auswahl wird durch Anklicken der Schaltfläche [  OK  ] bestätigt und damit wird auch das Fenster geschlossen.

  
  

Im Fenster für den 'Fileset Wizard' werden dann die Filter-Kriterien für die Dateien, die in die JAR-Datei aufgenommen werden sollen, im Feld 'Includes' festgelegt: **.

** bedeutet, dass alle Dateien innerhalb des Verzeichnisses in die Archiv-Datei gepackt werden sollen.

Nach Eingabe der Filter-Kriterien ist im Feld 'Preview' zu sehen, welche Dateien ausgewählt sind.

Die Definition wird durch Anklicken der Schaltfläche [  Finish  ] abgeschlossen und damit wird auch das Fenster geschlossen.

  
  

Im Bereich des 'Project archives' ist dann sichtbar, welche Dateien für das Packen in die JAR-Datei ausgewählt sind.

Die Struktur für die JAR-Datei kann durch Anklicken des kleinen Dreiecks links neben den Datei- bzw. Verzeichnis-Namen angezeigt oder verborgen werden.

  
  

Zuletzt muss noch eine neue Archiv-Datei erstellt werden.

Dazu wird die Datei 'Java_EJB_07.jar' mit der rechten Maustaste angeklickt und aus dem Kontext-Menu Build Archive (Full) ausgewählt.

Der Vorgang des 'Packens' dauert nur Bruchteile einer Sekunde und es wird keine Rückmeldung gegeben wenn der Vorgang beendet ist.

  
  



Damit die geänderte Konfiguration wirksam wird, muss die Datei erneut an den JAS übergeben ('deployed') werden.
Ein Anleitung mit Abbildungen finden Sie unter
Tutorial: Session Bean mit Datenbank-Zugriff, EJB-Standard (Java_EJB_07) – Packen der Dateien in Java-Archive (JAR) und 'deploy' > JAR-Datei an den JAS übergeben ('deploy') > 'Deploy' bei JBoss.

zum Inhaltsverzeichnis

Test und Fehlersuche (erst nach Fertigstellung des Client-Programms möglich)

Ein Test und eine eventuelle Suche nach Fehlern ist erst nach Fertigstellung des Client-Programms (Tutorial: Client-Programm für Session Bean mit Datenbank-Zugirff, EJB3-Standard (Java_EJB_08)) möglich.
In diesem Dokument finden Sie im Abschnitt
> Test die Anleitung für den Test.
Sollte der Test nicht das gewünschte Ergebnis liefern finden Sie unter
> Hinweise zur Fehlersuche eventuelle Ursachen dafür.

zum Inhaltsverzeichnis

Packaging Configuration für das Enterprise Archive (EAR-Datei) erstellen

Für das Testen des erstellten EJB reicht das 'deploy' der JAR-Datei aus.
Das Erstellen einer EAR-Datei unterscheidet sich nur in den gewählten Dateinamen von der Vorgangsweise die unter
Tutorial:Einfache Session Bean, EJB3-Standard (Java_EJB_05) - Packen in EAR-Datei und Ändern des JNDI-Namens > Packen in eine EAR-Datei beschrieben ist.

zum Inhaltsverzeichnis

Gesamter Code am Ende des Schrittes

Der Java-Code wurde im Schritt Codieren abgeschlossen und braucht für das Einbinden der Datenbank nicht verändert werden.

zum Inhaltsverzeichnis

Datei ejb-jar.xml

<?xml version="1.0"?>
<ejb-jar version="3.0">
  <display-name>
ChatManagement EJB</display-name>
  <description>
EJB aus dem JavaScout EJB-Tutorial 07</description>
  <enterprise-beans>
    <session>
      <ejb-name>
Java_EJB_07_Tutorial</ejb-name>
      <mapped-name>
mapped_ChatManagementBeanJNDI</mapped-name>
      <resource-ref>
        <res-ref-name>
ds/Chat_DS</res-ref-name>
        <res-type>
javax.sql.DataSource</res-type>
        <res-auth>
Container</res-auth>
      </resource-ref>
    </session>
  </enterprise-beans>

</ejb-jar>

zum Inhaltsverzeichnis

Datei jboss.xml

<?xml version="1.0"?>
<ejb-jar>
  <enterprise-beans>
    <ejb>
      <ejb-name>
Java_EJB_07_Tutorial</ejb-name>
      <resource-ref>
        <res-ref-name>
ds/Chat_DS</res-ref-name>
        <jndi-name>
java:/MySqlDS_JS_Tutorial</jndi-name>
      </resource-ref>
    </ejb>
  </enterprise-beans>

</ejb-jar>

zum Inhaltsverzeichnis

Datei sun-ejb-jar.xml

<?xml version="1.0"?>
<sun-ejb-jar>
  <enterprise-beans>
    <ejb>
      <ejb-name>
Java_EJB_07_Tutorial</ejb-name>
      <resource-ref>
        <res-ref-name>
ds/Chat_DS</res-ref-name>
        <jndi-name>
MySqlDS_JS_Tutorial</jndi-name>
      </resource-ref>
    </ejb>
  </enterprise-beans>

</sun-ejb-jar>

zum Inhaltsverzeichnis

Weitere Schritte und verwandte Dokumentation

Dokument

Inhalt

Tutorial: Client-Programm für Session Bean mit Datenbank-Zugriff, EJB-Standard (Java_EJB_08)  

Im nächsten Tutorial wird ein Client-Programm für das Session Bean mit Datenbank-Zugriff entwickelt.

Benutzen der Hypersonic Datenbank von 'JBoss'  

In diesem Schritt wird das in JBoss integrierte Hypersonic-Datenbanksystem verwendet.
Das ist eine einfachere Lösung als die Verwendung der MySQL-Datenbank (die Hypersonic-Datenbank kommt ohne Konfigurationsdateien aus) und sich daher für eine schnelle Entwicklung eignet.

zum Inhaltsverzeichnis