> 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:Grundkenntnisse in der Programmierung von Java (Klassen, Methoden, Schleifen) oder anderer Objekt-Orientierter Programmiersprachen (z.B. C++, Modula-2, Pascal). Kenntnisse im Umgang mit Eclipse; empfohlen ist das Durcharbeiten der Einführungsbeispiele für das Programmieren mit Java. |
Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:Arbeitszeit:
|
Dieses Dokument enthält die Anleitung für die Programmierung eines einfachen Client-Programms, das die Methoden des in den Schritten beginnend mit Tutorial: Session Bean mit Datenbank-Zugriff, EJB3-Standard (Java_EJB_07) – Einrichten des Projects entwickelten EJB (Enterprise Java Bean) benutzt.
Das Schema ist identisch mit dem Tutorial: Client für Einfache Session Bean, EJB3-Standard (Java_EJB_06) – deswegen werden in diesem Dokument gleiche Tätigkeiten nur mehr mit Stichworten beschrieben.
Entsprechender Tutorial-Schritt für die frühere Version (vor EJB3-Standard)
Dank
für Vorarbeiten
Vorbemerkung
Vorbedingungen
Project
eröffnen und einrichten
*
Project eröffnen
*
Verzeichnisse für Quell-Code und kompilierte Java-Klassen
festlegen
*
Standard-Source-Verzeichnis prüfen und bei Bedarf korrigieren
*
Einbindung der Libraries (Programm-Bibliotheken) in den Java Build
Path
Java-Klasse
anlegen
Datei
jndi.properties
mit
den Parametern für die Verbindung zum JAS anlegen
Test
Gesamter
Code am Ende des Schrittes
Datei
jndi.properties
Datei
ChatManagementClient.java
Bewusste Vereinfachungen in diesem Tutorial-Schritt – im Vergleich zu professioneller Entwicklung
Weitere Schritte und verwandte Dokumentation
Wenn
Sie vor der Aufgabe stehen, Java vor Version 1.5 (auch als Java 5
bezeichnet) verwenden zu müssen, Client-Programme für den
Zugriff auf EJBs neu schreiben oder adaptieren müssen und die
passende Anleitung dafür suchen - dann finden eine ausführliche
Anleitung mit zahlreichen Abbildungen im
Tutorial:
Client-Programm für Einfache Session Bean (Java_EJB_02).
Eine
exzellente Einführung in die generelle Programmierung von EJB
war der JBoss-IDE
1.3.0 Tutorial Guide von Hans Dockter und Laurent
Etiemble.
Beispiele, die über das Tutorial in diesem Dokument
hinausgehen, schrieb Mirza Jahic in Working
with JBoss and Eclipse.
Speziell auf EJB 3 adaptiert ist das First EJB 3 Ant Tutorial von Sebastian Hennebrueder.
Obwohl
Eclipse in 'deutscher Version' installiert werden kann, sind
die Abbildungen in diesem Tutorial mit der 'english Version'
erstellt. |
Viele
der in diesem Tutorial auszuführenden Abschnitte (z.B. Eröffnen
des Project) sind gleich oder sehr ähnlich zu Abschnitten, die
bereits im Tutorial für die Entwicklung der Einfachen Session
Bean beschrieben wurden.
Um diese – bei jedem Project
wiederkehrenden - Tätigkeiten zu üben, wird in diesem
Tutorial nicht immer jede Tätigkeit im Detail beschrieben und
eine Abbildung gezeigt.
Statt dessen wird auf die entsprechende
Beschreibung in einem Tutorial, das als Vorbedingung durchzuarbeiten
war, verwiesen.
Session Bean entwickelt und wie im Tutorial: Einfache Session Bean mit Datenbank-Zugriff, EJB3-Standard (Java_EJB_07) – Konfigurationsdateien erstellen und Packen in JAR-Dateien > JAR-Datei an den JAS übergeben ('deploy') beschrieben an einen JAS (Java Application Server) übergeben.
JAR-Datei mit den Schnittstellen für die Client-Programme (wie in Tutorial: Einfache Session Bean mit Datenbank-Zugriff, EJB3-Standard (Java_EJB_07) – Konfigurationsdateien erstellen und Packen in JAR-Dateien > JAR-Datei für Client-Programme erstellen beschrieben) vorhanden.
Datenbank
angelegt und die Verbindung dazu in den Konfigurationsdateien
festgelegt.
Tutorial-Schritte zum Verwenden verschiedener
Datenbanksysteme sind:
* a
>s
*
a
>s
*
a
>s
Und natürlich alle Vorbedingungen für die beiden oberen Vorbedingungen ;-) .
Kriterien
für das Gruppieren von Projects in einen Workspace wurden in
Tutorial:
Hello World (Java_Intro_01)
>
Eclipse
Workspace und Project eröffnen
diskutiert.
Dort
ist auch eine Beschreibung mit Screenshots enthalten wie ein
Workspace eingerichtet wird – diese Anleitung wird in diesem
Dokument nicht mehr wiederholt.
Project
eröffnen
Um ein neues Project zu beginnen wird >File >New >Project ausgewählt. Im anschließenden Fenster (New Project) wird Java Project ausgewählt und durch Anklicken der Schaltfläche [ Next > ] fortgesetzt. |
Detaillierte Anleitungen inklusive Abbildungen der Fenster finden Sie im Dokument Einfache Session Bean, EJB3-Standard (Java_EJB_05) – Einrichten des Projects > Project eröffnen . |
Im Fenster (New Java Project) wird
Durch Anklicken der Schaltfläche [Next > ] wird das nächste Fenster mit weiteren Einstellungsmöglichkeiten aufgerufen. |
|
Verzeichnisse
für Quell-Code und kompilierte Java-Klassen festlegen
Im geänderten Fenster (New Java Project) wird
|
Detaillierte Anleitungen inklusive Abbildungen der Fenster finden Sie im Dokument Einfache Session Bean. EJB3-Standard (Java_EJB_05) – Einrichten des Projects>Verzeichnis für Quell-Code und kompilierte Java-Klassen festlegen . |
Im erscheinenden Fenster (New Source Folder) wird
Durch Anklicken der Schaltfläche [ Finish ] wird das neue Verzeichnis erstellt und das Fenster geschlossen. Es wird auch noch
eine Schaltfläche [ Next > ] als aktiv
angezeigt. |
|
Im noch immer offenen Fenster (New Java Project) werden jetzt die neu erstellten Verzeichnisse angezeigt.
Durch Anklicken der Schaltfläche [ Finish ] wird das neue Project erstellt und das Fenster geschlossen. |
|
Standard-Source-Verzeichnis
prüfen und bei Bedarf korrigieren
Bei
älteren Versionen von Eclipse (bei mir: Version: 3.2.2., Build
id: M20070212-1330) wird das Source-Verzeichnis nicht geändert.
Überprüfen
Sie daher bitte die Definition der Source-Verzeichnisse bei Ihrer
Installation und wenn der Fehler auch bei Ihrer Installation von
Eclipse aufgetreten ist, führen Sie die beschriebenen Korrektur
durch.
Die
definierten Source-Verzeichnisse sind unter
Java
Build Path
in
den
Properties
(Eigenschaften)
des Project definiert.
|
|
|
|
|
|
Anschließend wird im Fenster nur mehr das gewünschte Verzeichnis angezeigt. Durch Anklicken der Schaltfläche [ OK ] wird die neue Einstellung gesichert und das Fenster geschlossen. |
|
▲
zum
Inhaltsverzeichnis
Einbindung
der Libraries (Programm-Bibliotheken) in den Java Build Path
In
diesem Project wird der Code (Klassen) in Programmteilen, die nicht
innerhalb des Projects oder der Eclipse-Workspace vorhanden sind,
eingebunden.
Eine
detaillierte Anleitung, wie Bibliotheken eingebunden werden ist unter
Einfache
Session Bean, EJB3-Standard (Java_EJB_05) – Einbindung der
Libraries (Programm Bibliotheken) in den Java Build Path
beschrieben.
Die
dort aufgelisteten Dateien werden für ein Client-Programm aber
nicht
benötigt
.
Wenn
Sie vorläufig keine JAR-Datei mit den benötigten Klassen
zur Verfügung haben
(weil
noch kein JAS installiert ist), können Sie eine der folgenden
Dateien herunterladen:
* Für JBoss: jbossall-client.jar
*
Für Glassfish: appserv-rt.jar
,
javaee.jar
|
|
|
|
|
|
In
diesem Abschnitt wird die Klasse für das Client-Programm
erstellt und der Algorithmus codiert.
Um eine neue Java-Klasse zu eröffnen wird mit der rechten Maustaste das Project (Java_EJB_08) angeklickt und aus dem Kontext-Menu >New >Class ausgewählt. |
|
Im darauf hin erscheinenden Fenster (New Java Class / Ohne Abbildung) wird
Die anderen bereits vorgegebenen Werte werden nicht verändert. Durch Anklicken der Schaltfläche [ Finish ] wird die Datei für den Quell-Code der Klasse angelegt. |
|
Der
Java-Code ist unter Gesamter
Code am Ende des Schrittes > Datei ChatManagementClient.java
dokumentiert
und kann in die geöffnete Datei kopiert werden. Anschließend
wird der Code durch Anklicken des Save-Symbols (
/ Diskette links oben) gespeichert.
Die
Struktur des Client-Programms ist gleich wie bei jenem im
Tutorial:
Client-Programm für Einfache Session Bean, EJB3-Standard
(Java_EJB_06)
.
Für eine Erklärung der importierten Java-Packages und
-Klassen lesen Sie bitte dort nach.
Eine Erklärung des
Algorithmus ist in den Kommentaren zum Java-Code enthalten.
Das
Anlegen des entsprechenden Verzeichnisses und der Datei wurden
bereits unter
Tutorial:
Client-Programm für Einfache Session Bean, EJB3-Standard
(Java_EJB_06) > Datei
jndi.properties
mit
den Parametern für die Verbindung zum JAS anlegen
im
Detail und mit Abbildungen beschrieben.
Dort ist auch eine
Erklärung er einzelnen Teile der 'Eigenschaften' beschrieben.
Test
Bemerkung:
Damit
der Code getestet werden kann, muss das EJB an den JAS übergeben
('deployed') sein; die Anleitung dazu finden Sie unter Tutorial:
Einfache Session Bean, EJB3-Standard (Java_EJB_05) – Packen der
Dateien in Java-Archive (JAR) und 'deploy' > JAR-Datei an den JAS
übergeben ('deploy')
.
Um
nicht durch Firewalls oder andere Sicherheitsmechanismen behindert zu
werden – und damit unnötige Zeit in Fehlersuche zu
investieren – wird empfohlen, den JAS (z.B. JBoss) auf dem
gleichen Computer laufen zu lassen wie das entwickelte Programm.
Die
TCP/IP-Adresse (127.0.0.1; festgelegt in der Datei 'jndi.properties')
bezieht sich auf den lokalen Computer und erlaubt die Verbindung zum
EJB innerhalb einer möglichen Firewall.
Weiters
sind als JAR-Dateien für die Verbindung zum JAS jene
JAR-Dateien, die mit dem JAS geliefert wurden, zu verwenden.
Im
Abschnitt Einbundung
der Libraries (Programm-Bibliotheken) in den Java Build Path
wurden
eventuell nicht zum JAS passende JAR-Dateien eingebunden damit der
Code vorerst compiliert werden kann ohne das ein Fehler auftritt weil
benötigte Packages fehlen.
Damit der Test fehlerfrei
ausgeführt werden kann, müssen dafür die zur
jeweiligen Version des JAS passenden JAR-Dateien eingebunden werden.
Aus
dem Eclipse-Menu wird
Run
>Run
ausgewählt.
Im Bereich 'Console' erscheint anschließend der Text mit der Aufforderung zur Eingabe. Klicken Sie mit der Maus in diesen Bereich, damit Sie dort Text eingeben können ! Nach
Eingabe von Text und Betätigen der Eingabe-Taste wird der
eingegebene Text wieder ausgegeben. Nach der Eingabe von Leerzeichen wird das Programm beendet. |
|
Bedingt
durch die Trennung in Server-seitigen Code (EJB) und Code im
Client-Programm können verschiedene Fehler nicht wie
Syntax-Fehler sofort beim Tippen des Codes identifiziert werden.
Ein
– vielleicht leicht zu übersehender – Tippfehler
führt dazu, dass das EJB nicht korrekt im JAS 'deployed' wird
oder das Client-Programm keine Verbindung zum EJB aufnehmen
kann.
Zusätzlich werden Parameter für die Verbindung in
einer externen Datei ('jndi.properties') bereitgestellt. Ein einziger
Tippfehler in dieser Datei führt ebenfalls dazu, dass die
benötigte Klasse für die Verbindung nicht geladen werden
kann oder versucht wird, eine Verbindung zu einer unpassenden
TCP/IP-Adresse aufzunehmen.
Als
LeserIn dieses Tutorials haben Sie vermutlich überhaupt keine
Erfahrung mit der Eingrenzung eines Fehlers – deswegen folgen
leicht auszuführende Schritte zur Eingrenzung des Fehlers.
'Fertige'
JAR- und EAR-Datei für den JAS
Wenn
Sie einen Fehler in der Klasse für das EJB vermuten können
Sie mit JBoss
(Version 5.1.0) und Glassfish
(Version 2.1.1) getestete Archiv-Dateien herunter laden und für
einen Test auf korrekte Funktion des Client-Programms (dieses
Tutorials) verwenden.
Die für das EJB passenden
Schnittstellen für das (in diesem Dokument vorgestellte)
Client-Programm finden Sie in der Datei Java_EJB_07-client.jar.
Java_EJB_07a.jar
Dieses
JAR kann nur für JBoss verwendet werden weil der (als Injection
festgelegte) Name der Datasource einen Doppelpunt (:) enthält
und dieser nur bei JBoss in einem JNDI-Namen verwendet werden darf
!
Diese
JAR-Datei mit dem EJB enthält
keine
XML-Dateien
für die Veränderung der JNDI-Namen des EJB und der
Datasource.
Die JNDI-Namen sind durch die 'Injections' in der
Klasse für das EJB festgelegt (siehe Tutorial:
Session Bean mit Datenbank-Zugriff, EJB3-Standard (Java_EJB_07) -
Codieren > Gesamter Code am Ende des Schrittes > Datei
ChatManagementBean.java
)
festgelegt.
Dieses JAR ist dafür gedacht, dass als
Datasource die in JBoss integrierte Hypersonic Datenbank verwendet
wird. Das Erstellen der Tabelle innerhalb dieser Datenbank ist im
Dokument Tutorial:
Session Bean mit Datenbank-Zugirff, EJB3-Standard (Java_EJB_07) –
Benutzen der Hapersonic Datenbank von 'JBoss'
)
beschrieben.
Der
Muster-Code für das Client-Programm (in diesem Dokument)
kann unverändert verwendet werden.
JNDI-Name des EJB:
ejb/ChatManagementBeanJNDI
JNDI-Name
der Datasource: java:/DefaultDS
Java_EJB_07.jar
Dieses
JAR funktioniert in JBoss Version 5.0.1 und 5.1.0 (wegen eines
Fehlers in den angegebenen Versionen) nicht !
Diese
JAR-Datei enthält XML-Dateien, in denen die JNDI-Namen für
das EJB und die Datasource individuell festgelegt werden.
Die
Änderungen sind im Dokument Tutorial:
Session Bean mit Datenbank-Zugirff; EJB3-Standard (Java_EJB_07) –
Maßnahmen für den Zugriff auf eine MySQL-Datenbank
beschrieben.
Der
Muster-Code für das Client-Programm (in diesem Dokument)
muss für den neuen JNDI-Namen des EJB adaptiert
werden:
/*
* Construction
der Interface, über die ein Objekt des EJB am JAS konstruiert
wird und
* später dessen Methoden aufgerufen
werden. */
ChatManagementBeanRemote
remoteChatManagementBean;
remoteChatManagementBean
= (ChatManagementBeanRemote)
//
initialContext.lookup(
"ejb/ChatManagementBeanJNDI"
);
initialContext.lookup(
"mapped_ChatManagementBeanJNDI"
);
JNDI-Name
des EJB: mapped_ChatManagementBeanJNDI
JNDI-Name
der Datasource: MySqlDS_JS_Tutorial
Prüfen
ob das JAR 'deployed' ist
JBoss
bietet die Möglichkeit über eine Web-Abfrage die laufenden
EJBs zu sehen.
In den folgenden Beispielen ist JBoss auf dem
gleichen Computer installiert wie die verwendete
Eclipse-Entwicklungsumgebung.
Dazu wird im
Web-Browser
eingegeben
- damit wird eine Übersicht von JBoss aufgerufen.
In
dieser Übersicht sehen Sie eine Liste der laufenden EJB –
darunter sollte das 'Java_EJB_07.jar' zu finden sein.
Das
Beispiel ist für den JBoss Java Application Server –
andere JAS haben ähnliche Abfragen.
Wenn
Sie das EJB nicht finden dann wiederholen Sie den Abschnitt
Tutorial:
Session Bean mit Datenbank-Zugriff, EJB3-Standard (Java_EJB_07) –
Packen der Dateien in Java-Archive (JAR) und 'deploy' >
JAR-Dateien an den JAS übergeben ('deploy')
und
beobachten, ob beim 'deploy' Fehler auftreten.
Wenn
Sie nicht sicher sind, ob das von Ihnen erstellte EJB fehlerfrei ist,
können Sie die Datei Java_EJB_07.jar
hier herunterladen und deployen.
Diese Datei wurde mit der
JBoss Version 5.0.1.GA getestet.
Prüfen
ob die Datei 'Java_EJB_07-client.jar' zur EJB passt
Die
Datei mit der (Java-) Interface muss zum 'deployed' EJB passen.
Möglicherweise haben Sie die EJB verändert und vergessen,
einen 'Build'
der Datei auszuführen (siehe Tutorial:
Session Bean mit Datenbank-Zugriff, EJB3-Standard (Java_EJB_07) –
Packen der Dateien in Java-Archive (JAR) und 'deploy' > JAR-Datei
für Client-Programme erstellen
).
Wenn
Sie die Datei 'Java_EJB_07.jar' von dieser Webseite verwenden dann
können Sie die passende Datei Java_EJB_07-client.jar
hier herunterladen.
Prüfen
auf Tippfehler in der Datei 'jndi.properties'
Der
Inhalt der Datei 'jndi.properties'
ist kritisch weil darin die Parameter für die Verbindung zum JAS
enthalten sind.
Der eingegebene Text kann während des Tippens
nicht geprüft werden und eventuelle Tippfehler fallen erst auf
wenn die entsprechende Klasse nicht während der Laufzeit geladen
werden kann oder eine unpassende TCP/IP-Adresse enthalten ist.
Wenn
Sie für Ihre Entwicklungsumgebung ebenfalls JBoss mit den
empfohlenen Einstellungen verwenden, dann vergleichen Sie bitte genau
den Inhalt Ihrer Datei mit den Werten der Datei 'jndi.properties'
in diesem Tutorial.
Als
letzte Möglichkeit können Sie die Werte aus diesem Tutorial
in Ihre Datei kopieren.
Prüfen,
ob die Bibliothek für die Verbindung zum JAS vom verwendeten JAS
stammt
Für
das Verbinden zum JAS muss die jeweils passende Bibliothek verwendet
werden.
Das Einbinden der Bibliothek wurde im Abschnitt
Einbindung
der Libraries (Programm-Bibliotheken) in den Java Build Path
beschrieben.
Eine
mögliche Fehlermeldung beim Verwenden einer 'falschen'
Bibliothek ist:
Die
Fehlermeldung stammt von JBoss Version 5.0.1.GA weil die Bibliothek
von JBoss 5.1.0.GA verwendet wurde:
Beachten
Sie die Hinweise der (Java-) 'Exception'
Abhängig
vom jeweiligen Fehler wird bei der 'Exception' (Ausnahmebehandlung
nach einem Fehler' eine Fehlermeldung auf der Konsole angezeigt.
Mit
etwas Kombinationsgabe kann meistens aus der Fehlermeldung der Grund
des Fehlers erkannt werden.
In
diesem Beispiel
wurde
java.naming.factory.initial=
org.jnp.
interface
.NamingContextFactory
stattjava.naming.factory.initial=
org.jnp.
interface
s
.NamingContextFactory
als
Wert erfasst.
Prüfen
Sie die Einträge in den XML-Dateien (Deployment Descriptors) auf
Groß-/Kleinschreibung
Das
'Mapping' der JNDI-Namen für EJB und Datasource muss genau
übereinstimmen.
Beachten Sie besonders die Groß- und
Kleinschreibung und die Bindestriche (-) und Unterstriche (_) in den
Namen.
Das
Verbinden mit der Datasource ist in verschiedenen Dateien
('ejb-jar.xml' und einer JAS-spezifischen Datei, z.B.
'sun-ejb-jar.xml', 'jboss.xml') Dateien definiert.
Vergleichen Sie
die Einträge in diesen Dateien dort mit den symbolischen Namen
in der Klasse für das EJB und mit dem im JAS definierten Namen
der Datasource.
Gesamter
Code am Ende des Schrittes
java.naming.factory.initial=
org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=
127.0.0.1:1099
org.omg.CORBA.ORBInitialHost=
127.0.0.1
org.omg.CORBA.ORBInitialPort=3700
java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
java.naming.factory.url.pkgs=com.sun.enterprise.naming
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl
package
js_ejb08.client;
/*
*
Package mit verschiedenen Methoden für Ein- und Ausgabe.
*/import
java.io.*;
/*
*
Package mit verschiedenen Methoden für 'Hilfsdienste'. */import
java.util.*;
/*
*
Package mit Methoden die die TCP/IP-Adresse des 'Client'-Computers
ermitteln. */import
java.net.*;
/*
*
Package mit verschiedenen Klassen für die Verbindung zum Java
Application Server (JAS). */import
javax.naming.*;
/*
*
Package mit dem Business Object das einen Chat-Eintrag repräsentiert.
*/import
js_ejb07.bo.*;
/*
*
Interface zur EJB die auf dem JAS läuft. */import
js_ejb07.ejb.interfaces.remote.ChatManagementBeanRemote;
public
class
ChatManagementClient
{
public
ChatManagementClient()
{
super
();
}/*
*/
public
static void
main(String[]
args) {
/*
*
Business-Object für die Übertragung eines Chat-Eintrags zum
EJB definieren. */
Chat_BO
structChat_BO = new
Chat_BO();
/*
*
Vector mit mehreren Business-Objects als Ergebnis der Abfrage.
*/
Vector
structChat_BO_Set = new
Vector();
/*
* Bauen
des Strings mit der Konsol-Ausgabe
* (Erklärung
was als Konsol-Eingabe erwartet wird). */
String
strKonsolErklaerung =
"Bitte
geben Sie den Chat-Text ein oder lassen sie das Feld leer um das
Programm zu beenden: "
;
/*
* Variablen
für die Eingabe auf der Konsole. */
String
strKonsolAntwort = ""
;
byte
byteKonsolBuffer[]
=
new
byte
[80];
int
intKonsolBufferLaenge;
/*
* Schleife
für das Abfragen der Eingabe auf der Konsole und Aufrufen des
EJB. */
for
(;;)
{
/*
* Anzeigen
der Erklärung auf der Konsole.
*/
System.out
.print(strKonsolErklaerung);
/* */
try
{
/*
* Antwort
(Eingabe auf der Konsole) einlesen.
*/
intKonsolBufferLaenge
= System.in
.read(byteKonsolBuffer,
0, 80);
strKonsolAntwort
= new
String(byteKonsolBuffer,
0, intKonsolBufferLaenge);
/*
* Führende
und nachfolgende Leerzeichen entfernen.
*/
strKonsolAntwort
= strKonsolAntwort.trim();
}
catch
(IOException
e) {
/* Unerwarteter
Fehler bei der Konsol-Eingabe; Fehlermeldung auf die Konsole
ausgeben.
*/
e.printStackTrace();
}/*
* Prüfen
ob 'leere' Antwort und in diesem Fall Programm beenden.
*/
if
(strKonsolAntwort.length()
<= 0) {
System.out
.println(
"Programm
beendet"
);
System.exit(0);
}/*
* Eingabe
als Rückmeldung wieder ausgeben.
*/
System.out
.println(
"Eingegeben:
"
+
strKonsolAntwort);
/*
* TCP/IP
des Computers, auf dem dieses Programm läuft,
ermitteln. */
String
strTCPIPAdresse = ""
;
try
{
/* Net-Parameter
des localen Computers ermitteln und dann TCP/IP-Adresse herauslesen.
*/
InetAddress
addr = InetAddress.getLocalHost();
strTCPIPAdresse
= addr.getHostAddress();
}
catch
(UnknownHostException
e) {
/* Unerwarteter
Fehler beim Ermitteln der Werte; Fehlermeldung auf die Konsole
ausgeben.
*/
System.out
.println(
"UnknownHostException"
);
e.printStackTrace();
}/*
* Business-Object
für die Übertragung zum EJB
füllen. */
structChat_BO.Erstellt_TCPIP_Adresse
=
strTCPIPAdresse;
structChat_BO.Message_Text
=
strKonsolAntwort;
/*
* Beginn
des Codes für das Nutzen der Methoden des EJB.
*/
try
{
/*
* Objekt
der Klasse 'InitialContext' erstellen.
* Dabei werden
die Werte für den Aufbau der Verbindung zum EJB ('Properties',
deutsch: Eigenschaften)
* aus einer Datei
eingelesen.
* Der Name der Datei mit den 'Properties'
ist in der Klasse 'InitialContext', die mit dem
Java-package
* 'javax.naming' importiert wird,
enthalten.
* Das package 'java.naming' ist in der
JAR-Datei, die zum verwendeten JAS
(Java-Application-Server)
* gehört,
enthalten.
* Für die Beispiele in diesem Tutorial
wird JBoss verwendet – aber der Code hier ist völlig
neutral
* und für jeden JAS passend.
* Die
Festlegung, dass die Werte für die Verbindung in der Datei
'jndi.properties' enthalten sind,
* ist spezifisch für
JBoss und in folgender Kette festgelegt:
* Bibliothek:
jbossall-client.jar (JBoss-spezifisch) >
* package:
javax.naming (Java-spezifisch, für alle JAS gültig –
aber vom Hersteller des JAS codiert) >
* Klasse:
InitialContext (Java-spezifisch, für alle JAS gültig –
aber vom Hersteller des JAS codiert)
*
*/
Context
initialContext = new
InitialContext();
/*
* Construction
der Interface, über die ein Objekt des EJB am JAS konstruiert
wird und
* später dessen Methoden aufgerufen
werden. */
ChatManagementBeanRemote
remoteChatManagementBean;
remoteChatManagementBean
= (ChatManagementBeanRemote)
initialContext.lookup("ejb/ChatManagementBeanJNDI"
);
/*
* Ausführen
der Methode und Ausgabe des Ergebnisses auf der Konsole.
*/
String
result =
remoteChatManagementBean.storeChatEntry(structChat_BO);/*
* Abrufen
von X neuesten Chat-Einträgen auf der Datenbank.
*/
Vector
vecBO_Set =
remoteChatManagementBean.getChatEntryList(5);/*
* Ausgabe
der Werte der Chat-Einträge auf der Konsole.
*/
int
intVectorSize
= vecBO_Set.size();
int
intVectorIndex;
for
(intVectorIndex
= 0; intVectorIndex < intVectorSize; intVectorIndex++)
{
/* Verwenden
des bereits definierten Business Objects für das Auslesen eines
Vector-Eintrags. */
structChat_BO
= (Chat_BO) vecBO_Set.elementAt(intVectorIndex);/* Ausgeben
der Werte auf die Konsole.
*/
System.out
.println(
"Chat-Beitrag:
"
+
structChat_BO.Erstellt_Timestamp
.toString()
+
"
/ "
+
structChat_BO.Erstellt_TCPIP_Adresse
+
"
/ "
+
structChat_BO.Message_Text
);
}
}
catch
(NamingException
e) {
/* Unerwarteter
Fehler beim Erstellen des InitialContext oder beim Ausführen der
Methoden des EJB;
* Fehlermeldung auf die Konsole
ausgeben.
*/
System.out
.println(
"NamingException"
);
e.printStackTrace();
}
}
}
}
Dokument |
Inhalt |
In
diesem Tutorial wird die Eingabe des Chat-Textes und die Ausgabe
der bereits bestehenden Einträge mit einem Web-Browser
durchgeführt. |