J Enterprise Java Beans. J.2 Architektur. J.1 Motivation. J.1 Motivation (2) Typisch: Architektur aus mehreren Schichten (Multitiered Architecture)



Ähnliche Dokumente
G.2 Motivation. G.2 Motivation (2) G.1 J2EE. Komponenten-Idee. Java 2 Enterprise Edition. Application Server

J Enterprise Java Beans. J.2 Architektur. J.1 Motivation. J.1 Motivation (2) Typisch: Architektur aus mehreren Schichten (Multitiered Architecture)

J Enterprise Java Beans

D Enterprise Java Beans

G Enterprise Java Beans. G.3 Architektur. G.2 Motivation. G.2 Motivation (2) G.1 J2EE. Komponenten-Idee. Java 2 Enterprise Edition. Application Server

D Enterprise Java Beans

Der lokale und verteilte Fall

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

Softwareentwicklung mit Enterprise JAVA Beans

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, Universität Freiburg, Germany

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

SE2-10-Entwurfsmuster-2 15

Enterprise Java Beans

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Anwendung eines Enterprise Java Beans

EJB jar.xml und Name Service (JNDI)

Einsatz von Applikationsservern. Untersucht am Beispiel des Sybase Enterprise Application Server

Online Banking System

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Java Enterprise Architekturen Willkommen in der Realität

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Java 2, Enterprise Edition Einführung und Überblick

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

CORBA. Systemprogrammierung WS

WebSphere Application Server Installation

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

OP-LOG

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Internet Explorer Version 6

JSP und Servlet Programmierung

11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens

2. Installation unter Windows 8.1 mit Internetexplorer 11.0

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

Zustandsgebundene Webservices

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

AS/point, Ihr Partner die nächsten 10 und mehr Jahre -

ORACLE Business Components for Java (BC4J) Marco Grawunder

Adminer: Installationsanleitung

ObjectBridge Java Edition

Client/Server-Systeme

mysoftfolio360 Handbuch

Eine Anleitung, wie Sie Mozilla Thunderbird 2 installieren und konfigurieren können. Installation Erstkonfiguration... 4

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Acceptor-Connector. Acceptor-Connector

Application Server Application Server: Motivation Application Server: Begriff

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

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Gesicherte Prozeduren

Enterprise Java Beans Einführung

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System

Backup der Progress Datenbank

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

Java RMI, CORBA und Firewalls

3. Stored Procedures und PL/SQL

Anleitung für IQES-Verantwortliche Persönliche Konten verwalten

Softwareentwicklung mit Enterprise JAVA Beans

Übung: Verwendung von Java-Threads

Step by Step Webserver unter Windows Server von Christian Bartl

Formular»Fragenkatalog BIM-Server«

Etablierung serviceorientierter Architekturen mit Web Services

Internetanbindung von Datenbanken

Installationsanleitung dateiagent Pro

DVD Version 9.1. Netzwerkinstallation + VDE-Admin-Tool.

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Pro/INTRALINK Lehrplan-Handbuch

Vgl. Oestereich Kap 2.7 Seiten

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Nutzung von GiS BasePac 8 im Netzwerk

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

TimeSafe Installationsanleitung mit InfotechStart

Dieses Dokument soll dem Administrator helfen, die ENiQ-Software als Client auf dem Zielrechner zu installieren und zu konfigurieren.

Anleitung VR-NetWorld Software 5.0

Architekturen. DB-Anwendungen: Aufgaben. Aufteilung der Funktionen. ƒ Datenbankanwendungen

ADDISON Aktenlösung Automatischer Rewe-Import. Technische Beschreibung

Übungsklausur vom 7. Dez. 2007

FrogSure Installation und Konfiguration

Kurzanweisung für Google Analytics

IBM Software Demos Tivoli Composite Application Manager for SOA

UMSTELLUNG DER RÖNTGEN-SCHNITTSTELLE DÜRR-DBSWIN AUF DÜRR-VDDS

Durchführung der Datenübernahme nach Reisekosten 2011

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

MCRServlet Table of contents

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Datenübernahme easyjob 3.0 zu easyjob 4.0

Anleitungen zum KMG- -Konto

Teamschool Installation/ Konvertierungsanleitung

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Transkript:

J Enterprise Java Beans J Enterprise Java Beans J.1 Motivation Große verteilte Anwendungen im Geschäftsleben viele s wollen Dienste nutzen einige Server stellen Dienste bereit einige Datenbanken halten die Geschäftsdaten Problem Aufbau des Systems Zergliederung in Einzelteile Kommunikation der Teile Server Server Datenbank J.1 Typisch: Architektur aus mehreren Schichten (Multitiered Architecture) -Tier Anwendungsteil des Webbrowser dedizierte Anwendung Middle-Tier Geschäftslogik Service-Bereitstellung EIS-Tier (Enterprise Information System) Datenbank Archiv der Geschäftsvorgänge Server J.3 J.1 Motivation (2) J.1 Motivation (2) Komponenten-Idee -Tier Zerlegung der Geschäftslogik ( Business-Logik ) in Komponenten Webbrowser als -Anwendung z.b. Komponente zur Preisberechnung Wiederverwendung von Komponenten Komponentenmarkt mit Komponentenanbietern Zusammenschalten von neuen und eingekauften Komponenten zu einer neuen Anwendung Bereitstellung einer Umgebung für Komponenten Umgebung unterstützt Sicherheit Umgebung unterstützt Anwendungskonsistenz durch Transaktionen Application Server Umgebung für Komponenten Zugriff auf dynamische Webseiten (z.b. GMX, Webshop, Hotelreservierung) Webseiten mit Applets (Applet-Programm tritt als zur Anwendung auf, z.b. Homebanking) dedizierte -Anwendung kommuniziert mit dem Rest der Anwendung Web-Services-Schnittstelle Benutzeroberfläche zur Anwendung lokale Berechnung/Verarbeitung Menge von Komponenten bilden eine Anwendung J.2 J.4

(3) 1 EJB-Architektur Middle-Tier Globales Bild einer EJB-Anwendung Web-Tier Web-Container für Java Server Pages oder Servlets (CGI-Skript) unnötig bei dedizierter -Anwendung Business-Tier Firewall SOAP Servlets HTTP IIOP JSP Tier Middle Tier enthält eigentliche Geschäftslogik Einsatz von Geschäfts-Komponenten Komponenten-Container JDBC Connector EJ Beans J2EE-Server Verarbeitung von Geschäftsprozessen und Geschäftsdaten JMS SQL propr. Protokoll IIOP, SOAP andere Systeme EIS Tier J.5 J.7 (4) 1 EJB-Architektur (2) EIS-Tier Datenbanksysteme relationale Datenbanken objektorientierte Datenbanken Altanwendungen zum Zugriff auf Geschäftsdaten Datenverwaltung von Geschäftsdaten Konsistenz der Daten Beispielanwendungen Bankanwendung am Webbrowser Application-Server erlaubt Ansicht des Kontoauszug, Beauftragung für Überweisung, Dauerauftrag etc. Datenbanken im Hintergrund halten Buchungen und Kontostände sowie Benutzerdaten Webshop am Webbrowser mehrere Application-Server für Kreditkartenzahlung, Produktkatalog, Kundenprofilverwaltung J.6 J.8

2 Rollen von EJB 2 Rollen von EJB (3) Bean-Entwickler Application-Server-Anbieter Komponentenverkäufer im Komponentenmarkt Bereitstellen des Bean-Containers Entwicklungsabteilung... liefern Enterprise-Java-Bean d.h. Java Klassen gemäß EJB-Spezifikation für Komponenten Anwendungsentwickler Entscheidung über Komponenteneinsatz (Zukauf, Eigenentwicklung) Verbindungscode zwischen Komponenten Entwicklung der Benutzerschnittstelle (JSP, Servlet, Applet) Behausung für Enterprise Java Beans Unterstützung für Sicherheit, Transaktionen etc. Beispiele WebLogic (BEA) Bluestone (HP) iplanet iportal (IONA) Websphere (IBM) Borland Application Server Oracle 9i JBoss (Open Source) JRun (Macromedia) Powertier (Persistence) Gemstone/J (Brokat) Werkzeuganbieter Werkzeuge für die Code-Entwicklung (z. B. Visual Age, Eclipse) Werkzeuge zur Modellierung und Code-Erzeugung J.9 J.11 2 Rollen von EJB (2) 3 Unterschied zu klassischer Anwendungsinstallateur (Deployer) Klassische ist explizit Aufstellen der Hardware für Application-Server : CORBA, Java RMI Stichworte: Redundanz und Fehlertoleranz Verteilung der Beans auf Application-Server Sicherung der Kommunikation durch Firewalls Integration in Infrastruktur Stichwort: Verknüpfung von Zugriffsrechten mit aktuellen Benutzern Performance-Tuning Systemadministratoren Betrieb der Anwendung Managementfunktion Überwachung der Anwendung Beispiel: Überweisungsvorgang von Konto zu Konto account1.transfer( Amount s, Account other ); notwendiger Code im Kontoobjekt Aufruf eines Sicherheitsservice, ob Aufrufer berechtigt Aufruf eines Transaktionsservice zum Start einer Transaktion Aufruf eines Datenbankservers zum Laden von Kontoinformationen lokale Kontostandsberichtigung Aufruf des zweiten Kontos zur Kontostandsberichtigung Aufruf des Datenbankservers zum Speichern der Kontoinformationen Aufruf des Transaktionsservice zum Beenden der Transaktion Monitoring, Fehlerbehebung J.10 J.12

3 Unterschied zu klassischer (2) 3 Unterschied zu klassischer (4) Problem komplexe Programmierung schwierige Wartung Interaktion verschiedener Produkte unter Umständen problematisch z.b. Datenbankserver und Transaktionsdienst Vorteil hohe Flexibilität Vorteil einfach zu entwickelnden Beans leichte Wartung da übersichtlicher Code gesichertes Zusammenspiel der Komponenten Nachteil weniger flexibel im Fehlerfall weniger durchschaubar abhängig vom Reifegrad der Produkte J.13 J.15 3 Unterschied zu klassischer (3) 3 Unterschied zu klassischer (5) Implizite wie bei EJB Beispiel: Überweisungsvorgang von Konto zu Konto account1.transfer( Amount s, Account other ); notwendiger Code in Bean lokale Kontostandsberichtigung Aufruf einer zweiten Bean zur Kontostandsberichtigung des anderen Kontos Interaktion mit Services erfolgt implizit Container fängt Interaktionen ab Beschreibung der Interaktion in der Deployment-Phase Deployment-Deskriptor (XML) J.14 EJB bietete implizite Unterstützung für verteilte Transaktionen Abbruch oder Bestätigung der Ergebnisse einer Transaktion Koordinierung nebenläufiger Aktionen Sicherheitsdienst Zugriffskontrolle Ressourcen- und Life-Cycle-Kontrolle Container verwaltet teilweise Bean-Lebenszyklus Persistenz automatisches Sichern persistenter Daten z.b. in Datenbanken Monitoring Container kann Last und Aufrufhäufigkeiten erfassen entfernte Aufrufe Ortstransparenz wie klassische J.16

2 Interaktion mit Beans Verschiedene Bean-Typen Session-Bean Modellierung von Geschäftsprozessen (implementieren Anwendungslogik) kurzlebig, nur ein agieren wie Verben (repräsentieren mögliche Aktionen) z.b. überweisen, autorisieren interagieren typischerweise mit Entity-Beans und Session-Beans Entity-Bean Modellierung von Geschäftsdaten langlebig, Nutzung durch mehrere s agieren wie Substantive (repräsentieren Daten aus der Datenbank) z.b. Konto, Kreditkarte, Produkt Message-Driven-Bean ähnlich Session-Bean ansprechbar über Nachrichten J.17 Keine direkte Interaktion Bean-Instanzen sind nicht direkt ansprechbar implizite -Aktionen erfordern ein unbedingtes Abfangen von Aufrufen Repräsentant für eine Bean-Instanz ist das EJBObject implementiert ein (entferntes) Bean-Interface Bean-Interface muss von javax.ejb.ejbobject erben dieses implementiert java.rmi.remote deklariert alle Methoden der Geschäftslogik Implementierung des EJBObject herstellerspezifisch en rufen Bean über ein EJBObject auf entfernte Aufrufe über RMI bzw. RMI-IIOP möglich J.19 1 Bean-Klassen 2 Interaktion mit Beans (2) Beans werden durch Java-Klassen repräsentiert EJBObject fängt Aufrufe an der Bean ab müssen bestimmte Java-Interfaces implementieren Alle Beans implementieren Marker-Interface: javax.ejb.enterprisebean RMI- Referenz EJBObject Bean-Instanz markiert Bean gleichzeitig als serializable Einzelne Bean-Typen implementieren jeweils Typ-Interfaces: javax.ejb.sessionbean, javax.ejb.entitybean, java.ejb.messagedrivenbean führt implizite -Interaktionen durch Sicherheitsüberprüfung, Transaktionsverwaltung, Datenbankanfragen... Interaktion mit EJBObject über RMI bzw. RMI-IIOP Interaktion im lokalen Fall teuer (Marshalling und Demarshalling, lokaler Nachrichtentransport etc.) J.18 J.20

2 Interaktion mit Beans (3) 3 Erzeugung von Beans (2) Lokaler Repräsentant für eine Bean-Instanz ist das EJBLocalObject Beispiel: entferntes Home-Object implementiert ein lokales Bean-Interface Bean-Interface muss von javax.ejb.ejblocalobject erben deklariert alle Methoden der Geschäftslogik Implementierung des EJBLocalObject herstellerspezifisch en rufen Bean über ein EJBLocalObject auf kein entfernter Aufruf möglich RMI- Referenz EJBHome <<erzeugt>> EJBObject Bean-Instanz EJBLocalObject fängt Aufrufe an der Bean ab Erzeugung des EJBObject durch Aufruf der create()-methode am EJBHome (z.b. über RMI-IIOP) lokale Java- Referenz EJBLocalObject Bean-Instanz Rückgabe der Referenz auf das EJBObject auch hier: implizite Interaktion mit der J.21 J.23 3 Erzeugung von Beans 4 Verwaltung des Lebenszyklus Eigentlich Erzeugung von EJBObjects bzw. EJBLocalObjects Erzeugung der Bean-Instanz erfolgt implizit durch die bzw. den en interagieren nur mit EJBObject- bzw. EJBLocalObject- und EJBHome- bzw. EJBLocalHome-Objekten d. h. nur mit herstellerspezifischen Objekten des s Erzeugung über Factory-Pattern Lebenszyklus der EJBObjects bzw. EJBLocalObjects Schnittstelle zur Factory heißt Home-Object explizite Methode remove() Repräsentant für ein Home-Object implementiert ein entferntes oder lokales Home-Interface muss vom aufgerufen werden, falls Referenz nicht mehr benötigt wird Lebenszyklus der Bean-Instanz Home-Interface muss von javax.ejb.ejbhome bzw. java.ejb.ejblocalhome erben ersteres implementiert java.rmi.remote, letzteres nicht deklariert Methoden zur Bean-Erzeugung, z. B. create() Implementierung des Home-Object herstellerspezifisch Finden des Home-Object durch Namensdienst (typisch über JNDI) völlig unabhängig vom Lebenszyklus der EJBObjects Bean kann erst bei Aufruf erzeugt werden Bean kann gepoolt werden (Wiederverwendung gebrauchter Beans) Aufgabenwechsel für Bean-Instanzen während der Laufzeit (dynamische Zuordnung an verschiedene EJBObjects) J.22 J.24

4 Verwaltung des Lebenszyklus (2) 6 Beispiel (2) Zuordnung EJBObjects zu Bean-Instanzen nicht unbedingt 1:1 Erzeugung über Home-Interface benutzt u. U. Bean-Instanz wieder z. B. Entity-Bean für bestimmtes Konto mehrere EJBObjects pro Bean-Instanz möglich z. B. so viele wie s eine Referenz zu einer Entity-Bean erzeugt haben gepoolte Instanzen implementieren alle referenzierten Beans (EJBObjects) 5 Bean-Interaktion mit dem Container Interaktion mit Container bisher nur implizit Explizite Interaktion über Context-Objekt Container übergibt bei Bean-Instanzerzeugung Context-Objekt Methoden zum Ermitteln der Home-Objects (lokal u. entfernt) Methoden zum Transaktionsdienst (z.b. ermittle Transaktionsinformationen) Methoden zum Sicherheitsdienst (z.b. hole Aufruferinformationen) J.25 lokales und entferntes Bean-Interface für das EJBObject z.b. example.hello und example.hellolocal implementiert javax.ejb.ejbobject bzw. EJBLocalObject fügt sayhello-methode hinzu lokales und entferntes Home-Interface für Home-Object z.b. example.hellohome und example.hellolocalhome implementiert java.ejb.ejbhome bzw. EJBLocalHome fügt create-methode hinzu Kompilation der Java-Sourcen J.27 6 Beispiel 6 Beispiel (3) Session-Bean für Hello-World Hinzufügen eines Deployment-Descriptors Java-Klasse für Bean XML-File z.b. example.hellobean implementiert javax.ejb.sessionbean implementiert einige vorgegebene Methoden ejbcreate(): Aufruf bei Erzeugung der Instanz ejbremove(): bei Zerstörung der Instanz ejbpassivate(): bei Passivierung der Instanz ejbactivate(): bei Aktivierung der Instanz setsessioncontext(): bekommt Session-Context-Object vom Container fügt sayhello-methode hinzu Beispiel <ejb-jar> <enterprise-beans> <sessions> <ejb-name>hello</ejb-name> <home>example.hellohome</home> <remote>example.hello</remote> <local-home>example.hellolocalhome</local-home> <local>example.hellolocal</local> <ejb-class>example.hellobean</ejb-class> <session-type>stateless</session-type> <transaction-type>container</transaction-type> </sessions> </enterprise-beans> </ejb-jar> J.26 J.28

6 Beispiel (4) 8 Interaktion mit der Bean Descriptorinhalt s müssen folgende Schritte durchführen Name (Nickname) für die Bean JNDI anfragen (z. B. nach Hello ) wird für den Eintrag des Home-Objects im Namensdienst verwendet Benennung der Interfaces und der Bean-Klasse Angaben zur impliziten -Interaktion hier: zustandslose Session-Bean (wird für Lebenszyklusverwaltung verwendet) hier: Container-basierte Transaktionsverwaltung (Container kümmert sich um Transaktion pro Aufruf) das von JNDI gelieferte Objekt muss mittels Narrow in einen Stellvertreter vom Typ example.hellohome gewandelt werden Aufruf von create() gibt Objektreferenz auf Stellvertreter für ein EJBObject der Hello-Bean zurück Aufruf von sayhello() am EJBObject Class-Files plus Descriptor Zusammenpacken zu einem jar-file verkaufbare EJB-Komponente J.29 J.31 7 Deployment J.4 Einordnung J.4 Einordnung Installation einer Komponente stark herstellerabhängig Basis RMI-IIOP/CORBA Vorfeld Integration des jar-files in den Application-Server / Überprüfung der Konsistenz durch Werkzeuge Passen Interfaces zur Bean-Klasse? Sind die notwendigen Methoden implementiert? Werkzeuge erzeugen EJBObject, EJBLocalObject, EJBHome- und EJBLocalHome-Objekte Werkzeuge erzeugen RMI-IIOP-Stubs und -Skeletons für EJBObject und EJBHome-Objekt Unterstützung nichtfunktionaler Eigenschaften Effizienz und Ressourcenverwaltung Abkopplung der Lebenszeit von Bean-Instanzen von der Lebenszeit der Bean Konsistenz und Nebenläufigkeit Transaktionskonzept Sicherheit Sicherheitskonzept Interessantes Programmiermodell Eigentliches Deployment veranlasse die Bean zu installieren jedoch noch einige Schwächen im Modell: Portabilitäts- und Semantikprobleme (z.b. Transaktionssemantik) J.30 J.32