> 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 Anleitungen zum Codieren der Einfachen Session Bean.
Dabei wird ein kleiner Schritt zur Modularisierung gesetzt; es wird eine Interface mit den möglichen Länder-Codes 'abgespalten'. Diese Interface kann dann auch von Client-Programmen importiert werden.
Vorigerer Schritt: Einrichten des Projects
Installationanleitung für frühere Version (vor EJB3-Standard)
Vorbemerkung
und Funktion des Codes
Vorbedingungen
Interface
CountryConstants
mit
statischen Werten für den Input erstellen
Generelle
Erklärung der Teile eines EJB
Interface
ShowTimeDateBeanLocal
mit
den Methoden, für die ein Zugriff innerhalb des JAS erlaubt ist,
erstellen
Interface
ShowTimeDateBeanRemote
mit
den Methoden, für die ein Zugriff von Client-Programmen
außerhalb des JAS erlaubt ist, erstellen
Class
ShowTimeDateBean
mit
den Implementierungen der Methoden erstellen
Gesamter
Code am Ende des Schrittes
Datei
CountryConstants.java
Datei
ShowTimeDateBeanLocal.java
Datei
ShowTimeDateBeanRemote.java
Datei
ShowTimeDateBean.java
Weitere Schritte und verwandte Dokumentation
Nächster Schritt: Packen der Dateien in Java-Archive (JAR) und 'deploy'
Wenn
Sie vor der Aufgabe stehen, Code für ältere EJBs adaptieren
zu müssen und die passende Anleitung dafür suchen dann
beginnen Sie bitte mit
Tutorial:
Einfache Session Bean (Java_EJB_01) – Einrichten des
Projects.
Das
äquivalente Dokument für Code-Muster ist Tutorial:
Einfache Session Bean (Java_EJB_01) – Codieren.
Zusätzlich
brauchen Sie noch die Kenntnisse aus dem Schritt Tutorial:
Einfache Session Bean (Java_EJB_01) – XDoclet-Anweisungen
– die
Tätoigkeiten dieses Schrittes entfallen bei der Entwicklung nach
EJB3-Standard
Ein
Session-Bean ist ein Java Enterprise Bean ohne integrierte
Funktionalität für die Verwaltung von 'persistenten' Daten
– das sind Variable deren jeweiliger Wert auf einer Datenbank
gespeichert werden muss.
Der Zugriff auf eine Datenbank kann aber
einfach in einem Session Bean codiert werden; das wird in Tutorial:
Session-Bean mit Datenbank-Zugriff, EJB3-Standard - Codieren
gezeigt.
Innerhalb
einer 'Session' werden die Input-Daten verarbeitet und das Ergebnis
(Output) an das Programm, dass die Session-Bean aufgerufen hat,
zurückgeliefert. Dieses Konzept führt das schon seit
Jahrzehnten bewährte Konzept der Transaktions-Verarbeitung
weiter.
In
diesem Tutorial wird:
* Als Input der ISO-Länder-Code
für Deutsch (DE), Französisch (FR) und US-Englisch (US)
akzeptiert.
* Im Session Bean das aktuelle Datum und die
aktuelle Uhrzeit ermittelt.
* Im Session Bean ein
länderspezifischer Text für Datum / Uhrzeit erstellt und
dieser Text als Ergebnis zurück geliefert.
Dieses
Beispiel wurde gewählt weil:
* Der Code für die
Funktionalität sehr kurz ist und damit für das Codieren
wenig Zeit verbraucht wird.
* Als Input nicht nur eine
Variable eines einfachen Typs verwendet wird,
sondern
diese aus einem 'Set' erlaubter Eingaben sein muß.
Damit
wird ist es erforderlich, die Werte des Sets in einem 'Interface' zu
definieren.
Dieses Interface wird dann vom EJB
und einem Client-Programm importiert
und damit
ist schon im Client-Programm eine Prüfung auf eine erlaubte
Eingabe möglich.
Welche
Methoden des EJB von einer Methode eines Client-Programms aufgerufen
werden dürfen ist in einer Java-Interface-Datei (in diesem
Beispiel ShowTimeDateBeanRemote.java)
festgelegt.
Falls Methoden in dem EJB nicht von einem
Client-Programm, aber von einer anderen Methode innerhalb des
gleichen Java Application Servers (JAS) aufgerufen werden dürfen,
sind diese erlaubten Methode ebenfalls in einer Java-Interface-Datei
(in diesem Beispiel ShowTimeDateBeanLocal.java)
zu definieren.
Schritt 1: Einrichten des Projects ausgeführt – und dessen Vorbedingungen auch.
Wie
schon unter
Vorbemerkung
und Funktion des Codes
erläutert,
sind die erlaubten Werte für den Input des EJB in einem 'Set'
definiert.
Dieses Set wird in einem Interface codiert.
Um ein neues Interface zu eröffnen wird mit der rechten Maustaste das Project (Java_EJB_05) angeklickt und aus dem Kontext-Menu >New>Interface ausgewählt. |
|
Im darauf hin erscheinenden Fenster (New Java Interface) 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 Interface angelegt. |
|
Die erstellte Datei (mit der Java-Interface) ist im 'Package Explorer' von Eclipse gelistet. |
|
Der
Java-Code ist unter Gesamter
Code am Ende des Schrittes > Datei CountryConstants.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.
Es
folgt eine kurze Erklärung des Codes; wenn Ihre Zeit knapp ist
können Sie die Erklärung auch überspringen und gleich
mit dem Abschnitt
Generelle
Erklärung der Teile eines EJB
fortsetzen.
Eine
kurze Erklärung der einzelnen Teile des Codes:
import
java.util.*;
Damit
wird die Programm-Bibliothek importiert, die die Klasse für die
'Locale' enthält.
In 'Locale' ist definiert, in welcher Form
der Text für Zeit und Datum für ein Land dargestellt
werden.
public
static final
String[][]
Country
=
{
{"US"
,
"Time/Date-representation
in US-style"
},
{"FR"
,
"Indication
de Temps et Date en Format francaise"
},
{"DE"
,
"Datums/Zeit-Anzeige
in deutschem Format"
},
};
Zwei-dimensionales
Array mit den Länder-Codes (als Input beim Aufruf des EJB) und
den dazugehörigen, beschreibenden Texten.
public
static final
Locale[]
Country_Locale
=
{
Locale.US
,
Locale.FRANCE
,
Locale.GERMANY
,
};
Dieses
Array enthält die 'Locale' für die jeweiligen Länder
und ist mit dem Array für Länder-Codes und beschreibenden
Texten koordiniert.
Diese 'Locale' werden über die selbe
Index-Zahl angesprochen wie der Länder-Code im
zwei-dimensionalen Array.
Mit
dem EJB3-Standard ist der Code für ein EJB auf (maximal) drei
Dateien aufgeteilt:
|
Schematische
Darstellung der einzelnen Teile für ein Enterprise Java Bean
(EJB) |
Die
Tätigkeiten zur Eröffnung einer (Java-) Interface wurden
bereits im Abschnitt
Interface
CountryConstants
mit
statischen Werten für den Input erstellen
mit
Abbildungen erläutert.
Daher wird in diesem Abschnitt nur
mehr eine Anleitung in Stichworten gegeben.
Um
ein neues Interface zu eröffnen wird mit der rechten Maustaste
das Project (Java_EJB_05) angeklickt und aus dem Kontext-Menu
>New
>Interface
ausgewählt.
Im darauf hin erscheinenden Fenster (New Java Interface) wird
Das 'Package' (js_ejb05.ejb.interfaces.local) festgelegt.
Der Name der Interface (ShowTimeDateBeanLocal) festgelegt.
Die anderen bereits vorgegebenen Werte werden nicht verändert.
Durch
Anklicken der Schaltfläche
[ Finish ]
wird
die Datei für den Quell-Code der Interface angelegt.
Die erstellte Datei (mit der Java-Interface) ist im 'Package Explorer' von Eclipse gelistet. |
|
Der
Java-Code ist unter Gesamter
Code am Ende des Schrittes > Datei ShowTimeDateBeanLocal.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.
Wenn
das importierte (Java-) Package und die 'Injection' @Local
vom
Compiler als fehlerhaft markiert werden |
Es
folgt eine kurze Erklärung des Codes; wenn Ihre Zeit knapp ist
können Sie die Erklärung auch überspringen und gleich
mit dem Abschnitt
Interface
ShowTimeDateBeanRemote
mit
den Methoden, für die ein Zugriff von Client-Programmen
außerhalb des JAS erlaubt ist, erstellen
fortsetzen.
Eine
kurze Erklärung der einzelnen Teile des Codes:
import
javax.ejb.Local;
Damit
wird die Programm-Bibliothek und die Klasse importiert, die die
Funktionalität enthält, mit der der JAS die im
EJB3-Standard neue 'Injection' @Local
ausführen
kann.
/*
'Injection' der Funktionalität für ein 'lokales' EJB
*/
@Local
Im
EJB3-Standard neue Anweisung 'Injection' mit der dem JAS zur
Kenntnis gebracht wird, dass die anschließend definierten
Methoden nur von Methoden in EJB, die innerhalb des JAS laufen
aufgerufen werden dürfen und nicht von Methoden in Objekten
außerhalb des JAS – z.B. Client-Programmen.
public
String[]
getTimeDateString(String parmCountryCode);
Die
einzige Methode in diesem EJB.
Diese darf von Kommandos in
anderen EJB, die innerhalb des gleichen JAS laufen, aufgerufen
werden.
Die
Festlegung, dass diese Methode 'lokal' aufgerufen werden darf, wäre
für dieses Tutorial überhaupt nicht notwendig – wird
aber in diesem Tutorial behandelt um die Wirkungsweise von @Local
und
@Remote
zu
zeigen.
Die
Tätigkeiten zur Eröffnung einer (Java-) Interface wurden
bereits im Abschnitt
Interface
CountryConstants
mit
statischen Werten für den Input erstellen
mit
Abbildungen erläutert.
Daher wird in diesem Abschnitt nur
mehr eine Anleitung in Stichworten gegeben.
Um
ein neues Interface zu eröffnen wird mit der rechten Maustaste
das Project (Java_EJB_05) angeklickt und aus dem Kontext-Menu
>New
>Interface
ausgewählt.
Im darauf hin erscheinenden Fenster (New Java Interface) wird
Das 'Package' (js_ejb05.ejb.interfaces.remote) festgelegt.
Der Name der Interface (ShowTimeDateBeanRemote) festgelegt.
Die anderen bereits vorgegebenen Werte werden nicht verändert.
Durch
Anklicken der Schaltfläche
[ Finish ]
wird
die Datei für den Quell-Code der Interface angelegt.
Die erstellte Datei (mit der Java-Interface) ist im 'Package Explorer' von Eclipse gelistet. |
|
Der
Java-Code ist unter Gesamter
Code am Ende des Schrittes > Datei ShowTimeDateBeanRemote.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.
Wenn
das importierte (Java-) Package und die 'Injection' @Remote
vom
Compiler als fehlerhaft markiert werden |
Es
folgt eine kurze Erklärung des Codes; wenn Ihre Zeit knapp ist
können Sie die Erklärung auch überspringen und gleich
mit dem Abschnitt
Class
ShowTimeDateBean
mit
den Implementierungen der Methoden erstellen
fortsetzen.
Eine
kurze Erklärung der einzelnen Teile des Codes:
import
javax.ejb.Remote;
Damit
wird die Programm-Bibliothek und die Klasse importiert, die die
Funktionalität enthält, mit der der JAS die im
EJB3-Standard neue 'Injection' @Remote
ausführen
kann.
/*
'Injection' der Funktionalität für ein 'remote' EJB
*/
@Remote
Im
EJB3-Standard neue Anweisung 'Injection' mit der dem JAS zur
Kenntnis gebracht wird, dass die anschließend definierten
Methoden nur von Methoden in Programmen, die außerhalb des JAS
laufen (Client-Programme) aufgerufen werden dürfen und nicht
von Methoden in Objekten innerhalb des JAS.
public
String[]
getTimeDateString(String parmCountryCode);
Die
einzige Methode in diesem EJB.
Diese darf von Kommandos in
anderen EJB, die innerhalb des gleichen JAS laufen, aufgerufen
werden.
Class
ShowTimeDateBean
mit
den Implementierungen der Methoden erstellen
Um eine neues Java-Klasse zu eröffnen wird mit der rechten Maustaste das Project (Java_EJB_05) angeklickt und aus dem Kontext-Menu >New >Class ausgewählt. |
|
Im darauf hin erscheinenden Fenster (New Java Class) 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. |
|
Die erstellte Datei (mit der Java-Klasse) ist im 'Package Explorer' von Eclipse gelistet. |
|
Der
Java-Code ist unter Gesamter
Code am Ende des Schrittes > Datei ShowTimeDateBean.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.
Wenn
das importierte (Java-) Package und die 'Injection' @Stateless
vom
Compiler als fehlerhaft markiert werden |
Es
folgt eine kurze Erklärung des Codes; wenn Ihre Zeit knapp ist
können Sie die Erklärung auch überspringen und gleich
mit dem nächsten Schritt des Tutorials (
Tutorial:
Einfache Session Bean, EJB3-Standard (Java_EJB_05) – Packen in
JAR-Datei und 'deploy'
)
fortsetzen.
Die
Erklärung erfolgt nur für Codeteile die speziell für
ein EJB entsprechend dem EJB3-Standard und dadurch bedingter
Entwurfsentscheidungen notwendig sind.
Der Algorithmus und die
Java-Anweisungen für die Ermittlung von Datum und Zeit und die
Darstellung in einer sprachspezifischen Zeichenkette werden als
bekannt vorausgesetzt.
Eine
kurze Erklärung der einzelnen Teile des Codes:
import
javax.ejb.Stateless;
Damit
wird die Programm-Bibliothek und die Klasse importiert, die die
Funktionalität enthält, mit der der JAS die im
EJB3-Standard neue 'Injection' @Stateless
ausführen
kann.
Mit 'Stateless' wird dem JAS mitgeteilt, dass das EJB so
programmiert ist, dass eine Instanz der Klasse gleichzeitig von
mehreren aufrufenden Programmen verwendet werden kann. Eine
Erklärung zur Wirkungsweise von 'Stateless' bzw. 'Stateful'
finden Sie im Dokument Überlegungen
zum Entwurf von EJB (Enterprise Java Beans).
import
js_ejb05.staticvalues.CountryConstants;
Die
Werte für die möglichen Sprachcodes wurden in eine eigene
Interface ausgelagert weil die darin definierten Werte auch für
das Client-Programm notwendig sind.
import
js_ejb05.ejb.interfaces.local.*;
import
js_ejb05.ejb.interfaces.remote.*;
Im
EJB3-Standard werden die Methoden auf die 'Remote' (von Programmen
außerhalb des JAS) bzw. 'Local' (von EJB die im gleichen JAS
laufen) zugegriffen werden darf, in eigenen (Java-) Interface
Dateien festgelegt.
Diese Interfaces werden dann durch die
Anweisung
implements
ShowTimeDateBeanLocal,
ShowTimeDateBeanRemote
in
die (Java-) Klasse eingebunden.
Die
Festlegung, dass die einzige in der Klasse enthaltene Methode
'lokal' aufgerufen werden darf, wäre für dieses Tutorial
überhaupt nicht notwendig – es wird aber eine (Java-)
Interface für die 'lokale Erlaubnis' erstellt um die
Wirkungsweise von @Local
und
@Remote
zeigen
zu können.
/*
'Injection' der Funktionalität für ein 'stateless' EJB.
*/
@Stateless(name=
"Java_EJB_05_Tutorial"
,
mappedName=
"ejb/ShowTimeDateBeanJNDI"
)
Im
EJB3-Standard neue Anweisung der Art 'Injection' mit der dem JAS zur
Kenntnis gebracht wird, dass diese Klasse 'Stateless' ist. Eine
Erklärung zur Wirkungsweise von 'Stateless' bzw. 'Stateful'
finden Sie im Dokument Überlegungen
zum Entwurf von EJB (Enterprise Java Beans).
Entsprechend
der Definition von EJB ist die Definition @Stateless
(ohne
den weiteren Definitionen in der Klammer) ausreichend.
In diesem
Fall bildet der JAS (Java Application Server) aus dem Namen der
Klasse einen JNDI-Namen. Dieser JNDI-Name wird gebraucht, um in
einem Client-Programm eine Verbindung mit dem EJB aufnehmen zu
können; die Implementierung dafür ist unter
Client-Programm
für einfache Session Bean, EJB3-Standard (Java_EJB_06 >
Verbindung zum JAS codiern, Methode des EJB aufrufen und Ergebnis
anzeigen beschrieben.
In diesem Beispiel ist durch die Anweisung
mappedName=
"ejb/ShowTimeDateBeanJNDI"
ein
JNDI-Name definiert.
Die Entscheidung habe ich aus 2 Gründen
getroffen:
* Ich erspare mir die Erklärung, wie
der JAS den JNDI-Namen bildet und es ist klarer ersichtlich, unter
welchem JNDI-Namen das EJB im JAS registriert wird.
* Zum
Zeitpunkt des Schreibens dieses Dokuments (August 2009) haben
einzelne JAS noch nicht die Fähigkeit, einen JNDI-Namen aus dem
Namen der Java-Klasse zu bilden. Ein Zugriff auf das EJB aus einem
Client-Programm ist dann nicht möglich.
Mit
späterer Erfahrung – und für die 'Produktion' von
echten Anwendungen – kann eine Definition des JNDI-Namens in
der Datei 'ejb-jar.xml' im Verzeichnis 'META-INF' festgelegt
werden.
Eine
weitere Anweisung ist name=
"Java_EJB_05_Tutorial"
.
Damit kann in Konfigurationsdateien auf diese Klasse mit dem EJB
referenziert werden.
Die wichtigste Verwendung (Änderung des
'Mapped JNDI Namens' in der Konfigurationsdatei 'ejb-jar.xml')
finden Sie im Schritt 4: Packen
in EAR-Datei und Ändern des JNDI-Namens > Ändern des
JNDI-Namens.
public
class
ShowTimeDateBean
implements
ShowTimeDateBeanLocal,
ShowTimeDateBeanRemote
{
Definition
der Klasse.
Dabei werden die (Java-) Interfaces für die
Definitionen auf welche Methoden 'lokal' und 'remote' zugegriffen
werden darf, 'implementiert'.
Der
Code für den 'Kern' der Anwendung (Ermitteln von Datum und Zeit
und Erstellen einer sprachspezifischen Zeichenkette für die
Ausgabe) enthält keine speziellen Anweisungen für ein EJB
und könnte genau so gut für ein 'Stand-Alone' Programm
verwendet werden.
Gesamter
Code am Ende des Schrittes
package
js_ejb05.staticvalues;
import
java.util.*;
/**
*
* @author kurt(at)javascout[dot]biz
* @date
2009-02-07
*
* @description
* Interface
mit den Werten für möglichen Input in das
EJB
* Java_EJB_05 (erstellt im Tutorial für
das Session Bean).
* Nähere Beschreibungen
sind bei den Datenstrukturen zu finden.
*
*
@change-log
* when who why
*
--------------------------------------------------------
*
*/public
interface
CountryConstants
{
/*
* Zwei-dimensionales
Array für die 'implementierten' Länder-Codes und
* den
erklärenden Text in der jeweiligen Landessprache. */
public
static final
String[][]
Country
=
{
{"US"
,
"Time/Date-representation
in US-style"
},
{"FR"
,
"Indication
de Temps et Date en Format francaise"
},
{"DE"
,
"Datums/Zeit-Anzeige
in deutschem Format"
},
};/*
* Array
für die 'Locale' der einzelnen Länder. Im Locale iat auch
* die Information, wie Datum/Zeit in einem Textstring
dargestellt wird. */
public
static final
Locale[]
Country_Locale
=
{
Locale.US
,
Locale.FRANCE
,
Locale.GERMANY
,
};}
package
js_ejb05.ejb.interfaces.local;
/*
* Basisklasse
für die 'lokale' Funktionalität eines EJB gemäß
dem EJB3-Standard.
* 'Lokal' bedeutet, dass die
Methoden des EJB von einem anderen EJB innerhalb des
* Java-Application-Server (JAS) aufrufbar sind.
* Die
Funktionalität dieser Basisklasse wird nicht durch 'Vererbung'
übertragen
* sondern durch die (im EJB3-Standard
neue) 'Injection': @Local . */
import
javax.ejb.Local;
/*
'Injection' der Funktionalität für ein 'lokales' EJB
*/@Local
/**
*
* @author kurt(at)javascout[dot]biz
* @date
2009-02-07
*
* @description
* Interface
mit den Methoden die von anderen EJBs innerhalb des JAS aufrufbar
sind.
*
* @change-log
*
when who why
*
--------------------------------------------------------
*
*/public
interface
ShowTimeDateBeanLocal
{
/*
* Methode
zum Bilden einer länder-spezifischen Zeichenkette mit aktuellem
Datum und Uhrzeit.
* Die Implementierung der Methode
erfolgt in der Klasse 'ShowTimeDateBean'. */
public
String[]
getTimeDateString(String parmCountryCode);
}
package
js_ejb05.ejb.interfaces.remote;
/*
* Basisklasse
für die 'entfernte' Funktionalität eines EJB gemäß
dem EJB3-Standard.
* 'Entfernt / remote' bedeutet, dass
die Methoden des EJB von einem Client-Programm
* außerhalb
des Java-Application-Server (JAS) aufrufbar sind.
* Die
Funktionalität dieser Basisklasse wird nicht durch 'Vererbung'
übertragen
* sondern durch die (im EJB3-Standard
neue) 'Injection': @Remote . */
import
javax.ejb.Remote;
/*
'Injection' der Funktionalität für ein 'remote' EJB
*/@Remote
/**
*
* @author kurt(at)javascout[dot]biz
* @date
2009-02-07
*
* @description
* Interface
mit den Methoden die von Client-Programmen außerhalb des JAS
aufrufbar sind.
*
* @change-log
*
when who why
*
--------------------------------------------------------
*
*/public
interface
ShowTimeDateBeanRemote
{
/*
* Methode
zum Bilden einer länder-spezifischen Zeichenkette mit aktuellem
Datum und Uhrzeit.
* Die Implementierung der Methode
erfolgt in der Klasse 'ShowTimeDateBean'. */
public
String[]
getTimeDateString(String parmCountryCode);
}
package
js_ejb05.ejb.beans;
/*
* Basisklasse
für ein Stateless Session Bean.
* >Stateless<
bedeutet, dass in einem Bean-Objekt keine Werte 'aufgehoben'
werden.
* Durch die Anweisung 'Stateless' braucht der
JAS (Java Application Server) nicht ein
* neues Objekt
der Bean konstruieren wenn eine Anforderung eines anderen Clients
erfolgt
* sondern kann die angeforderte Methode des
bereits bestehenden Bean-Objekts ausführen.
* Die
Funktionalität dieser Basisklasse wird nicht durch 'Vererbung'
übertragen
* sondern durch die (im EJB3-Standard
neue) 'Injection': @Stateless . */import
javax.ejb.Stateless;
/*
* Basisklassen
für die Ermittlung von aktuellem Datum und Uhrzeit und
Umwandlung in
* länderspezifischen Text. */import
java.text.DateFormat;
import
java.util.Date;
/*
* Interface
mit den definierten Länder-Codes und dazu passender
(Java-Klasse) 'Locale'. */import
js_ejb05.staticvalues.CountryConstants;
/*
* Interfaces
mit den Methoden die für 'lokalen' und 'entfernten / remote'
Aufruf freigegeben sind. */import
js_ejb05.ejb.interfaces.local.*;
import
js_ejb05.ejb.interfaces.remote.*;
/*
* >Injection<
der Funktionalität für ein >stateless< EJB.
*/@Stateless(name="
Java_EJB_05_Tutorial"
,
mappedName="
ejb/ShowTimeDateBeanJNDI"
)
/**
*
* @author
kurt(at)javascout[dot]biz
* @date 2009-02-07
*
*
@description
* Klasse für das Session-Bean
Java_EJB_05 – erstellt im gleichnamigen Tutorial.
* Nähere
Beschreibungen der Funktionalität sind bei den Methoden zu
finden.
*
* @change-log
*
when who why
*
--------------------------------------------------------
*
*/public
class
ShowTimeDateBean
implements
ShowTimeDateBeanLocal,
ShowTimeDateBeanRemote
{
/*
* Implementierung
derMethode zum Bilden einer länder-spezifischen Zeichenkette
* mit aktuellem Datum und Uhrzeit. */
public
String[]
getTimeDateString(String parmCountryCode) {
/* Array
für return erstellen. */
String[]
arrayReturnValue = new
String[2];
/* 1.
Teil des Array: übergebener Länder-Code.
*/
arrayReturnValue[0]
= parmCountryCode;/* 2.
Teil des Array: vorläufig
Fehler-Hinweis;
* wenn
übergebener Wert gültig ist: Text mit Datum Uhrzeit später.
*/
arrayReturnValue[1]
= "Unbekannter
Länder-Code"
;
/*
* Durchsuchen
des Arrays ob der Input-Parameter darin vorhanden ist. */
int
intIndex;
int
intCountryArraySize
= CountryConstants.
Country
.
length
;
for
(intIndex
= 0; intIndex < intCountryArraySize; intIndex++) {
/* Vergleichen
ob der Länder-Code aus dem Input-Parameter jenem im Array
entspricht. */
if
(parmCountryCode.trim().compareToIgnoreCase(
CountryConstants.Country
[intIndex][0].trim())
== 0) {
/* Passenden
Array-Eintrag gefunden;
* Zeit/Datum ermitteln, in
Länderspezifischen String bringen und zurückliefern.
*/
Date
now = new
Date();
/* Sprachspezifischen
String in den Länderspezifischen String übertragen.
*/
arrayReturnValue[1]
= CountryConstants.Country
[intIndex][1]
+
": "
;
/* Datum
in voller Länge entsprechend dem länderspezifischen Format
aufbereiten
* und zum Länderspezifischen String
hinzufügen. */
arrayReturnValue[1]
+= DateFormat.getTimeInstance(
DateFormat.FULL
,
CountryConstants.
Country_Locale
[intIndex]).format(now);
/* for-loop
beenden. */
break
;
}
}/*
* Gefülltes
Array zurückliefern. */
return
arrayReturnValue;
};}
Dokument |
Inhalt |
Im
nächsten Schritt des Tutorial wird beschrieben, wie die
Java-Archive-Datei (JAR) generiert wird, die an den
Java-Application-Server (JAS) übergeben ('deployed')
wird. |