Transaktionssteuerung in EJB-Applikationen im Rahmen einer Standardarchitektur für betriebliche Informationssysteme. Diplomarbeit

Größe: px
Ab Seite anzeigen:

Download "Transaktionssteuerung in EJB-Applikationen im Rahmen einer Standardarchitektur für betriebliche Informationssysteme. Diplomarbeit"

Transkript

1 Transaktionssteuerung in EJB-Applikationen im Rahmen einer Standardarchitektur für betriebliche Informationssysteme Diplomarbeit Michael Wufka Fachbereich Informatik Fachgebiet Softwaretechnologie Betreuerin: Prof. Dr. Mira Mezini

2 2 Transaktionssteuerung in EJB-Applikationen Erklärung Hiermit versichere ich, die vorliegende Diplomarbeit ohne Hilfe Dritter und nur mit den angegeben Quellen und Hilfsmitteln angefertigt zu haben. Alle Stellen, die aus den Quellen entnommen wurden sind als solche kenntlich gemacht worden. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. München, Michael Wufka An dieser Stelle bedanke ich mich herzlich bei denen, die zu dieser Diplomarbeit beigetragen haben. Herausheben möchte ich dabei meine Betreuerin an der TU Darmstadt, Prof. Dr. Mira Mezini, sowie die Betreuer bei sd&m Research: Prof. Dr. Johannes Siedersleben, Ulrike Hammerschall und Gerd Beneken. Stellvertretend für die vielen anregenden Diskussionen mit sd&m-mitarbeitern sei Markus Uhlendahl genannt. Besonderer Dank gebührt auch meinen Eltern und allen anderen, die mich bei meinem Studium begleitet und unterstützt haben.

3 Transaktionssteuerung in EJB-Applikationen 3 1 EINLEITUNG 5 2 BETRIEBLICHE INFORMATIONSSYSTEME Architekturprinzipien Standardarchitektur Software-Kategorien Transaktionen Einführung Transaktionstypen Sperrstrategien 12 3 ENTERPRISE JAVA BEANS Einführung Einordnung Dienste Programmierung Beispiel Zusammenfassung Architektur von EJB-Applikationen Konventionelle Architekturen nach den Sun-Blueprints sd&m Standardarchitektur EJB Transaktionen bei EJB Deklarative Demarkation von Transaktionen Programmatische Demarkation von Transaktionen Probleme 25 4 VARIANTEN ZUR TRANSAKTIONSSTEUERUNG Übersicht Rahmenbedingungen Anforderungen Beispielanwendung: Telecom Billing System (TBS) 30 5 TRANSAKTIONSSTEUERUNG IN DER SUN-ARCHITEKTUR Pessimistische Sperrstrategie Architektur Bewertung Optimistische Sperrstrategie Architektur Bewertung 35 6 TRANSAKTIONSSTEUERUNG IN DER SD&M-ARCHITEKTUR Architektur Überblick 36

4 4 Transaktionssteuerung in EJB-Applikationen Schnittstellen Sperrstrategie-unabhängige Teile der Implementierung Konfiguration der Schnittstellenimplementierungen Bewertung Optimistische Sperrstrategie Grundsätzliche Probleme und Designentscheidungen Implementierung Bewertung Pessimistische Sperrstrategie Einführung Implementierung Bewertung Einsatz einer Datenbankzugriffsschicht Motivation QDI Beispielimplementierung mit der QDI Bewertung Zusammenfassung 62 7 VERGLEICH UND BEWERTUNG DER SPERRSTRATEGIEN Vorgehensweise Korrektheitstests JUnit Testfälle Performance-Tests Batch-Betrieb Interaktiver Betrieb Verhalten der pessimistischen Sperrstrategie Vorüberlegungen Datenbankverbindungen als knappe Ressource Verhalten mit leistungsfähigerem JDBC-Treiber Bewertung Zusammenfassung 83 8 ZUSAMMENFASSUNG Ergebnisse Ausblick 86 ABBILDUNGSVERZEICHNIS 87 LITERATUR 88

5 Transaktionssteuerung in EJB-Applikationen 5 1 Einleitung Enterprise Java Beans Der Begriff Enterprise Java Beans (kurz EJB) beschreibt eine von SUN erstellte Spezifikation für ein verteiltes Komponentenmodell, das als Grundlage für große Informationssysteme in Unternehmen gedacht ist. Abgesehen von einem Teil des Namens hat EJB nichts mit dem hauptsächlich bei Anwendungen mit graphischen Benutzeroberflächen eingesetzten Komponentenmodell Java Beans zu tun. Da dieses in unserer Arbeit keine Rolle spielt, steht der Begriff Bean im folgenden verkürzend für Enterprise Bean. Der beachtliche kommerzielle Erfolg von EJB, der sich unter anderem an der hohen Zahl kommerzieller Produkte [SUN-Solutions] ablesen lässt, die diesen Standard implementieren, liegt darin begründet, dass die Entwicklung von darauf basierenden Anwendungen durch die zahlreichen gebotenen Services sehr effizient ist. Daneben sind EJB-Applikationen in hohem Maße plattformunabhängig und versprechen durch ihren komponentenbasierten Aufbau ein erhebliches Potential für Wiederverwendbarkeit. In der Praxis zeigen sich jedoch Probleme beim naiven Einsatz von Enterprise Java Beans. Diese liegen vor allem in den Bereichen Performance und Wartbarkeit. Große Anwendungen mit vielen gleichzeitig aktiven Benutzern haben bei der leichtfertigen Benutzung von Entity-Beans starke Performance-Probleme. Daneben gestaltet sich die Wartung von EJB-Anwendungen aus verschiedenen Gründen, auf die später noch im Detail eingegangen wird, schwierig, was wegen ihrer üblicherweise langen Lebensdauer besonders kritisch ist. sd&m Die vorliegende Diplomarbeit entstand in Zusammenarbeit mit sd&m Research, der Forschungs- und Entwicklungsabteilung der sd&m AG [sd&m]. Diese erstellt Individualsoftware vornehmlich für betriebliche Informationssysteme. Die Aufgaben von sd&m Research erstrecken sich unter anderem auf die Evaluierung neuer Techniken, den Wissentransfer zwischen einzelnen Projekten und die Entwicklung von Standardarchitekturen, die als Basis für die Projektarbeit dienen. Aufgabe Es gibt zwei gegensätzliche Sperrstrategien, um die Integrität von Transaktionen zu garantieren: Die pessimistische Strategie sperrt Daten beim ersten Zugriff für alle anderen Benutzer und stellt so die Isolierung untereinander sicher. Die optimistische Strategie dagegen erlaubt den gleichzeitigen Zugriff und prüft erst am Ende einer Transaktion, ob Konflikte aufgetreten sind. Beide Strategien haben Vor- und Nachteile, so dass es vom konkreten Einsatzfall abhängt, welche davon zu bevorzugen ist. In dieser Arbeit untersuchen wir die Frage nach geeigneten vor allem im Sinne von performanten Mechanismen zur Steuerung von Transaktionen im Rahmen der bei sd&m Research entwickelten Standardarchitektur für EJB-Applikationen. Dazu implementieren wir beide Sperrstrategien und nehmen anhand einer Beispielanwendung Messungen zur Beurteilung der Performance unter unterschiedlichen Rahmenbedingungen wie beispielsweise dem Nebenläufigkeitsgrad und der Konfliktwahrscheinlichkeit vor. Abschließend leiten wir daraus Empfehlungen zur Wahl der Sperrstrategie in Abhängigkeit von den Anforderungen der Anwendung ab.

6 6 Transaktionssteuerung in EJB-Applikationen Überblick über die Arbeit In den Kapiteln 2 und 3 stellen wir mit betrieblichen Informationssystemen und Enterprise Java Beans die Grundlagen dieser Arbeit vor. Anschließend geben wir in Kapitel 4 einen Überblick über die betrachteten Implementierungsvarianten, die vorausgesetzten Rahmenbedingungen und die Anforderungen, die an eine befriedigende Lösung zu stellen sind, sowie die verwendete Beispielanwendung. In den Kapiteln 5 und 6 beschreiben wir daraufhin die Implementierungen beider Sperrstrategien im Rahmen zweier verschiedener Architekturen für EJB-Anwendungen: einer von Sun vorgeschlagenen Architektur und der bei sd&m entwickelten Standardarchitektur EJB. Nach dem Vergleich und der Bewertung der beiden Sperrstrategien im Kapitel 7 schließt Kapitel 8 mit einer Zusammenfassung.

7 Transaktionssteuerung in EJB-Applikationen 7 2 Betriebliche Informationssysteme Mit betrieblichen Informationssystemen behandelt diese Arbeit eine Unterklasse von Software- Applikationen. Wie die Bezeichnung Enterprise Java Beans schon andeutet, liegt der zentrale Fokus des EJB-Komponentenmodells auf Anwendungen, die in Unternehmen eingesetzt werden. Dabei spielt die Art der Organisation (also ein privatwirtschaftliches Unternehmen im Gegensatz z.b. zu einer öffentlich-rechtlichen Behörde) keine Rolle. Wichtig sind vielmehr die Rahmenbedingungen, unter denen Softwaresysteme in solchen Organisationen verwendet werden. Dazu gehören vor allem: Komplexität: Die Komplexität drückt sich durch einen großen Umfang an fachlichen Anforderungen aus, die unterstützt werden. Daneben sind die Anwendungen oft in eine heterogene und komplexe Anwendungslandschaft eingebettet, d.h. sie greifen z.b. auf existierende Datenbanken zu. Größe: Nicht nur der fachliche Umfang, sondern auch die Zahl der Benutzer ist beträchtlich. Dies führt zu schwierig erfüllbaren Anforderungen an die Performance und die Skalierbarkeit. Lebensdauer: Nicht zuletzt wegen der erforderlichen hohen Investitionskosten ist die Lebensdauer von betrieblichen Informationssystemen sehr hoch und überschreitet häufig mehrere Jahrzehnte. Da sich in solchen Zeitspannen Änderungen nicht vermeiden lassen, ist die Wartbarkeit genauso wichtig wie möglichst geringe Kosten zur Erstellung der Software. Kritische Bedeutung: In der Regel hängt die Existenz eines Unternehmens vom reibungslosen Funktionieren seiner betrieblichen Informationssysteme ab, was technische Maßnahmen wie Redundanz, Transaktionen etc. erforderlich macht. Typische Beispiele betrieblicher Informationssysteme sind Buchungssysteme in Banken, Auftragsabwicklungssysteme in Industrieunternehmen oder Bestellungsverwaltungssysteme in Online-Shops. Abschnitt 2.1 beschreibt wichtige generelle Architekturprinzipien für betriebliche Informationssysteme, während 2.2 näher auf Transaktionen eingeht. 2.1 Architekturprinzipien Dieses Unterkapitel beschreibt einige allgemeine Architekturprinzipien, die für die erfolgreiche Entwicklung betrieblicher Informationssysteme von zentraler Bedeutung sind. Viele dieser Konzepte und Begriffe wurden bei sd&m Research unter dem Dach von Quasar (Qualitäts- Software-Architektur) [Quasar] entwickelt oder verfeinert bzw. systematisiert. Zunächst stellt Abschnitt eine Standardarchitektur für komponentenbasierte Applikationen vor, bevor die Aufteilung von Software in Kategorien beschreibt Standardarchitektur Die Motivation, die der Strukturierung von Softwaresystemen in Komponenten zugrunde liegt, kann treffend mit dem lateinischen divide et impera beschrieben werden: Durch das Aufteilen komplexer Systeme in kleinere Module soll ihre Entwicklung besser beherrschbar werden [Heineman].

8 8 Transaktionssteuerung in EJB-Applikationen Der Komponentenbegriff wird in der Literatur relativ uneinheitlich verwendet. Dies trifft insbesondere für die Granularität des Konzeptes zu, d.h. die Frage, wie groß die Software-Einheiten sind, für die der Begriff verwendet wird. Manchmal werden bereits einzelne Klassen als Komponenten bezeichnet. In anderen Fällen wird der Begriff für komplexe Subsysteme großer Software-Anwendungen verwendet. Nach [Siedersleben] ist eine Komponente eine logisch in sich abgeschlossene Einheit, die eine bestimmte Menge an Schnittstellen implementiert, eine weitere Menge von Schnittstellen verwendet und die gegen jede andere Implementierung der angebotenen Schnittstellen austauschbar ist. Diese Definition legt zwar ebenfalls nicht genau fest, wie fein- oder grobgranular der Begriff gemeint ist, tendiert aber doch dazu, eher größere Module wie Auftragsverwaltung im Gegensatz zu einzelnen Klassen wie Kunde als Komponente zu bezeichnen. Dies stimmt mit der Verwendung in dieser Arbeit überein. Weiterhin beschreibt [Quasar] den inneren Aufbau einer Komponente genauer. Jede Komponente besteht aus drei verschiedenen Sorten von Bausteinen: Anwendungsfälle bieten Funktionen für Benutzer bzw. andere Komponenten an, indem sie die exportierten Schnittstellen der Komponente implementieren. Sie stellen somit den einzigen Teil dar, der von anderen Programmteilen direkt benutzt werden kann. Anwendungsentitäten repräsentieren die eigentlichen Business-Objekte der Anwendung wie Kunde oder Auftrag. Für ihre Verwaltung sind die Anwendungsentitäten-Verwalter zuständig. Sie bieten Methoden zur Erzeugung, zum Wiederfinden und zum Löschen der Anwendungsentitäten an, und nehmen damit die Rolle der Fabrik im Sinne des Factory-Patterns [Gamma] ein. Abbildung 1 zeigt den prinzipiellen Aufbau einer komponentenbasierten Anwendung, die diesen Richtlinien folgt. GUI, Batch, Nachbarsysteme A-Fall 1 A-Fall 2 Komponente 1 A-Fall 1 A-Fall 2 A-Fall 3 A-Fall 1 A-Fall 2 A-Fall 3 A-Verwalter + A-Verwalter + A-Entitäten A-Verwalter + A-Entitäten Komponente 2 A-Entitäten Komponente 3 A-Verwalter + A-Entitäten Anwendungskern Abbildung 1: Aufbau einer komponentenbasierten Anwendung Im Beispiel besteht der Anwendungskern aus drei Komponenten. Komponente 1 besteht nur aus Anwendungsfällen, und greift zu deren Implementierung auf die beiden anderen Komponenten zu. Diese bestehen jeweils aus drei Anwendungsfällen, die auf die eigenen Anwendungsentitä-

9 Transaktionssteuerung in EJB-Applikationen 9 ten und ihre Verwalter sowie teilweise auf die Anwendungsfälle anderer Komponenten zugreifen. Clients in Form von graphischen Benutzeroberflächen (GUI), Batch-Skripten oder anderen Nachbarsystemen verwenden lediglich die von den Anwendungsfällen angebotenen Schnittstellen Software-Kategorien Software-Module, also z.b. Klassen oder Komponenten, lassen sich in verschiedene Kategorien (in Analogie zu Blutgruppen) einteilen [Quasar]: A-Software befasst sich mit den fachlichen Anforderungen der Anwendung. Eine Klasse Kunde oder ein Algorithmus zur Erstellung einer Telefonrechnung sind typische Beispiele. T-Software löst technische Probleme wie z.b. den Zugriff auf eine Datenbank oder die Kommunikation mit anderen Rechnern in verteilten Systemen. 0-Software ist neutral, d.h. von fachlichen und technischen Aspekten unabhängig. Vertreter dieser Kategorie sind z.b. die Klassen im Package java.util, wie etwa Stack oder HashMap. AT-Software vermischt A- und T-Software, hängt also sowohl von fachlichen als auch von technischen Aspekten ab. Beispielsweise fällt eine Klasse Kunde, die Code zur persistenten (d.h. dauerhaften) Speicherung in einer Datenbank enthält, in diese Gruppe. R-Software schließlich ist eine Spezialform von AT-Software. Sie zeichnet sich dadurch aus, dass sie sehr stereotyp und damit generierbar ist. Wenn z.b. aus den Feldern einer Klasse Kunde automatisch der Code zum Datenbankzugriff erzeugt wird, so gehört dieser in die Kategorie R. Die angenehmste Kategorie ist zweifellos 0-Software, da sie durch ihre große Unabhängigkeit von der Umwelt ideal wiederverwendbar ist. Auch A- und T-Software sind gut beherrschbar. A-Software hängt nur von fachlichen Inhalten der Anwendung ab, und ist nicht vom technischen Umfeld sowie Änderungen daran betroffen, während T-Software umgekehrt nur bei technischen Änderungen (wie z.b. dem Umstieg auf ein anderes Datenbanksystem) anzupassen ist. Im starken Gegensatz dazu steht AT-Software, da sie von Fachlichkeit und Technik durchsetzt und damit sehr schwer beherrschbar ist. Somit sollte man sie, falls möglich, durch R-Software ersetzen. Zur Veranschaulichung der unangenehmen Eigenschaften von AT-Software ziehen wir den Aspekt der Wartbarkeit heran. Da betriebliche Informationssysteme eine lange Lebensdauer besitzen, ist zu erwarten, dass sich während des Einsatzes solcher Softwaresysteme sowohl fachliche als auch technische Änderungen ergeben. Fachliche Anpassungen können z.b. bei geänderten Geschäftsprozessen oder Vorschriften nötig werden und in einer Modifikation oder Erweiterung der Funktionen resultieren, während technische Änderungen häufig durch gewandelte Rahmenbedingungen oder technische Fortschritte ausgelöst werden und z.b. aus einem Umstieg auf eine neue Version eines eingesetzten Tools bestehen. Besonders unangenehm ist, dass beide Sorten von Änderungen in voneinander weitgehend unabhängigen Zyklen erfolgen. Dies ist auch die zentrale Motivation zur Vermeidung von AT-Software: Während man bei der sauberen Trennung in A- und T-Software sowohl bei fachlichen als auch bei technischen Änderungen jeweils nur den entsprechenden Teil des gesamten Systems anpassen muss, ist AT-Software von jeder Modifikation betroffen und deshalb besonders teuer in der Wartung. Unglücklicherweise braucht man allerdings eine Verbindung zwischen A- und T-Software. Um beispielsweise eine fachliche Klasse wie Kunde dauerhaft zu speichern, wird sie in irgendeinem Software-Modul auf eine konkrete technische API (wie z.b. JDBC zum Datenbankzugriff) um-

10 10 Transaktionssteuerung in EJB-Applikationen gesetzt. Dieses Modul hängt dann sowohl von technischen Aspekten wie der verwendeten Datenbank als auch von der Fachlichkeit der Anwendung (z.b. den konkreten Attributen der Klasse Kunde) ab, und ist somit der Software-Kategorie AT zuzuordnen. An dieser Stelle kann man sich sehr elegant mit R-Software behelfen. Indem man in unserem Beispiel die Abbildung einer Klasse auf eine Datenbank generiert, erfüllt man den Zweck von AT-Software, ohne sich ihren Nachteil der aufwändigen Wartung einzuhandeln. Ändern sich fachliche Aspekte, kommt z.b. ein neues Attribut zur Klasse Kunde hinzu, so wird das Modul lediglich neu generiert. Bei technischen Änderungen, z.b. dem Umstieg auf ein anderes Datenbanksystem, wird der Generator selbst angepasst und anschließend eine Neugenerierung des Moduls angestoßen. Zusammenfassend bleibt hervorzuheben, dass die Trennung von fachlichen und technischen Aspekten die wichtigste Maßnahme ist, um die insbesondere bei betrieblichen Informationssystemen bedeutsame Wartbarkeit zu erhöhen. 2.2 Transaktionen In diesem Unterkapitel stellen wir die Grundlagen des Transaktionskonzeptes vor. Darauf folgend verfeinern wir den Begriff der Transaktion durch einige Definitionen und behandeln schließlich zwei gegensätzliche Sperrstrategien zur Implementierung von Transaktionen Einführung Der Begriff Transaktion beschreibt eine Sequenz von Operationen, die eine Datenbank (oder allgemeiner: ein zustandsbehaftetes System) von einem Zustand in einen neuen überführt und dabei die folgenden vier Eigenschaften besitzt [Gray]: Atomarität: Alle Aktionen der Transaktion werden entweder vollständig oder gar nicht ausgeführt. Konsistenz: Eine Transaktion überführt die Datenbank von einem konsistenten Zustand in einen neuen konsistenten Zustand. Isolation: Auch wenn mehrere Transaktionen gleichzeitig aktiv sind, hat jede eine isolierte Sicht auf die Daten, als ob sie alleine laufen würde. Dauerhaftigkeit: Wenn eine Transaktion erfolgreich beendet wurde, dann sind die Änderungen, die sie vorgenommen hat, dauerhaft. Wegen der äquivalenten englischen Begriffe atomicity, consistency, isolation und durability werden diese Eigenschaften auch zusammenfassend mit dem Akronym ACID bezeichnet. Genauer besteht ein transaktionsverarbeitendes System nach dem X/Open-Transaktionsmodell 1 aus drei Komponenten [Bernstein], wie Abbildung 2 zeigt. Die Steuerung der Transaktionen erfolgt von einem Anwendungsprogramm aus, das dazu Methoden zum Starten, Abschließen und Verwerfen von Transaktionen aufruft, die der Transaktionsmanager anbietet. Sogenannte Ressourcenmanager (typischerweise Datenbanksysteme) sind für die eigentliche Verwaltung der Daten verantwortlich. Das Anwendungsprogramm benutzt sie direkt zum Zugriff auf die An- 1 Das X/Open-Transaktionsmodell (siehe z.b. [Britton]) ist der grundlegende Standard für verteilte Transaktionen, d.h. Transaktionen, die sich über mehrere Datenbanksysteme erstrecken. Die Begriffe sind jedoch auch für den hier betrachteten einfacheren Fall von lokalen Transaktionen zutreffend.

11 Transaktionssteuerung in EJB-Applikationen 11 wendungsdaten, während die Steuerung der Transaktionen indirekt über den Transaktionsmanager erfolgt. Anwendungsprogramm Ressourcenmanager Transaktionsmanager Abbildung 2: X/Open Transaktionsmodell Transaktionstypen Nach [Quasar] kann man Transaktionen unter zwei Sichtweisen betrachten: aus Anwendungssicht und aus technischer Sicht. Fachliche Transaktionen werden durch die Anwendung gesteuert. Das Augenmerk liegt auf der Festsetzung, wann Transaktionen aus fachlicher Sicht beginnen und enden, was auch als Transaktionsdemarkation bezeichnet wird. Dazu stehen gewöhnlich die Operationen begin, commit und rollback zur Verfügung, die eine Transaktion starten, normal abschließen oder abbrechen. Technische Transaktionen dagegen kümmern sich darum, wie das fachliche Verhalten technisch umgesetzt wird. Eine typische Fragestellung hierbei ist die gewählte Sperrstrategie. Zwischen fachlichen und technischen Transaktionen muss nicht unbedingt eine eins-zu-eins Entsprechung bestehen; häufig wird eine fachliche Transaktion in mehrere technische Transaktionen umgesetzt. Abbildung 3 illustriert dies: Eine fachliche Transaktion Mehrere technische Transaktionen Abbildung 3: Aufteilung einer fachlichen in mehrere technische Transaktionen Fachliche Transaktionen unterscheiden wir weiter nach ihrer zeitlichen Länge. Dabei definieren wir vier Klassen: Einschritt-Transaktionen dauern nur für die Länge eines Methodenaufrufs auf dem Server. Mehrschritt-Transaktionen können mehrere Methodenaufrufe auf dem Server umfassen. Mehrschritt-Transaktionen mit Benutzereingaben erlauben zusätzlich den Aufruf von Methoden, die Benutzereingaben erfordern. Da Menschen im allgemeinen Antwortzeiten haben, die deutlich über den Millisekundenbereich hinausgehen, kann diese Transaktionsklasse um ein Vielfaches länger dauern als die beiden vorigen Klassen.

12 12 Transaktionssteuerung in EJB-Applikationen Lange Transaktionen schließlich bestehen auch nach Neustarts der Applikation weiter und haben oft eine Lebensdauer von Tagen oder Wochen. Diese Arbeit beschränkt sich auf die ersten drei Klassen von Transaktionen. Da lange Transaktionen die persistente Speicherung des Transaktionszustandes erfordern, sieht man für sie aus Performancegründen in aller Regel ohnehin einen völlig anderen Mechanismus vor als für die kürzeren Typen. Zur Verkürzung der Schreibweise bezeichnet im folgenden der Begriff kurze Transaktion zusammenfassend Einschritt-Transaktionen und Mehrschritt-Transaktionen, wogegen längere Transaktion für Transaktionen mit Benutzereingaben steht Sperrstrategien Es gibt zwei gegensätzliche Sperrstrategien [Vossen], um die ACID-Eigenschaften zu garantieren: die pessimistische und die optimistische Strategie. Erstere ist weit verbreitet und liegt vielen Datenbanksystemen zugrunde, wogegen letztere in der Praxis weniger üblich ist. Pessimistische Sperrstrategie Die pessimistische Strategie beruht auf der Idee, Datensätze beim ersten Zugriff zu sperren. Dies bewirkt, dass bis zum Ende der jeweiligen Transaktion kein anderer Benutzer auf diese Datensätze zugreifen kann. In der Praxis setzt man üblicherweise zwei verschiedene Typen von Sperren ein, da man einen möglichst hohen Grad an Parallelität erreichen will: Lese- und Schreibsperren. Dieser Aufteilung liegt die Einsicht zugrunde, dass es zwischen zwei gleichzeitig aktiven Benutzern, die ein Datenelement nur lesen wollen, eigentlich gar keinen Konflikt gibt. Somit verhindert das Setzen einer Schreibsperre den Zugriff für alle anderen Benutzer, während eine Lesesperre nur gleichzeitige Benutzer mit Schreibabsicht ausschließt. Von diesem recht einfachen Schema gibt es eine sehr hohe Zahl an Varianten und Spezialfällen, die sich z.b. mit dem Setzen von Sperren auf hierarchischen Objektstrukturen beschäftigen und oft weitere, komplexere Typen von Sperren definieren. Optimistische Sperrstrategie Im Gegensatz dazu sperrt die optimistische Strategie die Datensätze nicht, sondern erlaubt zunächst völlig unbeschränkten Zugriff darauf (Lesephase). In dieser Phase wird jedoch noch nicht in die Datenbank geschrieben; Änderungen, die der Client vornimmt, erfolgen auf Kopien der Daten. Erst am Ende der Transaktion erfolgt eine Überprüfung, ob Konflikte aufgetreten sind und die Transaktion deshalb abgebrochen werden muss (Schreib- und Validierungsphase). Die Erkennung von Konflikten kann auf verschiedene Weisen geschehen. Ein verbreitetes Verfahren ist die Verwendung von Versionsnummern. Jedes Datenelement hat bei dieser Vorgehensweise ein zusätzliches Feld, das die aktuelle Version dieses Elementes enthält. Am Ende der Transaktion wird geprüft, ob die Version, die in der Transaktion gelesen wurde, mit derjenigen übereinstimmt, die aktuell in der Datenbank steht. Ist dies der Fall, so kann die Transaktion erfolgreich beendet werden. Andernfalls (d.h. wenn in der Datenbank eine höhere Versionsnummer steht) liegt ein Konflikt vor, da das Datenelement zwischen dem Lesen und Zurückschreiben von einer anderen Transaktion verändert wurde. Weil diese Änderung verloren wäre, wenn man den Konflikt ignoriert, wird die gerade in der Validierungsphase befindliche Transaktion abgebrochen. Der Client startet dann die Transaktion erneut oder gibt dem Benutzer eine Fehlermeldung aus. Statt einer Versionsnummer kann man auch Zeitstempel oder sogenannte before-images verwenden, die eine vollständige Kopie der Daten vor dem Start der Transaktion enthalten.

13 Transaktionssteuerung in EJB-Applikationen 13 Beispiel Um die Funktionsweise der beiden Sperrstrategien zu verdeutlichen, betrachten wir mit dem sogenannten Lost-Update-Problem exemplarisch eine typische Fehlerbedingung, die ohne diese Maßnahmen auftreten könnte. Als Beispiel dient eine Tabelle Konto, die unter anderem die Höhe des aktuellen Kontostandes enthält. Wenn nun zwei Benutzer den Kontostand um einen bestimmten Betrag erhöhen wollen, kann es bei gleichzeitigem und unkontrollierten Ablauf zu verschiedenen fehlerhaften Ergebnissen kommen. Jeder der beiden Clients liest zunächst den aktuellen Stand des Kontos, was durch die Operation lesen beschrieben wird, erhöht diesen Wert dann um den zu überweisenden Betrag und schreibt ihn mittels der Operation schreiben zurück. Wenn die Clients z.b. den Kontostand um 20 bzw. 30 erhöhen wollen, und dieser sich am Anfang auf 100 beläuft, dann sieht ein korrekter Ablauf wie folgt aus: x 1 = lesen 1 (konto) = 100 // Client 1 liest x (= 100) x 1 = x = 120 // Client 1 erhöht x um 20 schreiben 1 (konto, 120) // Client 1 schreibt x zurück x 2 = lesen 2 (konto) = 120 // Client 2 liest x (= 120) x 2 = x = 150 // Client 2 erhöht x um 30 schreiben 2 (konto, 150) // Client 2 schreibt x zurück In diesem Fall erfolgen die Operationen von Client 2 vollständig nach denen von Client 1, so dass es zu keinen Problemen kommt. Überschneidet sich jedoch die Ausführung der beiden Clients wie im folgenden Ablauf, kann ein falsches Resultat entstehen: 1 x 1 = lesen 1 (konto) = 100 // Client 1 liest x (= 100) 2 x 2 = lesen 2 (konto) = 100 // Client 2 liest x (= 100) 3 x 1 = x = 120 // Client 1 erhöht x um 20 4 schreiben 1 (konto, 120) // Client 1 schreibt x zurück 5 x 2 = x = 130 // Client 2 erhöht (das alte!) x um 30 6 schreiben 2 (konto, 130) // Client 2 schreibt falsches Ergebnis Das inkorrekte Ergebnis kommt hier zustande, da die Änderung durch den ersten Client vom zweiten einfach überschrieben wird. Dieser Ablauf würde von der pessimistischen Sperrstrategie dadurch verhindert, dass Client 2 in Zeile 2 keinen Zugriff auf den Stand des Kontos bekäme, da Client 1 bereits in Zeile 1 wegen der Absicht zu schreiben eine Schreibsperre darauf erlangt hätte 2. Somit müsste Client 2 warten, bis Client 1 seine Transaktion abgeschlossen hat, so dass sich automatisch der erste gezeigte Ablauf ergeben hätte. Im Falle der optimistischen Sperrstrategie würde der Transaktionsmanager bei der Validierung des Schreibzugriffs in Zeile 6 feststellen, dass die Version des Kontostandes, den Client 2 in der Transaktion gelesen hat, inzwischen veraltet ist, da ja inzwischen Client 1 den Wert verändert und damit den Versionszähler in der Datenbank erhöht hat. Somit würde die Transaktion zurückgesetzt, und Client 2 müsste sie wiederholen. Auch in diesem Fall ergäbe sich dann der erste gezeigte Ablauf. Die zwei Sperrstrategien haben jeweils bestimmte Vor- und Nachteile, die wir später noch ausführlich betrachten. Deshalb haben beide ihre Existenzberechtigung, und es hängt von den Charakteristiken der jeweiligen Anwendung ab, welche zu bevorzugen ist. 2 Der genaue Ablauf hängt von der Implementierung der Sperrstrategie ab. Im hier geschilderten Beispiel gehen wir davon aus, dass es nicht möglich ist, eine Lesesperre auf eine Schreibsperre zu erweitern. Dies ist bei vielen Systemen der Fall, da so zyklische Wartebedingungen (Deadlocks) verhindert werden können. Ohne diese Restriktion würde Client 1 in Zeile 4 keine Schreibsperre erhalten, da ja Client 2 bereits in Zeile 2 eine Lesesperre auf das gleiche Objekt angefordert hat. Somit wäre auch in diesem Fall der gezeigte inkorrekte Ablauf verhindert.

14 14 Transaktionssteuerung in EJB-Applikationen 3 Enterprise Java Beans Nach der Vorstellung der allgemeinen Grundlagen zu Architekturprinzipien und Transaktionen im letzten Kapitel beschäftigen wir uns im folgenden Abschnitt mit Enterprise Java Beans. Dabei führen wir zunächst in das Programmiermodell ein, untersuchen dann Fragen der Architektur und gehen schließlich auf die Transaktionssteuerung ein. 3.1 Einführung Auf eine kurze Einordnung der Technologie in Abschnitt folgt eine Beschreibung der wichtigsten von EJB-Applikationsservern angebotenen Funktionen in Danach wird in ein knapper Überblick über das Programmiermodell gegeben und anhand eines Beispiels in illustriert. Dabei ist hier keine vollständige Einführung in die Entwicklung mit EJB beabsichtigt, da dies den Rahmen dieser Arbeit bei weitem sprengen würde 3. Stattdessen soll dieses Kapitel den Lesern, die keine oder nur wenige EJB-Kenntnisse besitzen, das grobe Verständnis der weiteren Ausführungen erlauben. Zur genaueren Einführung gibt es inzwischen zahlreiche empfehlenswerte Bücher, z.b. [Roman] oder [Monson] Einordnung Anfangs fand die Programmiersprache Java vor allem in Form von kleinen clientseitigen Programmen wie Applets Verbreitung. Schon bald stellte sich jedoch heraus, dass die Sprache wegen ihrer Robustheit und des gebotenen Komforts auch für serverseitige Anwendungen hervorragend geeignet ist. Inzwischen hat dieses Umfeld sogar eine überwiegende Bedeutung erlangt. Als gemeinsame Plattform für solche Applikationen führte Sun die Java 2 Enterprise Edition (kurz J2EE) ein. Sie definiert neben zahlreichen Diensten, die in Abschnitt vorgestellt werden, unter anderem auch das Komponentenmodell Enterprise Java Beans. Die Grundidee von EJB besteht neben der Verwendung von Komponenten als Entwurfseinheit darin, Querschnittsfunktionen wie Transaktionen oder Persistenz zu einem Teil des Programmiermodells zu machen und so den Anwendungsentwicklern diese Aufgaben abzunehmen. Nach der Vorstellung der Version wurde Ende 1999 die Version 1.1 der EJB- Spezifikation [EJB-1.1] veröffentlicht, und seit Mitte 2001 ist die Version 2.0 [EJB-2.0] aktuell. Die Spezifikationen sind weitgehend abwärtskompatibel. Da mit den Neufassungen jeweils erhebliche Verbesserungen und Erweiterungen verbunden waren (siehe Tabelle 1), haben sie sich schnell durchgesetzt. Diese Arbeit baut deshalb auf der aktuellen EJB-Version 2.0 auf. Version Neues Feature Auswirkung EJB 1.1 Unterstützung von Entity-Beans Erhöhte Portierbarkeit von EJBvorgeschrieben Anwendungen zwischen Applikationsservern Deployment-Deskriptoren als XML statt serialisierter Klassen Vereinfachte Handhabung der Deployment- Informationen EJB 2.0 Message-Driven-Beans Unterstützung für asynchron aufrufbare Komponenten Container-Managed-Relationships Vereinfachte Implementierung von komplexen Beziehungen zwischen Entitäten 3 Die aktuelle Version 2.0 der EJB-Spezifikation umfasst 572(!) Seiten.

15 Transaktionssteuerung in EJB-Applikationen 15 Einführung der EJB-Query- Erhöhte Portierbarkeit von EJB- Language Anwendungen zwischen Applikationsservern Lokale Schnittstellen Erhöhte Performance durch effizientere Kommunikation zwischen Beans im selben Applikationsserver Tabelle 1: Wichtigste Neuerungen in EJB 1.1 und EJB Dienste Wie bereits angedeutet, zielt die EJB-Spezifikation darauf ab, es dem Entwickler von EJB- Komponenten oder -Anwendungen zu ermöglichen, sich auf die eigentliche fachliche Logik zu konzentrieren. Der Ansatz dazu ist, dass der sog. EJB-Container, d.h. die Laufzeitumgebung von EJB-Anwendungen, allgemeine Systemdienste zur Verfügung stellt. Die wichtigsten dieser Dienste sind im Detail [Roman]: Ressourcen-Pooling: Durch das Unterhalten eines Pools an Ressourcen (z.b. Datenbankverbindungen oder Beans) kann der EJB-Container mit einer begrenzten Zahl von Instanzen dieser Ressourcen eine deutlich höhere Zahl an Clients bedienen. Diese Sparsamkeit ist eine entscheidende Voraussetzung, um Anwendungen entwickeln zu können, die auf hohe Benutzerzahlen skalieren. Persistenz: Praktisch jedes betriebliche Informationssystem hat persistente Daten. EJB- Container bieten verschiedene Varianten zu deren Speicherung an, die sich voneinander im Grad des gebotenen Komforts und der Flexibilität unterscheiden. Transaktionen: EJB-Container enthalten einen leistungsfähigen Transaktionsmanager, der in der Regel auch mit verteilten Transaktionen umgehen kann. Zugriffskontrolle: Die EJB-Spezifikation definiert Authentifizierungsmechanismen sowie ein rollen- und rechte-basiertes Modell zur Kontrolle von Zugriffsrechten. Damit lässt sich für jede Methode festlegen, welche Benutzer sie aufrufen dürfen und welche nicht. Verteilbarkeit: Enterprise Java Beans sind auch über Rechnergrenzen hinweg mittels RMI (remote method invocation) aufrufbar, ohne dass dem Anwendungsentwickler dadurch ein zusätzlicher Implementierungsaufwand entsteht. Neben den in der Spezifikation enthaltenen Diensten sollte man auch die von kommerziellen Produkten angebotenen zusätzlichen Features erwähnen. Diese sind teilweise transparent für die Applikation, wie z.b. die Unterstützung für Clustering oder gezielte Redundanz zur Ausfallsicherheit. Weiterhin gibt es Werkzeuge zur Administration von Anwendungen im laufenden Betrieb. Schließlich existieren auch eine Reihe von meist proprietären Erweiterungen, die bei der Entwicklung oder der Administration von Anwendungen im produktiven Betrieb helfen. Man sollte den Einsatz dieser herstellerspezifischen Erweiterungen jedoch sehr genau abwägen, da man sonst mit der Portierbarkeit der Applikationen einen der wichtigsten Vorteile von EJB aufgibt Programmierung Beans Die grundlegenden Bausteine von EJB-Anwendungen sind die sog. Beans. Diese bieten nach außen hin (d.h. für andere Komponenten) zwei Schnittstellen an. Das sogenannte home interface dient als Fabrik für das Bean und enthält Methoden zum Anlegen, Löschen und ggf. Wiederfin-

16 16 Transaktionssteuerung in EJB-Applikationen den von Instanzen. Das component interface enthält die eigentlichen Methoden des Beans und kann entweder als local interface vorliegen, das nur innerhalb der Virtuellen Maschine (VM) aufrufbar ist, oder als remote interface, das wegen seiner RMI-Schnittstelle auch von Clients aus verfügbar ist. Die gleiche Unterscheidung gilt auch für das home interface: Es kann entweder als local home oder als home interface vorliegen, die nur innerhalb der VM bzw. auch von Clients aus aufrufbar sind. Es gibt drei verschiedene Sorten von Beans: session beans, entity beans und message driven beans. - Session-Beans enthalten keine persistenten Daten und implementieren die in den Use-Cases definierten Funktionen der Anwendung. Zustandsbehaftete Session-Beans (stateful session beans) speichern den Zustand der enthaltenen Instanzvariablen zwischen zwei Client- Aufrufen, während zustandslose Session-Beans (stateless session beans) dies nicht tun. - Entity-Beans dienen der Speicherung von persistenten Daten. Dabei korrespondiert eine Entity-Bean-Instanz üblicherweise jeweils mit einer Datenbankzeile, und die Attribute des Beans mit den Spalten der Tabelle. Entity-Beans können die Datenbankzugriffe z.b. mittels JDBC selbst durchführen (bean managed persistence) oder diese Aufgabe dem EJB- Container überlassen (container managed persistence). - Message-Driven-Beans sind Komponenten, die über JMS (java message service) gesendete Nachrichten abonnieren. Sie werden somit nicht durch Client-Aufrufe aktiviert, sondern reagieren auf asynchrone Ereignisse. Da wir für unsere Zwecke nur Entity-Beans und Session-Beans benötigen, gehen wir auf Message-Driven-Beans nicht weiter ein. Deployment Ein Applikationsserver stellt die Laufzeitumgebung für die serverseitigen Anteile von betrieblichen Informationssystemen dar. Häufig wird dazu der Begriff EJB-Container synonym benutzt, der streng genommen nur ein Teil des Applikationsservers darstellt. Da die Unterscheidung auch für uns nicht relevant ist, folgen wir diesem Sprachgebrauch. Unter Deployment versteht man die Installation bzw. das Verfügbarmachen von Komponenten oder Anwendungen auf dem Applikationsserver. EJB-Anwendungen bestehen in der Regel aus zahlreichen Beans. Für jedes Bean gibt es neben den bereits erwähnten beiden Schnittstellen eine Implementierungsklasse, die die eigentliche Realisierung enthält. Entity-Beans besitzen zusätzlich noch einen Primärschlüssel, der entweder ein Standardtyp wie String oder eine eigene Klasse sein kann. Diese Klassen und Interfaces werden zusammen mit mehreren XML-Dateien (den sogenannten Deployment-Deskriptoren) als ein java application archive (kurz: JAR-Datei) ausgeliefert. Die Deployment-Deskriptoren enthalten neben der Beschreibung der verschiedenen Bean-Bestandteile wichtige Informationen für den Applikationsserver zur Konfiguration seiner Dienste. Beispielsweise spezifizieren sie, wie die Abbildung der Felder von Entity-Beans auf die Datenbank erfolgt, und welche Benutzerrollen zum Zugriff auf die einzelnen Methoden von Beans berechtigen. Clientsicht Der Aufruf von Beans aus Client-Sicht sieht wie folgt aus: Zunächst legt der Client ein Objekt vom Typ InitialContext an, bei dessen Erzeugung gewöhnlich Informationen darüber nötig sind, auf welchem Rechner und Port der Applikationsserver erreichbar ist. Auf diesem InitialContext-Objekt ruft der Client nun eine Methode namens lookup auf, die als Argument einen String oder Namen hat und ein Objekt zurückliefert. Dabei wird auf den Namensservice JNDI (java naming and directory interface) zurückgegriffen, der eine Zuordnung zwischen Namen und Objekten herstellt. Das zurückgegebene Objekt ist eine Implementierung des

17 Transaktionssteuerung in EJB-Applikationen 17 Home-Interfaces und erlaubt es dem Client nun, Instanzen des Beans anzulegen, zu löschen oder im Falle von Entity-Beans auch wiederzufinden. Somit kennt der Client lediglich die vom Bean implementierten Home- und Remote-Schnittstellen sowie seinen JNDI-Namen. Das gilt auch für Beans, die über den gleichen Mechanismus auf andere Beans zugreifen. Pooling und Bean-Lebenszyklus Um Ressourcen zu sparen, betreibt der Applikationsserver das sogenannte Pooling von Beans. Die Grundidee liegt darin, dass der Container stets einen Pool von Bean-Instanzen hält, die keinem bestimmten Client zugeordnet sind. Wenn ein Client eine Methode auf einem Bean aufruft, erhält er eine Instanz aus dem Pool. Dies spart im Vergleich zur Erzeugung einer neuen Instanz in erheblichem Maße Rechenzeit, und kostet wesentlich weniger Speicher, als für jeden Client eine eigene Instanz des Beans anzulegen. Das Pooling soll transparent für die Clients geschehen. Um dies zu erreichen, ist abhängig von der Art des Beans ein unterschiedlich großer Aufwand nötig. Zustandslose Session-Beans beispielsweise werden ohne weitere Maßnahmen nach jedem Methodenaufruf wieder in den Pool eingefügt. Für Entity-Beans ist mehr Aufwand nötig, da der EJB-Container die Instanzvariablen speichern und beim nächsten Clientaufruf wiederherstellen muss 4. Ferner hat der Applikationsserver die Möglichkeit, längere Zeit nicht benutzte Beans vorübergehend aus dem Speicher auszulagern. Bevor dies erfolgt, ruft er die sogenannte Callback- Methode ejbpassivate auf, in der die betroffene Bean-Instanz üblicherweise benutzte Ressourcen wie z.b. offene Datenbankverbindungen schließt. Vor dem nächsten Aufruf auf dem Bean erfolgt dessen Aktivierung, die mit einem Aufruf von ejbactivate verbunden ist. In dieser Methode würde das Bean in unserem Beispiel die Datenbankverbindung wieder öffnen. Die Vorstellung der weiteren Callback-Methoden, die der Applikationsserver bei den Übergängen zwischen den verschiedenen Zuständen im Lebenszyklus eines Beans aufruft, geht jedoch über den Rahmen dieser Arbeit hinaus Beispiel Um einen Eindruck von der Programmierung mit EJB zu geben, zeigen wir hier den Code eines Session-Beans, das eine triviale Operation implementiert, sowie eines Clients, der darauf zugreift. Das Session-Bean ist zustandslos und bietet lediglich eine Methode getstring an. Da diese direkt vom Client aufrufbar sein soll, besitzt das Session-Bean Remote-Schnittstellen. Das Home-Interface sieht wie folgt aus: public interface TestHome extends EJBHome { Test create() throws RemoteException, CreateException; Das Remote-Interface hat folgendes Aussehen: 4 Diese Darstellung ist etwas vereinfacht, aber für unsere Zwecke ausreichend. Genau genommen werden nicht einzelne Variablen gesichert und wiederhergestellt, sondern die tatsächlichen Instanzen der Beans. Der Client interagiert nie direkt mit dem Bean, sondern stets über Stellvertreterobjekte, die sogenannten stubs und skeletons. Diese bleiben für die Lebensdauer der Remote-Referenz des Clients bestehen, wogegen die Bean-Instanzen selbst in einem Pool verwaltet werden.

18 18 Transaktionssteuerung in EJB-Applikationen public interface Test extends EJBObject { String gettext() throws RemoteException; Die Bean-Klasse muss neben den in der Remote-Schnittstelle deklarierten Methoden auch einige im Interface SessionBean deklarierte Lebenszyklus-Methoden implementieren. Diese können jedoch in unserem einfachen Beispiel eine leere Implementierung aufweisen: pubilc class TestBean implements SessionBean { // method from remote interface Test public String gettext() { return Hello World! ; // lifecycle-methods from SessionBean public void ejbremove() { public void ejbactivate() { public void setsessioncontext(sessioncontext ctx) { public void ejbcreate() throws CreateException { Der Deployment-Deskriptor ejb-jar.xml lautet wie folgt: <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' ' <ejb-jar> <enterprise-beans> <session> <ejb-name>helloworldtestbean</ejb-name> <home>testhome</home> <remote>test</remote> <ejb-class>testbean</ejb-class> <session-type>stateless</session-type> <transaction-type>container</transaction-type> </session> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>helloworldtestbean</ejb-name> <method-name>*</method-name> </method> <trans-attribute>required</trans-attribute> </container-transaction> <assembly-descriptor> </ejb-jar> Im ersten (durch das Tag <enterprise-beans> eingeschlossenen) Teil werden die Bestandteile des Beans deklariert und festgelegt, dass das Session-Bean zustandslos sein soll sowie dass die Transaktionssteuerung durch den Container erfolgt. Auf den zweiten Teil, der diese Steuerung näher beschreibt, gehen wir in Abschnitt näher ein. Neben diesem von der EJB- Spezifikation vorgegebenen Deskriptor gibt es noch weitere, die Applikationsserver-spezifische Aspekte deklarieren, wie z.b. die Definition eines JNDI-Namen für jedes Bean und die Zuordnung zwischen Entity-Beans und Datenbanktabellen. Wurde das Session-Bean unter dem JNDI-Namen Hello registriert, so könnte ein einfacher Client, der es aufruft und das Resultat des Aufrufes ausgibt, wie folgt aussehen:

19 Transaktionssteuerung in EJB-Applikationen 19 public class HelloWorldClient { public static void main(string argv[]) throws Exception { Properties p = new Properties(); //... Context ctx = new InitialContext(p); TestHome testhome = (TestHome) PortableRemoteObject.narrow(ctx.lookup( Hello ), TestHome.class); Test test = testhome.create(); System.out.println(test.getText()); Zunächst legt der Client einen InitialContext an, wozu in den übergebenen Properties Informationen über die Erreichbarkeit des Applikationsservers nötig sind. Diese sind produktspezifisch und werden deshalb hier nicht gezeigt. Danach wird per JNDI eine Implementierung des Home-Interfaces angefordert, die dann zur Erzeugung einer Bean-Instanz benutzt wird. Die Ausführung des Clients ergibt, wie bei solchen Beispielen üblich, die Ausgabe Hello World Zusammenfassung Wie bereits in der Einleitung dieses Unterkapitels erwähnt, verspricht die EJB-Spezifikation die Bereitstellung einer komfortablen Entwicklungs- und Laufzeitumgebung für komponentenbasierte, serverseitige Anwendungen. Die Mittel zur Erreichung dieses Ziels sind die Entkopplung zwischen den Beans durch die konsequente Programmierung gegen ihre Home- und Komponentenschnittstellen sowie die Nutzung von JNDI zur Lokalisierung der jeweiligen Implementierung. Somit ist es möglich, die verschiedenen Teile einer Anwendung getrennt zu entwickeln oder auch zuzukaufen. Durch die vom EJB-Container übernommenen Funktionen wie Ressourcen-Pooling, Persistenz und Transaktionen wird der erforderliche Implementierungsaufwand erheblich gesenkt. 3.2 Architektur von EJB-Applikationen Nachdem das letzte Unterkapitel in das Programmiermodell von EJB eingeführt hat, beschäftigt sich dieser Abschnitt damit, wie man zweckmäßigerweise die Architektur von EJB- Applikationen gestaltet. Zunächst stellen wir zwei einfache Architekturen vor, die jedoch beide erhebliche Schwächen wie z.b. die fehlende Trennung von A- und T-Software haben. Abschließend zeigen wir mit der bei sd&m entwickelten Standardarchitektur des technikneutralen Anwendungskerns einen Ansatz, der Abhilfe für diese Probleme bietet Konventionelle Architekturen nach den Sun-Blueprints Naive Architektur Die Tatsache, dass Home- und Remote-Schnittstellen von Clients außerhalb des Applikationsservers fast wie lokale Objekte benutzt werden können, verleitet bei naivem Herangehen zu der in Abbildung 4 gezeigten Architektur.

20 20 Transaktionssteuerung in EJB-Applikationen Client Entity- Bean 1 Entity- Bean 4 Symbole RMI- Aufrufe Entity- Bean 2 Entity- Bean 3 EJB-Container Abbildung 4: Naive Architektur von EJB-Applikationen Abgesehen vom nötigen JNDI-Lookup zum Finden des Home-Interfaces und den RemoteExceptions, die jeder Aufruf eines Beans aufgrund des verwendeten RMI-Protokolls werfen kann, ist der EJB-Container aus der Sicht des Client-Programmierers weitgehend transparent. Diese Architektur hat zahlreiche Nachteile, zu denen unter anderem eine sehr schlechte Wartbarkeit zählt, da alle Teile der Anwendung von fachlichen und technischen Aspekten durchsetzt sind. Darauf gehen wir jedoch hier nicht näher ein, weil die Performance von derart aufgebauten Anwendungen völlig unzureichend ist und sich diese Architektur somit von selbst verbietet. Der Grund dafür ist der hohe Aufwand für die bei jedem Zugriff auf die Entity-Beans erfolgenden RMI-Aufrufe, die um Größenordungen langsamer sind als lokale Methodenaufrufe. Das Performance-Problem hat zur Einführung der lokalen Schnittstellen für Home- und Komponenten-Interfaces in der Version 2.0 der EJB-Spezifikation geführt. Aufrufe dieser Schnittstellen sind wesentlich effizienter als Remote-Aufrufe, und verringern deshalb den Kommunikationsaufwand bei Verwendung des sogenannten Session-Facade-Patterns [Marinescu] deutlich. Session-Facade-Architektur Abbildung 5 zeigt, wie eine solche Architektur aussieht. Der Client interagiert nur noch mit einer Schicht von Session-Beans. Diese implementieren die Use-Cases der Anwendung. Anstatt dabei direkt mit den zugrundeliegenden Entity-Beans zu arbeiten, enthält die Schnittstelle der Session-Beans sogenannte Transferobjekte, die die gleichen Attribute wie die Entity-Beans besitzen. Somit können feingranulare Zugriffe von get- und set-methoden innerhalb des Clients als lokale Methodenaufrufe erfolgen. RMI-Aufrufe sind nur noch zwischen dem Client und den grobgranularen (und damit weniger zahlreichen) Use-Case-Methoden nötig. Innerhalb des EJB- Containers greifen die Session-Beans über lokale Schnittstellen auf die Entity-Beans zu, was gegenüber normalen Methodenaufrufen nur einen kleinen Zusatzaufwand bedeutet.

21 Transaktionssteuerung in EJB-Applikationen 21 Client Symbole Session- Bean 1 Session- Bean 2 RMI- Aufrufe Entity- Bean 1 Entity- Bean 2 Entity- Bean 3 EJB-Container lokale Aufrufe Abbildung 5: Session-Facade-Architektur von EJB-Applikationen Zwar entschärft diese Architekturvariante das Performance-Problem des naiven Ansatzes erheblich, da die Zahl der nötigen Client-Server-Interaktionen deutlich sinkt. Dennoch leidet sie wie jener an einer sehr schlechten Wartbarkeit. Dafür gibt es zwei Ursachen: die fehlende Trennung von A- und T- Software sowie die zu feine Granularität des Komponentenbegriffs. Mangelnde A-T-Trennung Alle Teile der Anwendung enthalten neben den fachlichen auch technische Aspekte. Beim Client ist das z.b. die nötige Behandlung der RMI-spezifischen Ausnahmen. Die Session- und Entity-Beans sind durch die von der EJB-Spezifikation gemachten Vorgaben (wie z.b. die zu implementierenden Callback-Methoden) technikabhängig. Unangenehme Konsequenz dieser A-T-Vermischung ist die mangelnde Lokalisierbarkeit von Änderungen. So muss z.b. beim Umstieg auf eine neue EJB-Version oder einen anderen EJB-Container der komplette Code auf nötige Änderungen und mögliche Seiteneffekte untersucht werden. Ein Beispiel hierfür ist der Umstieg von EJB 1.1 auf 2.0: Die persistenten Attribute von Entity-Beans mit containermanaged-persistence wurden in EJB 1.1 als Felder definiert, wogegen sie bei EJB 2.0 in der Form von abstrakten Methoden implementiert werden. Deshalb sind beim Umstieg alle Entity- Beans von Modifikationen betroffen. Da die Session-Beans direkt auf die Entity-Beans zugreifen, ist es notwendig, auch sie auf mögliche Folgen zu untersuchen und ggf. anzupassen. Inadäquater Komponentenbegriff Die EJB-Spezifikation ist bezüglich des Komponentenbegriffs nicht allzu präzise; im wesentlichen wird der Begriff des Beans mit dem der Komponente gleichgesetzt (siehe z.b. [Seifert]). Wie man aber bei Entity-Beans besonders leicht erkennen kann, sind Beans recht feingranular, da im allgemeinen eine Entity-Bean-Instanz einer Datenbankzeile entspricht. Zusammen bedeutet dies, dass komplexe EJB-Applikationen aus einer sehr hohen Zahl an Bean-Komponenten bestehen und wegen der zahlreichen gegenseitigen Abhängigkeiten zwischen diesen kaum überschaubar sind. Um dem abzuhelfen, bietet es sich an, auf höherer Abstraktionsebene Komponenten zu bilden, die aus mehreren Beans bestehen. Problematisch ist dabei allerdings, dass man von der EJB-Spezifikation in diesem Fall keinerlei Unterstützung erhält, um z.b. unkontrollierte Aufrufe und damit Abhängigkeiten zwischen verschiedenen Komponenten zu verhindern. So könnte man zwar beispielsweise per Konvention nur die nach außen sichtbaren Teile der Komponenten mit Remote-Interfaces ausstatten, und die internen Details mit lokalen Schnittstellen. Damit wären allerdings zulässige Aufrufe zwischen verschiedenen Komponenten (wegen des RMI-Overheads) unnötig aufwändig, und die Benutzung der Interna durch andere Beans im EJB-Container wäre dennoch nicht sicher verhindert.

Der lokale und verteilte Fall

Der lokale und verteilte Fall Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken? UErörterung zu dem Thema Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken? 2000 by christoph hoffmann Seite I Gliederung 1. In zu großen Mengen ist alles schädlich. 2.

Mehr

Projektmanagement in der Spieleentwicklung

Projektmanagement in der Spieleentwicklung Projektmanagement in der Spieleentwicklung Inhalt 1. Warum brauche ich ein Projekt-Management? 2. Die Charaktere des Projektmanagement - Mastermind - Producer - Projektleiter 3. Schnittstellen definieren

Mehr

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

ObjectBridge Java Edition

ObjectBridge Java Edition ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr

Enterprise Java Beans

Enterprise Java Beans Enterprise Java Beans Die hohe Kunst der aromatischen Bohnenmischung oder Replikator: Einmal Kaffee, Brasilia Highland Blend, Heiß Motivation Bean = Komponente Datenbank Zielgruppe Kommerzielle Anwendungen

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

EJBs und Sicherheit. Vorlesung: Applikationsserver. Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen.

EJBs und Sicherheit. Vorlesung: Applikationsserver. Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen. EJBs und Sicherheit Vorlesung: Applikationsserver Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen.de/~reich Deklarative Sicherheit Zugriffsrechte auf die EJB-Methoden werden

Mehr

Mobile Intranet in Unternehmen

Mobile Intranet in Unternehmen Mobile Intranet in Unternehmen Ergebnisse einer Umfrage unter Intranet Verantwortlichen aexea GmbH - communication. content. consulting Augustenstraße 15 70178 Stuttgart Tel: 0711 87035490 Mobile Intranet

Mehr

GEVITAS Farben-Reaktionstest

GEVITAS Farben-Reaktionstest GEVITAS Farben-Reaktionstest GEVITAS Farben-Reaktionstest Inhalt 1. Allgemeines... 1 2. Funktionsweise der Tests... 2 3. Die Ruhetaste und die Auslösetaste... 2 4. Starten der App Hauptmenü... 3 5. Auswahl

Mehr

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Die Entscheidung Advoware über VPN direkt auf dem lokalen PC / Netzwerk mit Zugriff auf die Datenbank des zentralen Servers am anderen

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen Hilfe Bearbeitung von Rahmenleistungsverzeichnissen Allgemeine Hinweise Inhaltsverzeichnis 1 Allgemeine Hinweise... 3 1.1 Grundlagen...3 1.2 Erstellen und Bearbeiten eines Rahmen-Leistungsverzeichnisses...

Mehr

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG von Urs Schaffer Copyright by Urs Schaffer Schaffer Consulting GmbH Basel www.schaffer-consulting.ch Info@schaffer-consulting.ch Haben Sie gewusst dass... >

Mehr

Nutzung von GiS BasePac 8 im Netzwerk

Nutzung von GiS BasePac 8 im Netzwerk Allgemeines Grundsätzlich kann das GiS BasePac Programm in allen Netzwerken eingesetzt werden, die Verbindungen als Laufwerk zu lassen (alle WINDOWS Versionen). Die GiS Software unterstützt nur den Zugriff

Mehr

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger Software Engineering (Übungsblatt 2) Sommersemester 2012, Dr. Andreas Metzger Übungsblatt-Themen: Prinzip, Technik, Methode und Werkzeug; Arten von Wartung; Modularität (Kohäsion/ Kopplung); Inkrementelle

Mehr

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe

Mehr

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH MATESO GmbH Daimlerstraße 7 86368 Gersthofen www.mateso.de Dieses Dokument beschreibt die Konfiguration

Mehr

iphone- und ipad-praxis: Kalender optimal synchronisieren

iphone- und ipad-praxis: Kalender optimal synchronisieren 42 iphone- und ipad-praxis: Kalender optimal synchronisieren Die Synchronisierung von ios mit anderen Kalendern ist eine elementare Funktion. Die Standard-App bildet eine gute Basis, für eine optimale

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten Berichte bieten die gleichen Möglichkeit zur Berechnung von Werten wie Formulare und noch einige mehr. Im Gegensatz zu Formularen bieten Berichte die Möglichkeit, eine laufende Summe zu bilden oder Berechnungen

Mehr

Ihr IT-Administrator oder unser Support wird Ihnen im Zweifelsfall gerne weiterhelfen.

Ihr IT-Administrator oder unser Support wird Ihnen im Zweifelsfall gerne weiterhelfen. Dieses Dokument beschreibt die nötigen Schritte für den Umstieg des von AMS.4 eingesetzten Firebird-Datenbankservers auf die Version 2.5. Beachten Sie dabei, dass diese Schritte nur bei einer Server-Installation

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

DUALIS Web-Client Kurzanleitung für Studierende

DUALIS Web-Client Kurzanleitung für Studierende DUALIS Web-Client Kurzanleitung für Studierende Das neue Verwaltungsinformationssystem DUALIS der DHBW bietet eine Web-Schnittstelle an, die es Ihnen als Studierenden der DHBW ermöglicht, jederzeit Einsicht

Mehr

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser Dokumentation Black- und Whitelists Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser Inhalt INHALT 1 Kategorie Black- und Whitelists... 2 1.1 Was sind Black- und Whitelists?...

Mehr

EJB jar.xml und Name Service (JNDI)

EJB jar.xml und Name Service (JNDI) EJB jar.xml und Name Service (JNDI) Applikationsserver Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen.de/~reich/appserver/index.html Beschreibung der Beans mit Deployment

Mehr

SE2-10-Entwurfsmuster-2 15

SE2-10-Entwurfsmuster-2 15 Architektur und Skalierbarkeit SE2-10-Entwurfsmuster-2 15 Skalierbarkeit Skalierbarkeit bedeutet die Anpassung einer Software an wachsende Last: Interaktionsfrequenz Nutzerzahl Anpassung durch Hinzufügen

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten. 1 Einleitung Lernziele automatische Antworten bei Abwesenheit senden Einstellungen für automatische Antworten Lerndauer 4 Minuten Seite 1 von 18 2 Antworten bei Abwesenheit senden» Outlook kann während

Mehr

Hilfedatei der Oden$-Börse Stand Juni 2014

Hilfedatei der Oden$-Börse Stand Juni 2014 Hilfedatei der Oden$-Börse Stand Juni 2014 Inhalt 1. Einleitung... 2 2. Die Anmeldung... 2 2.1 Die Erstregistrierung... 3 2.2 Die Mitgliedsnummer anfordern... 4 3. Die Funktionen für Nutzer... 5 3.1 Arbeiten

Mehr

Das Handbuch zu Simond. Peter H. Grasch

Das Handbuch zu Simond. Peter H. Grasch Peter H. Grasch 2 Inhaltsverzeichnis 1 Einführung 6 2 Simond verwenden 7 2.1 Benutzereinrichtung.................................... 7 2.2 Netzwerkeinrichtung.................................... 9 2.3

Mehr

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung

Mehr

1 Informationelle Systeme begriffliche Abgrenzung

1 Informationelle Systeme begriffliche Abgrenzung 1 Informationelle Systeme begriffliche Abgrenzung Im Titel dieses Buches wurde das Wort Softwaresystem an den Anfang gestellt. Dies ist kein Zufall, denn es soll einen Hinweis darauf geben, dass dieser

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Informatik Kurs Simulation. Hilfe für den Consideo Modeler Hilfe für den Consideo Modeler Consideo stellt Schulen den Modeler kostenlos zur Verfügung. Wenden Sie sich an: http://consideo-modeler.de/ Der Modeler ist ein Werkzeug, das nicht für schulische Zwecke

Mehr

104 WebUntis -Dokumentation

104 WebUntis -Dokumentation 104 WebUntis -Dokumentation 4.1.9.2 Das elektronische Klassenbuch im Betrieb Lehrer Aufruf Melden Sie sich mit Ihrem Benutzernamen und Ihrem Passwort am System an. Unter den aktuellen Tagesmeldungen erscheint

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003 Nicht kopieren Der neue Report von: Stefan Ploberger 1. Ausgabe 2003 Herausgeber: Verlag Ploberger & Partner 2003 by: Stefan Ploberger Verlag Ploberger & Partner, Postfach 11 46, D-82065 Baierbrunn Tel.

Mehr

LEITFADEN ZUR SCHÄTZUNG DER BEITRAGSNACHWEISE

LEITFADEN ZUR SCHÄTZUNG DER BEITRAGSNACHWEISE STOTAX GEHALT UND LOHN Stollfuß Medien LEITFADEN ZUR SCHÄTZUNG DER BEITRAGSNACHWEISE Stand 09.12.2009 Seit dem Januar 2006 hat der Gesetzgeber die Fälligkeit der SV-Beiträge vorgezogen. So kann es vorkommen,

Mehr

Guideline. Facebook Posting. mit advertzoom Version 2.3

Guideline. Facebook Posting. mit advertzoom Version 2.3 Guideline Facebook Posting mit advertzoom Version 2.3 advertzoom GmbH advertzoom GmbH Stand November 2012 Seite [1] Inhalt 1 Facebook Posting Schnittstelle... 3 1.1 Funktionsüberblick... 3 2 Externe Ressource

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

GITS Steckbriefe 1.9 - Tutorial

GITS Steckbriefe 1.9 - Tutorial Allgemeines Die Steckbriefkomponente basiert auf der CONTACTS XTD Komponente von Kurt Banfi, welche erheblich modifiziert bzw. angepasst wurde. Zuerst war nur eine kleine Änderung der Komponente für ein

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Kreativ visualisieren

Kreativ visualisieren Kreativ visualisieren Haben Sie schon einmal etwas von sogenannten»sich selbst erfüllenden Prophezeiungen«gehört? Damit ist gemeint, dass ein Ereignis mit hoher Wahrscheinlichkeit eintritt, wenn wir uns

Mehr

Sehr geehrter Herr Pfarrer, sehr geehrte pastorale Mitarbeiterin, sehr geehrter pastoraler Mitarbeiter!

Sehr geehrter Herr Pfarrer, sehr geehrte pastorale Mitarbeiterin, sehr geehrter pastoraler Mitarbeiter! Sehr geehrter Herr Pfarrer, sehr geehrte pastorale Mitarbeiterin, sehr geehrter pastoraler Mitarbeiter! Wir möchten Sie an Ihr jährliches Mitarbeitergespräch erinnern. Es dient dazu, das Betriebs- und

Mehr

teamsync Kurzanleitung

teamsync Kurzanleitung 1 teamsync Kurzanleitung Version 4.0-19. November 2012 2 1 Einleitung Mit teamsync können Sie die Produkte teamspace und projectfacts mit Microsoft Outlook synchronisieren.laden Sie sich teamsync hier

Mehr

Protect 7 Anti-Malware Service. Dokumentation

Protect 7 Anti-Malware Service. Dokumentation Dokumentation Protect 7 Anti-Malware Service 1 Der Anti-Malware Service Der Protect 7 Anti-Malware Service ist eine teilautomatisierte Dienstleistung zum Schutz von Webseiten und Webapplikationen. Der

Mehr

Konsolidierung und Neuimplementierung von VIT. Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt

Konsolidierung und Neuimplementierung von VIT. Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt Konsolidierung und Neuimplementierung von VIT Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt Inhaltsverzeichnis 1 Was ist der Kontext?... 1 2 VIT: Ein sehr erfolgreiches

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Die mobiletan im Hypo Internetbanking

Die mobiletan im Hypo Internetbanking Anleitung Die mobiletan im Hypo Internetbanking HYPO ALPE-ADRIA-BANK AG European Payments Version 1.0 29. Juni 2009 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Einrichten 3 3 Zeichnen mit der mobiletan 5 4

Mehr

AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung

AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung Problem: Um AutoCAD abwechselnd auf mehreren Rechnern einsetzen zu können konnte man bis AutoCAD 2000 einfach den Dongle umstecken. Seit AutoCAD 2000i

Mehr

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung Client/Server-Programmierung WS2007/08 EJB/JSP: Schritt-für-Schritt Anleitung Version 1.1, 26.09.07 Eingesetzte Software: - Apache Tomcat 5.5.9 bzw. 5.5.12 (http://tomcat.apache.org/download-55.cgi#5.5.12)

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel ENDIAN DISTRIBUTOR ASA Schnittstelle zu Endian Firewall Hotspot aktivieren Konfiguration ASA jhotel ASA jhotel öffnen Unter den Menüpunkt Einrichtung System System Dort auf Betrieb Kommunikation Internet-Zugang

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Gutes Leben was ist das?

Gutes Leben was ist das? Lukas Bayer Jahrgangsstufe 12 Im Hirschgarten 1 67435 Neustadt Kurfürst-Ruprecht-Gymnasium Landwehrstraße22 67433 Neustadt a. d. Weinstraße Gutes Leben was ist das? Gutes Leben für alle was genau ist das

Mehr

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten bedingten Wahrscheinlichkeit. Mathematik- Unterrichts- Einheiten- Datei e. V. Klasse 9 12 04/2015 Diabetes-Test Infos: www.mued.de Blutspenden werden auf Diabetes untersucht, das mit 8 % in der Bevölkerung verbreitet ist. Dabei werden

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Windows-Sicherheit in 5 Schritten. Version 1.1 Weitere Texte finden Sie unter www.buerger-cert.de.

Windows-Sicherheit in 5 Schritten. Version 1.1 Weitere Texte finden Sie unter www.buerger-cert.de. Windows-Sicherheit in 5 Schritten Version 1.1 Weitere Texte finden Sie unter www.buerger-cert.de. Inhalt: 1. Schritt: Firewall aktivieren 2. Schritt: Virenscanner einsetzen 3. Schritt: Automatische Updates

Mehr

Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation

Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation Einführung Mit welchen Erwartungen gehen Jugendliche eigentlich in ihre Ausbildung? Wir haben zu dieser Frage einmal die Meinungen von Auszubildenden

Mehr

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Version 1.0 Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten In unserer Anleitung zeigen wir Dir, wie Du Blogbeiträge

Mehr

Beweisbar sichere Verschlüsselung

Beweisbar sichere Verschlüsselung Beweisbar sichere Verschlüsselung ITS-Wahlpflichtvorlesung Dr. Bodo Möller Ruhr-Universität Bochum Horst-Görtz-Institut für IT-Sicherheit Lehrstuhl für Kommunikationssicherheit bmoeller@crypto.rub.de 6

Mehr

Hilfen zur Verwendung der Word-Dokumentvorlage des BIS-Verlags

Hilfen zur Verwendung der Word-Dokumentvorlage des BIS-Verlags Hilfen zur Verwendung der Word-Dokumentvorlage des BIS-Verlags 2013 style_sheet_bis_verlag_20130513 Arbeiten mit der Dokumentvorlage des BIS-Verlags... 3 Dokumentvorlage Wofür?... 3 Wohin mit der Dokumentvorlage...

Mehr

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut Von Susanne Göbel und Josef Ströbl Die Ideen der Persönlichen Zukunftsplanung stammen aus Nordamerika. Dort werden Zukunftsplanungen schon

Mehr

2.5.2 Primärschlüssel

2.5.2 Primärschlüssel Relationale Datenbanken 0110 01101110 01110 0110 0110 0110 01101 011 01110 0110 010 011011011 0110 01111010 01101 011011 0110 01 01110 011011101 01101 0110 010 010 0110 011011101 0101 0110 010 010 01 01101110

Mehr

Die Entwicklung eines Glossars (oder eines kontrollierten Vokabulars) für ein Unternehmen geht üblicherweise in 3 Schritten vor sich:

Die Entwicklung eines Glossars (oder eines kontrollierten Vokabulars) für ein Unternehmen geht üblicherweise in 3 Schritten vor sich: Glossare 1 Inhalt 1 Inhalt... 1 2 Prozesse... 1 3 Eine kleine Zeittabelle...... 1 4 Die ersten Schritte... 2 5 Die nächsten Schritte...... 2 6 Die letzten Schritte... 3 7 Das Tool...... 4 8 Beispiele...

Mehr

Softwareentwicklungspraktikum Sommersemester 2007. Grobentwurf

Softwareentwicklungspraktikum Sommersemester 2007. Grobentwurf Softwareentwicklungspraktikum Sommersemester 2007 Grobentwurf Auftraggeber Technische Universität Braunschweig

Mehr

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG it4sport GmbH HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG Stand 10.07.2014 Version 2.0 1. INHALTSVERZEICHNIS 2. Abbildungsverzeichnis... 3 3. Dokumentenumfang... 4 4. Dokumente anzeigen... 5 4.1 Dokumente

Mehr

5 Zweisprachige Seiten

5 Zweisprachige Seiten 5 Zweisprachige Seiten TYPO3 unterstützt mehrsprachige Web-Sites. Hier zeigen wir Ihnen die Funktion an Hand einer zweisprachigen Web-Site. Bei drei oder mehr Sprachen gehen Sie analog vor. Jede Seite

Mehr

Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen!

Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen! Stefan Böttner (SB4) März 2013 Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen! Verwendbar ab EEP7.5(mitPlugin5) + EEP8 + EEP9 Abmessung: (B 12m x H 12m) Die Einsatzhöhe

Mehr

Häufig gestellte Fragen zu Professional webmail

Häufig gestellte Fragen zu Professional webmail Häufig gestellte Fragen zu Professional webmail Wo finde ich meine persönlichen Daten und Einstellungen? Sie können folgende persönliche Daten und Einstellungen anpassen: Wie Sie Ihre persönlichen Daten

Mehr

Persönlichkeit und Persönlichkeitsunterschiede

Persönlichkeit und Persönlichkeitsunterschiede 9 Persönlichkeit und Persönlichkeitsunterschiede 1 Inhalt Die Beschäftigung mit der menschlichen Persönlichkeit spielt in unserem Alltag eine zentrale Rolle. Wir greifen auf das globale Konzept Persönlichkeit

Mehr

[Customer Service by KCS.net] KEEPING CUSTOMERS SUCCESSFUL

[Customer Service by KCS.net] KEEPING CUSTOMERS SUCCESSFUL [Customer Service by KCS.net] KEEPING CUSTOMERS SUCCESSFUL Was bedeutet Customer Service by KCS.net? Mit der Einführung von Microsoft Dynamics AX ist der erste wichtige Schritt für viele Unternehmen abgeschlossen.

Mehr

Präventionsforum+ Erfahrungsaustausch. HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch. Stand: 11.09.2014 Änderungen vorbehalten

Präventionsforum+ Erfahrungsaustausch. HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch. Stand: 11.09.2014 Änderungen vorbehalten Präventionsforum+ Erfahrungsaustausch HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch Stand: 11.09.2014 Änderungen vorbehalten Anlage zum Endnutzer-Handbuch Handout Gruppen-Administratoren

Mehr

Monitore. Klicken bearbeiten

Monitore. Klicken bearbeiten Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition

Mehr