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

Tutorial: Einfache Session Bean (Java_EJB_01) – Codieren

* 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, daß 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:
2007-10-16


Dieses Tutorial ist nur mehr sinnvoll, wenn Sie Kenntnisse für EJBs vor dem EJB3-Standard erwerben wollen.

Mit der Einführung des Standards EJB3 wird das Konfigurieren des Deployment-Descriptors vereinfacht und die dafür notwendigen XDoclet-Anweisungen innerhalb des Java-Codes sind nicht mehr notwendig.
Das dem EJB3-Standard entsprechende Tutorial beginnt mit dem Dokument
Tutorial: Einfache Session Bean, EJB3-Standard (Java_EJB_05) – Einrichten des Projects.
Äquivalent zu diesem Schritt ist
Tutorial: Einfache Session Bean, EJB3-Standard (Java_EJB_05) – Codieren.

Die Kenntnisse für das Entwickeln von EJBs vor dem EJB3-Standard sind nur dann sinnvoll wenn Sie älteren Code – mit den darin enthaltenen Xdoclet-Anweisungen zum Generieren des Deployment-Descriptors - für EJB adaptieren wollen.



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:
Ca.
.

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.

Inhaltsverzeichnis:

Vorigerer Schritt: Einrichten des Projects 

Vorbemerkung und Funktion des Codes 
Vorbedingungen 
Statische_Werte für den Input definieren 
* Interface
CountryConstants eröffnen 
* Quell-Code für
CountryConstants 
Session-Bean codieren 
* Class
ShowTimeDateBean eröffnen 
* Quell-Code für
ShowTimeDateBean 
Weitere Schritte und verwandte Dokumentation 

Nächster Schritt: XDoclet-Anweisungen 

Vorbemerkung und Funktion des Codes

Ein Session-Bean ist ein Java Enterprise Bean ohne integrierte Funktionalität für den Zugriff auf eine permanente Speichermöglichkeit (z.B. Datenbank).
(Der Zugriff auf eine Datenbank kann aber einfach in einem Session Bean codiert werden; das wird in
Tutorial: Session-Bean mit Datenbank-Zugriff - Codieren gezeigt.)
Innerhalb einer 'Session' werden die Input-Daten verarbeitet und das Ergebnis (Output) an das Programm, daß 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 Deutschland (DE), Frankreich (FR) und USA (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.

Vorbedingungen

zum Inhaltsverzeichnis

Statische Werte für den Input definieren

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.

zum Inhaltsverzeichnis

Interface CountryConstants eröffnen

Um ein neues Interface zu eröffnen wird mit der rechten Maustaste das Project (Java_EJB_01) angeklickt und aus dem Kontext-Menu >New>Interface ausgewählt.

  

Im darauf hin erscheinenden Fenster (New Java Interface) wird

  • Das 'Package' (js_ejb01.staticvalues) festgelegt.

  • Der Name der Interface (CountryConstants) 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.

zum Inhaltsverzeichnis

Quell-Code für CountryConstants

package js_ejb01.staticvalues;
 
import
java.util.*;
/**
 *
 * @author kurt@javascout.biz
 * @date 2007-10-22
 *
 * @description
 *  Interface mit den Werten für möglichen Input in das EJB
 *  Java_EJB_01 (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,
    };
}

Anschließend wird der Code durch Anklicken des Save-Symbols ( / Diskette links oben) gespeichert.

Eine kurze Erklärung der einzelnen Teile des Codes:

zum Inhaltsverzeichnis

Session Bean codieren

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.

zum Inhaltsverzeichnis

Class ShowTimeDateBean eröffnen

Um eine neues Java-Klasse zu eröffnen wird mit der rechten Maustaste das Project (Java_EJB_01) angeklickt und aus dem Kontext-Menu >New>Class ausgewählt.

  

Im darauf hin erscheinenden Fenster (New Java Class) wird

  • Das 'Package' (js_ejb01.ejb.bean) festgelegt.

  • Der Name der Klasse (ShowTimeDateBean) festgelegt.

  • Die Interface (javax.ejb.SessionBean) wird durch Anklicken der Schaltfläche [ Add... ] hinzugefügt.

  • Die Auswahl '[  ] Constructors from superclass' wird markiert.

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.

zum Inhaltsverzeichnis

Quell-Code für ShowTimeDateBean

Aus der implementierten Interface () werden die Basis-Methoden (ohne funktionalen Code) generiert.
Zur Unterscheidung zwischen zu schreibendem und generiertem Code sind die generierten Methoden, die nicht verändert wurden, und importierten Bibliotheken komplett in schwarzer Schrift dargestellt.
Code, der zu schreiben ist, wird in Fettschrift dargestellt.

package js_ejb01.ejb.bean;
 
import java.rmi.RemoteException;
 
import javax.ejb.EJBException;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

 
import java.text.DateFormat;
import
java.util.*;
 
import
js_ejb01.staticvalues.*;
/**
 *
 * @author kurt@javascout.biz
 * @date 2007-10-23
 * 
 * Anweisungen für XDoclet
 * @ejb.bean name = "ShowTimeDate"
 *           jndi-name = "ejb/js_ejb01/ShowTimeDate"
 *           view-type = "remote"
 *           display-name = "ShowTimeDate EJB"
 *           description = "EJB (Session Bean) aus EJB-Tutorial 01"
 *
 * @description
 *  Klasse für das Session-Bean Java_EJB_01 (erstellt im Tutorial für das Session Bean).
 *  Nähere Beschreibungen sind bei den Methoden zu finden.
 *
 * @change-log
 * when         who               why
 * --------------------------------------------------------
 *
 */

public class ShowTimeDateBean implements SessionBean {
/*
 * Eindeutige Identifikation der Klasse;
 * Jahr (einstellig), Monat, Tag, Stunde, Minute. */
    static final long serialVersionUID = 710221254;
/*
 * Constructor-Methode; wird aufgerufen wenn die Klasse erstellt wird. */

    public ShowTimeDateBean() {
/*
 * Kein spezieller Code; nur jenen aus der geerbten Interface ausführen. */
      super();
    };
 
    public void ejbCreate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
    };
 
    
public void ejbActivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
    };
 
    
public void ejbPassivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
    };
 
    
public void ejbRemove() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
    };
 
    
public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {
        // TODO Auto-generated method stub
    };
/*
 * Methode zum Ermitteln von Zeit und Datum und Aufbereiten des Text-Strings.
 * (Hauptgeschäftszweck dieses EJB). */
/**
 * Anweisungen für XDoclet.
 * @param parmCountryCode
 * @return String[]
 *  1.Teil des Arrays: Länder-Code wie im parmCountryCode übergeben.
 *                     für Kontrollzwekce (das ist ein Übungsbeispiel).
 *  2.Teil des Arrays: Text mit Erklärung und aktueller Uhrzeit/Datum.
 *
 * @ejb.interface-method view-type = "remote" */
    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 in 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;
    };

}

Anschließend wird der Code durch Anklicken des Save-Symbols ( / Diskette links oben) gespeichert.

Eine kurze Erklärung der einzelnen Teile des Codes die nicht kommentiert sind:

zum Inhaltsverzeichnis

Weitere Schritte und verwandte Dokumentation

Dokument

Inhalt

Tutorial: Einfache Session Bean (Java_EJB_01) – XDoclet-Anweisungen  

Im nächsten Schritt des Tutorial werden die Parameter für das Generieren von weiteren Klassen und XML-Dateien mit Beschreibungen des EJB für den Java Application Server vorgestellt.

zum Inhaltsverzeichnis