Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 1Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
Java-KomponentenJava-Komponenten
Inhalt des Tutorials:
Übersicht zur JavaBean-Technologie
Entwicklung von JavaBeans
Beans als Grundbausteine bei der visuellen Programmierung
Komponenten am Beispiel von Enterprise Java Beans (EJB‘s)
Schritte zur Implementierung und Anwendung von EJB‘s
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 2Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Zielstellung der Anwendung von Java Beans: Unterstützung der Idee einer arbeitsteiligen Softwareentwicklung Spezialisierte Zulieferunternehmen
IV-technische Komponenten Domain- bzw. fachspezifische Komponenten
Reduktion der Erstellungszeiten von Informationssystemen Verwendung der Sprache Java für die Implementierung, .d.h. der
Sprachumfang von Java wurde nicht erweitert. Visuelle Programmierung mittels Bean-Builder Tools
BDK Bean Development Kit (Referenzimplementierung) Java-Studio (Entwicklung bei SUN aber eingestellt) VisualAge for Java (Umfangreiche Anwendung von Beans)
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 3Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Definition von Java Beans entsprechend SUN:
„JavaBeans components, or Beans, are reusable software
components that can be manipulated visually in a builder tool.
Beans can be combined to create traditional applications, or
their smaller web-oriented brethren, applets. In additional,
applets can be designed to work as reusable Beans.“
Quelle: Javasoft API sprecifications
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 4Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Java Beans Komponenten Modell: Eine Komponente ist ein identifizierbares Stück Software mit eindeutig und
vor allem gut definierten Grenzen
Die Spezifikation der JavaBeans beschreiben eine Komponenten-
Architektur für Java Modell beschreibt auch wie die Komponenten mit ihrem Container interagieren
Container bieten Komponenten eine Umgebung zur Ausführung
Bedarf an zwei Typen von Programmierern Komponenten-Entwickler (developers)
Komponenten-Monteure (assembler)
JavaBeans als Black Box Komponente (Prinzip der Kapselung)
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 5Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
VisualPresentation
Events Properties Introspection Persistence Customizer
B ean S ystem Fram ework
O R B S ervices Bean 1
Bean 2
Bean 3
Bean n
eigeneBeans
Q uelle : O rfa li, C lient/Server Programming with Java and CO RBA
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 6Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Überblick zu den Eigenschaften von Java Beans I: Introspection (Selbstbeobachtung) - Java Beans können zur Laufzeit
Auskunft hinsichtlich gebotener Funktionen und Eigenschaften geben Auf den direkten Quellcode-Zugriff kann so verzichtet werden Implizite Introspection-Funktion bietet alle Methoden des Bean Explizite Introspection-Funktion über das BeanInfo Interface
Customisation (Anpassung) - Beans können entsprechend den aktuellen Erfordernissen über die Nutzung von Dialogen angepaßt werden. Angebot an Standard-Dialogen Angebot an angepaßten Dialogen
Event-Handling (Ereignisverarbeitung) - Verwendung des Delegation-Event-Handling-Model (Event-Sources und Event-Listener)
Persistenz - Möglichkeit der dauerhaften Abspeicherung alter und neuer Werte von Properties
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 7Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Überblick zu den Eigenschaften von Java Beans II: Methoden - werden genutzt um entsprechende Properties des Beans zu
ändern. Alle als „public“ definierte Methoden werden in einem Bean-Builder-Tool angeboten. Einschränkung der angebotenen Methoden über BeanInfo-Klasse Einschränkung auch beim Import des Bean in ein Builder-Tool möglich
Properties - (Eigenschaften) - Kapseln Daten einer Instanz eines Bean und können von außen abgefragt und geändert werdenSignature pattern für Properties: getProperty() / setProperty() Simple Properties - repräsentieren einen einzelnen Wert Indexed Properties - Array gleichen Datentyps Bound Properties - Kombination eines Properties mit einem Event (z.B.
ausgelöst nach der Änderung eines Properties) Constrained Properties - Zustimmung zur Änderung einer Propertie von z.B.
einem anderen Bean holen
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 8Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Package für Java Beans:Erweiterung des JDK um das Package „java.beans.*“ Bean spezifische Interfaces
BeanInfo - allg. Schnittstelle zur Beschreibung des Beans Customizer - graph. Assistenten zur Einstellung der Eigenschaften von Beans PropertyChangeListener - Interface für Events, die Änderungen Properties mitteilen Visibility - Interface für Beans ohne GUI ...
Bean spezifische Klassen Beans - Methoden für Instanzen zur Behandlung im Design Modus von Builder Tools BeanDescriptor - allg. Informationen über ein Bean öffentlich bereitstellen Introspection - Methoden für die gleichnamige Eigenschaft SimpleBeanInfo - einfache Implementierung des Interfaces BeanInfo ...
Bean spezifische Exceptions IntrospectionException - geworfen bei Fehlern während des Introspection Vorgangs ...
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 9Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Implementierung von Java-Beans: notwendige Klasse/Packages importieren Klasse definierten, Objekt initialisieren über Konstruktor Anwendungslogik implementieren Event-Handling - Methoden zum registrieren bzw. entfernen interessierter
Listener Beispiel einer Bound-Methoden-Sigatur (getProperty()/setProperty())
//Propertie für Text setzen und lesen public void setText(String newText) { String oldText = text; text = newText; //Auslösung eines entsprechenden Event propertyChangeListeners.firePropertyChange("text",
oldText, newText); }
public String getText() { return text; }
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 10Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Beispiel eines Java-Beans 1:package Beans;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.Serializable;
Das folgende Bean3 wird von Panel abgeleitet und implementiert die Interfaces Serializable für die Realisierung der Persistenzeigenschaften eines Beans und Runnable um innerhalb des Beans Threads verwenden zu können.
public class Bean3 extends Panel implements Serializable, Runnable{
BorderLayout borderLayout1 = new BorderLayout();
TextField textField1 = new TextField();
Thread t = new Thread(this);
private String text = "leer";
public String i ;
public int a =0;
private boolean ind=false;
private transient PropertyChangeSupport propertyChangeListeners = new PropertyChangeSupport(this);
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 11Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Beispiel eines Java-Beans 2:Über den parameterlosen Konstruktor wird das Bean bzw. die Objektinstanz initialisiert, die eigentlichen Eigenschaften werden in der Methode jbInit(), welche innerhalb des Konstruktur aufgerufen wird festgelegt.
//parameterloser Konstruktor
public Bean3() {
try {
jbInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//Initialisierung der Bean-Komponente
private void jbInit() throws Exception {
this.setSize(new Dimension(186, 24));
textField1.setText("Bean3");
this.setLayout(borderLayout1);
this.add(textField1, BorderLayout.NORTH);
}
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 12Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Beispiel eines Java-Beans 3:Der folgende Thread realisiert die eigentliche Zeitzählung, wobei das Propertie “Text” durch die Methode “setText” entsprechend dem Ergebnis der Hochzählung gesetzt wird.
//Thread für die Ausführung starten public void run(){ //Endlosschleife for (;;){ ind=true; a=a + 1; i=""+ a; setText(i); textField1.setText(text); try{ Thread.sleep(1000); }catch (InterruptedException ex){} } }
Diese Methode realisiert den eigentlichen Start der Stopuhr und soll in einem Bean-Builder-Tool zur Verfügung stehen.
// Start der Uhr public void start(){ if (ind) { t.resume(); } else{ t.start(); setText(i); } }
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 13Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Beispiel eines Java-Beans 4:
Diese Methode realisiert den eigentlichen Stop der Stopuhr soll ebenfalls im Bean-Builder-Tool zur Verfügung stehen.
// Stop der Uhr public void stop(){
t.suspend(); // Thread beenden
}
Diese Methode realisiert das Rücksetzen der Stopuhr auf 0 soll ebenfalls im Bean-Builder-Tool verwendet werden können.
// Rücksetzen auf 0
public void reset(){
a= 0;
i="0";
setText(i);
textField1.setText(text);
}
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 14Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Beispiel eines Java-Beans 5:
Die folgenden beiden Methoden entsprechenden dem Entwurfsmuster (Methoden-Signatur) für Java-Beans und realisieren so das Property dieses Beans. Ebenso werden entsprechende Listener (z.B. ein anderes Bean) über Änderungen des Property durch ein entsprechedes Event “propertyChangeListener” informiert.
//Propertie für Text setzen und lesen
public void setText(String newText) {
String oldText = text;
text = newText;
//Auslösung eines entsprechenden Event
propertyChangeListeners.firePropertyChange("text", oldText, newText);
}
public String getText() {
return text;
}
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 15Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Beispiel eines Java-Beans 6:
Die folgenden beiden Methoden realisieren in der späteren Bean-Applikation die Registrierung von auf Events wartenden Listenern.
//entfernen eines registrierten Listener
public synchronized void removePropertyChangeListener(PropertyChangeListener l) {
propertyChangeListeners.removePropertyChangeListener(l);
}
//registrieren eines registrierten Listener
public synchronized void addPropertyChangeListener(PropertyChangeListener l) {
propertyChangeListeners.addPropertyChangeListener(l);
}
}
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 16Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Funktion der Bean-Info-Klasse:Problem: alle public definierten Methoden werden in einem Bean-Builder angezeigt, auch die ererbten. Wird keine eigene Bean-Info-Klasse definiert, erfolgt die Verwendung von „SimpleBeanInfo“
Filterfunktionen (verbergen von Komplexität) Bean Descriptor - Zuordnung komplexere Customizer-Dialoge Property Descriptor - Auswahl definierter Properties Method Descriptor - Auswahl konkreter Methoden Event Set Descriptor - Auswahl der angebotener Events
Zuordnung eines korrespondierenden Icon Dateinamen von BeanInfo-Klassen setzen sich immer aus der Orginal-
komponente + BeanInfo zusammen.
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 17Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Beispiel eines Method-Desciptors (in BeanInfo):public MethodDescriptor[] getMethodDescriptors() {
// First find the "method" object.Class args[] = {};Method m, m1, m2;try {
m = Bean3.class.getMethod("start", args); m1 = Bean3.class.getMethod("stop", args); m2 = Bean3.class.getMethod("reset", args);
} catch (Exception ex) { // "should never happen" throw new Error("Missing method: " + ex);}
// Now create the MethodDescriptor array:MethodDescriptor result[] = new MethodDescriptor[3];result[0] = new MethodDescriptor(m);
result[1] = new MethodDescriptor(m1); result[2] = new MethodDescriptor(m2);
return result; }
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 18Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
JAR-Files Packetierung von Java Beans: Ein zu verteilendes Beans enthält typischerweise mehrere Files JAR Java Archive Files für die Packetierung von Beans, dabei handelt es sich
um ein ZIP-File, welches zusätzlich eine Manifest-Datei enthält. Inhalte eines JAR-Files:
ein Satz von Java-Class Files einen Satz serialisierter Objekte optionales Help-File in HTML-Format optionale Lokalisierungs-Informationen optionales Icon im GIF Format weitere Ressource-Files die vom Bean benötigt werden
Beispiel einer Manifest-Datei:// Example.lstManifest-Version: 1.0Name: Example.classJava-Bean: True
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 19Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Visuelle Entwicklung unter dem BDK: Bean-Box, Container-Panel entspricht der späteren Java-AnwendungToolBox, enthält eigene und Beispiel-KomponentenProperty-Sheet, Anzeige der Eigenschaften ausgewählter Komponenten
Funktionen des BDK: benötigte Beans per “Drag & Drop” plaziert. Ausgewählt werden die Beans über eine Toolbox vom Bean exportierte Properties bearbeiten Anzeige der Properties je Bean über entsprechenden Dialog Event-Source mit Event-Handler kombinieren (Drag & Drop) Fertige Anwendungen z.B. Applets werden herausgeneriert Anwendung (Beans und Compositions-Fenster) speichern neue Beans aus JAR-Files einlesen lauffähiges Applet erzeugen
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 20Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 21Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Festlegen derAnwendungsarchitektur
Auswahl benötigterKom ponenten
Anpassung/Konfiguration derKom ponenten
Verbinden der Kom ponenten
Test der Gesam tapplikation
Gewährleistung W artung undPfelge
Schritte bei der bean-orientierten Entw icklung
Grundlegende Kenntnisse desJava-Bean-Modell
Angebot Bean-B ibliotheken
Zugriff auf P roperties
E in- und Ausgaben (i.a. publicMethoden und Param eter)
Test aus fachlicher S icht(B lack-Box)
Angebot eines Modells zurDarstellung verw. Beans
benötig teInform ationen
Definition der fachlichenAnforderungen
textuell oder form alisiert (z.B .OOA nach UML)
GUI der Applikation: Black Box Sicht auf die Komponenten alle Beans haben hier eine grafische
Präsentation (nicht immer!!) Applikation (z.B. Applet) muß aus dem
Builder-Tool generiert werden
Design einer Entwicklung unter dem Visual Studio:
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 22Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie
Verwendete Beans:(visuelles Plazieren, angebotene Connectoren) Button-Beans (Start, Stop, Reset) Zähler (Impulsgeber alle 1 sek.) Ausgabe-Bean (Stopuhr) Label zur Beschriftung Laufschrift-Bean
Customize-Dialog:
Entwicklung unter dem JavaStudio:
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 23Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Enterprise-JavaBeans(EJB)-Architektur: Server-seitige Java-Komponenten (Focus: Anwendungsdomaine) SUN bietet Spezifikation für Beans, Server und Container
Referenzimplementierung J2EE Vielzahl angebotener Applikation-Server
Portable Anwendungen auf der Basis von EJB‘s Hardwareunabhängig Betriebssystemunabhängig Unterstützung verschiedener Sprachen und CORBA
Abstraktes Programmierinterface Entlastung von “low-level“ Aufgaben
Transaktionsverwaltung Multithreading Ressourcenverwaltung
Unterstützung der Wiederverwendbarkeit Entwicklung ist völlig unabhängig von der Installation, Konfiguration,
Auslieferung und Betrieb
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 24Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Container-Konzept:
Behälter bzw. Umgebung für Softwarekomponenten
Container definiert nach außen einen abgeschlossenen Bereich
Angebot an Funktionen für enthaltene Komponente Überwachung des Lebenszyklus und Synchronisation
Dienste: Persistenzmechanismen via z.B. JDBC
Komponentenfabriken,
TA-Services,
Security,
Kommunikation RMI over IIOP
Schnittstelle enthaltener EJB‘s zur Außenwelt
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 25Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
EJB - Eigenschaften: Component Model (Session und Entity Beans) Component Persistence
BMP - bean managed Persistence CMP - container managed Persistence
Transaction-Management (Java-Transaction-API) Exceptions (Client und Server) Security Naming und Directory Service (JNDI) Protocoll-Support (RMI, IIOP,...) CORBA-Support (Mapping and Services) Attribute-based Programming (Deployment Descriptor File) Deployment (EJB JAR-Files)
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 26Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java BeansMöglichkeiten EJB-basierter Architekturen
HTM L
Java-Applications
CORBA
COM /W indow s
W eb-ServerW eb-Container
JSP/Servlets
EJB
EJB-Container
EJBServer Datenbank
JDBC
HTTP, HTTPS(HTM L/XM L)
JNDI, RM I over IIO P
IIO P (CO RBA-M apping)
DCO M /CO RBAActiveX-Bridge
C lients
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 27Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Session- und Entity-Beans: Stateless Session-Beans (javax.ejb.SessionBean)
genau dem Client zugeordnet von dem dieses instanziert wurde nach „Herunterfahren“ des Server nicht mehr vorhanden ist keine Referenz mehr vorhanden erfolgt eine Löschen
Stateful Session-Beans Verwaltung von Zuständen durch Handle-Mechanismus Speicherung der Zustände möglich, z.B. bei TA-Sicherung notwendig
Entity-Beans (javax.ejb.EntityBean) Persistenzeigenschaften (zumeist Abbildung auf RDBMS) Eindeutige Identifizierung über Primärschlüssel ist zwingend Persistenzmechanismen des Containers - CMP Persistenzmechanismen vom Bean verwaltet - BMP
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 28Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Aufbau einer EJB-Komponente:
Besteht aus mindestens 3 Java-Klassen und dem Deployment-Deskriptor Remote-Interface
Nutzung der EJB-Funktionalität über dieses Interface
Home-Interface Realisierung das Erzeugen, Auffinden und Löschen des Beans
Bean-Implementierung Implementiert die im Remote-Interface spezifizierten Methoden
XML - Deployment-Deskriptor (kurz DD) Informationen und Anpassungen zum betrachteten Bean
Die Verteilung (Deployment) der EJB‘s erfolgt zusammengefaßt innerhalb einer JAR-Datei.
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 29Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java BeansÜbersetzen in
Java-Bytecodez.B . javac *.java
Interner Aufbaudes EJB innerhalb
einer *.jar-Datei
Erstellungdes Java-
Q uellcodes
Rem ote-Interface*.Java
Hom e-Interface*.java
EJB-Im plem entierung*.java
Rem ote-Interface*.class
Hom e-Interface*.class
EJB-Im plem entierung*.class
Deploym entDescriptor
EJB-jar.XML
Manifest-Datei*.m f
Installation(Deploym ent) imEJB-Container
Anw endung imApplikation-Server
installieren
Unterstützung durch W izards, wie z.B . Referenzimplementierung SUN J2EE(Erzeugen der EJB-JAR-Date ien, Spezifikation des Deployment Descrip tors, Verifika tion des EJB)
R ea lis ie rung v on : S ecurity P ers is tenz C M P D atenbank zug riff T ransak tions -
s iche rung
Session BeansSB
Entity-BeansEB
EJB-Conta iner
W eb-Conta iner(JSP, Serle ts,...)
B us iness Log icIV - und B u is iness -
K om ponen teLau fze itum gebung
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 30Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Beispiel eines Remote-Interfaces (Quelle: Merkle 2000)import java.util.*;
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Cart extends EJBObject {
public void addBook(Book ref) throws RemoteException;
public void removeBook(Book ref) throws
BookException, RemoteException;
public Collection getContents() throws
RemoteException;
public double getSummary() throws
RemoteException;
}
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 31Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Beispiel eines Home-Interfaces (Quelle: Merkle 2000)
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface CartHome extends EJBHome {
Cart create(String person)
throws RemoteException, CreateException;
Cart create(String person, String creditcard)
throws RemoteException, CreateException;
}
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 32Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Beispiel einer EJB-Implementierung I (Quelle: Merkle 2000):import java.util.*;import java.rmi.*;import javax.ejb.*;
public class CartEJB implements SessionBean { String customerName;customerId;Vector contents;
public void ejbCreate(String person) throws CreateException {
if (person == null) { throw new CreateException(“null not
allowed.");} else {customerName = person;} customerId = "0";contents = new Vector(); }
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 33Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Beispiel einer EJB-Implementierung II (Quelle: Merkle 2000):public void ejbCreate(String person, String id) throws
CreateException {//
} public void addBook(Book ref) {
//Buch zum Korb hinzufügencontents.addElement(ref); }
public void removeBook(Book ref) throws BookException {//Buch aus dem Korb entfernen System.out.println(re); } } }
public Collection getContents() {//welche Bücher befinden sich schon im Korb return contents; }
public double getSummary() {//Preis der enthaltenen Bücher insgesamt return summary; }
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 34Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Aufgaben des Deployment-Deskriptor kurz DD:
Auf der Basis des DD soll eine Anpassung entsprechender Attribute der EJB‘s ermöglicht und ein „Blackbox-Reuse unterstützt werden. Der DD kann als Beipackzettel für ein EJB, oder einer aus mehreren EJB‘s zusammengesetzten Applikation betrachtet werden.
Im DD konfigurierbare Eigenschaften (Attribute): Sicherheitsattribute Transaktionsattribute Umgebungsvariablen Verknüpfungen mit anderen Komponenten Verknüpfungen zu Datenquellen
Struktur eines EJB-DD Struktur-Sektion (Basis- und Umgebungsinformationen) Assemblierungs-Sektion (Zugriffsrechte, Transaktionsattribute,...)
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 35Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Beispiel eines XML-Deploymentdescriptor:<?xml version="1.0" encoding="Cp1252"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>
<ejb-jar> <description>no description</description> <display-name>Ejb1</display-name> <enterprise-beans> <session> <display-name>CartEJB</display-name> <ejb-name>CartEJB</ejb-name> <home>CartHome</home> <remote>CartClient</remote> <ejb-class>CartEJB</ejb-class> <session-type>Stateful</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans></ejb-jar>
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 36Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java BeansDialog des J2EE-Wizard: (Erstellung der EJB-JAR)
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 37Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java BeansKonfigurationsdialog
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 38Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans Dialog beim Deployment: (Applikation und EJB‘s)
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 39Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Unterstützung der EJB:
SilverStream SilverStream Application Server 3.0 Netscape Netscape Application Server Gemstone Gemstone/J 3.0 BEA Weblogic 4.5 bzw. 5.0 Inprise Inprise Application Server 4.0 ProSyst EnterpriseBeans Server 3.0 SUN J2EE-Referenz-Implementierung
Application Deployment Tool, Verifier Packager Tools für Verwaltungsaufgaben (Benutzer, Gruppen,...)
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 40Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
EJB Enterprise Java BeansEJB Enterprise Java Beans
Rollenverteilung mit EJB‘s:
Das EJB-Modell unterstützt eine arbeitsteilige Fertigung, Verarbei-
tung, Auslieferung und Administration beanbasierter Applikationen:
EJB-Provider - Lieferant der Java-Kompoenten
Application Assembler - Anwendungsentwickler (komplexere EJB‘s)
EJB-Deployer - Installation und Konfiguration der Umgebung
System-Administrator - Administration Server- und Netzinfrastruktur
EJB-Server-Provider - Anbieter von Applikation-Server
EJB-Container-Provider - Laufzeitumgebung für EJB‘s (derzeit fast
immer im Zusammenhang mit dem Applikation-Server)
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 41Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
Literaturhinweise für JavaLiteraturhinweise für Java
Griffel F. : Componentware, Konzepte und Techniken eines Softwareparadigmas, dpunkt.verlag 1998
Nogli A. : Auswahl eines Applikations-Servers, in Java SPEKTRUM 2/2000, SIGS-Verlag
Merkle B., M. Johann: Produktüberblick von EJB-basierten Applikations-Servern, in Java SPEKTRUM 2/2000, SIGS-Verlag
Szypersiki C. : Component Software, Beyond Object-Oriented Programming, Addison-Wesley, 1998
Wiedeking M. : Die Entwicklung verteilter Anwendungen mit Enterprise-JavaBeans, in Java SPEKTRUM 6/1999, SIGS-Verlag
Pouatcha F., Rottach T.: Konfigurationsbeschreibung für EJB-Komponenten, in Java SPEKTRUM 6/1999, SIGS-Verlag
Hendrich N.; Java für Fortgeschrittene, Springer-Verlag Berlin Heidelberg, Berlin 1997
Merkle B. : Tutorium zur Programmierung von Enterprise-JavaBeans, in Java SPEKTRUM 3/2000, SIGS-Verlag
http://www.sigs.de/html/inhalt_bisheriger_hefte1.html
Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg
Seite 42Sommersem
ster 2000
Autor: Andreas SchmietendorfStatus: Entwurf
Interessante Links im InternetInteressante Links im Internet
CORBA-spezifische Informationen: http://www.omg.org
Verfügbare Applikations-Server: http://divya.com/links.html
Java-World: http://www.javaworld.com
freier EJB-Guide: http://www.nova-labs.com/
div. Artikel unter: http://developer.java.sun.com/developer/technicalArticles/EBeans/
EJB-Spezifikation: http://www.javasoft.com/products/ejb/
Java SPEKTRUM, alle 2 Monate, http://www.sigs.de
Java Magazin, alle 2 Monate, http://www.javamagazin.de