42
Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Seite 1 Sommerse mster 2000 Autor: Andreas Schmietendorf Status: Entwurf Java-Komponenten Java-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 Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

Embed Size (px)

Citation preview

Page 1: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 2: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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)

Page 3: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 4: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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)

Page 5: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 6: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 7: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 8: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 9: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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; }

Page 10: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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);

Page 11: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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);

}

Page 12: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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); } }

Page 13: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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);

}

Page 14: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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;

}

Page 15: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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);

}

}

Page 16: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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.

Page 17: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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; }

Page 18: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 19: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 20: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg

Seite 20Sommersem

ster 2000

Autor: Andreas SchmietendorfStatus: Entwurf

JavaBean - Java‘s JavaBean - Java‘s KomponententechnologieKomponententechnologie

Page 21: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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:

Page 22: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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:

Page 23: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 24: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 25: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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)

Page 26: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 27: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 28: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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.

Page 29: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 30: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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;

}

Page 31: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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;

}

Page 32: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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(); }

Page 33: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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; }

Page 34: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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,...)

Page 35: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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>

Page 36: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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)

Page 37: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

Arbeitsgruppe SoftwaretechnikOtto-von-Guericke-Universität Magdeburg

Seite 37Sommersem

ster 2000

Autor: Andreas SchmietendorfStatus: Entwurf

EJB Enterprise Java BeansEJB Enterprise Java BeansKonfigurationsdialog

Page 38: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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)

Page 39: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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,...)

Page 40: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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)

Page 41: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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

Page 42: Arbeitsgruppe Softwaretechnik Otto-von-Guericke-Universität Magdeburg Autor: Andreas Schmietendorf Status: Entwurf Seite 1 Sommersemster 2000 Java-Komponenten

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