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



Ähnliche Dokumente
EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Session Beans & Servlet Integration. Ralf Gitzel

Enterprise Java Beans Einführung

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Fortgeschrittene Servlet- Techniken. Ralf Gitzel

Der lokale und verteilte Fall

Objektorientierte Programmierung. Kapitel 12: Interfaces

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

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

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

3 Windows als Storage-Zentrale

Whitepaper. Produkt: combit Relationship Manager / address manager. Dateiabgleich im Netzwerk über Offlinedateien

datenfabrik. Validieren von -Adressen 1

Objektorientierter Systementwurf mit Java

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

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

MCRServlet Table of contents

Kurzanweisung für Google Analytics

Einführung in die Java- Programmierung

SE2-10-Entwurfsmuster-2 15

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Anwenderleitfaden Citrix. Stand Februar 2008

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

Reporting Services und SharePoint 2010 Teil 1

Man liest sich: POP3/IMAP

Verarbeitung der -Adressen

Automatisiertes Testen von Java EE-Applikationen mit Arquillian

Windows 8 Lizenzierung in Szenarien

Anleitung auf SEITE 2

Tevalo Handbuch v 1.1 vom

How-to: Webserver NAT. Securepoint Security System Version 2007nx

MailUtilities: Remote Deployment - Einführung

Ihr CMS für die eigene Facebook Page - 1

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Fragen Arthur Zaczek. Apr 2015

Internet Explorer Version 6

SJ OFFICE - Update 3.0

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Dokumentenmanagement mit hyscore

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Step by Step Webserver unter Windows Server von Christian Bartl

FIS: Projektdaten auf den Internetseiten ausgeben

Umstieg auf Microsoft Exchange in der Fakultät 02

Leichte-Sprache-Bilder

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

FH LU JEE Vorlesung SS Ralf Gitzel

Grundlagen von Python

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

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

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger

Objektorientierte Programmierung OOP

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

teischl.com Software Design & Services e.u. office@teischl.com

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

BIF/SWE - Übungsbeispiel

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Innere Klassen in Java

Lizenzierung von SharePoint Server 2013

IEEE 802.1x Authentifizierung. IEEE 802.1x Authentifizierung IACBOX.COM. Version Deutsch

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

SANDBOXIE konfigurieren

12. Dokumente Speichern und Drucken

OLXTeamOutlook 1.5 für Outlook 2003, 2002/XP, 2000 und 97/98

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Zur Einrichtung der orgamax Cloud auf Ihrem ipad beschreiben wir hier die Vorgehensweise.

Cookies. Krishna Tateneni Jost Schenck Übersetzer: Jürgen Nagel

Tipps und Tricks zu Netop Vision und Vision Pro

p-cost Benutzerhandbuch Alfred Pabinger

Kurzeinführung Excel2App. Version 1.0.0

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Präsentation: Google-Kalender. Walli Ruedi Knupp Urdorf

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Lizenzierung von SharePoint Server 2013

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Arbeiten mit UMLed und Delphi

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Anleitung auf SEITE 2

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Den Fehler session error bei der Kalenderanmeldung beheben:

FastViewer Remote Edition 2.X

LabTech RMM. Integration von Teamviewer. Vertraulich nur für den internen Gebrauch

! " # $ " % & Nicki Wruck worldwidewruck

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Software Engineering Klassendiagramme Assoziationen

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

Transkript:

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 Session Bean mit Local Interface Web Client 3

Motivation für s Ralf Gitzel ralf_gitzel@hotmail.de 4

Motivation Web Container Servlet Sichtbarer Einstiegspunkt für das Servlet EJB Container DB Persistence Provider Entity 5

Mögliche Clients für eine Session Bean Servlet GUI-basierte Java Anwendung EJB Container Bel. Anwendung Web Service Entity 6

Rolle der s Stellen Geschäftslogik nach außen zu Verfügung Der JEE Client (z.b. ein Servlet) greift über die s auf die EJB Applikation zu Die s stellen die Session der JEE Anwendung dar 7

Anmerkung: vs. Normale Java Klassen im Servlet Trennung von Darstellung und Code: Deployment Logik und Darstellung of verschiedenen Servern Mehrere Darstellungsformen für die gleiche Logik Enterprise Integration: Logik kann ohne viel Aufwand parallel auch als Web Service angeboten werden (d.h. Aufruf aus anderen Anwendungen, die in anderen Sprachen geschrieben sind!) Containerdienste (Persistenz, Sicherheit, Transaktionen) 8

Session im EJB Kontext Session: Eine (virtuelle) Verbindung zwischen dem Client und dem Server, die eine endliche Zeitspanne anhält Lange Session: Stateful (merkt sich Daten zwischen Aufrufen) Kurze Session: Stateless (jeder Aufruf ist eine neue Session) 9

Das Interface Ralf Gitzel ralf_gitzel@hotmail.de 10

s Entfernter vs. Lokaler Zugriff Stateful: Merkt sich den Zustand der Bean Stateless: Zustandslos, jeder Aufruf wie neu s Remote Interface Local Interface EJB Container Verschiedene Client Typen 11

Client Szenarien Servlet Servlet Lokaler Zugriff Entfernter Zugriff 12

Stateful und Stateless Session Beans Ralf Gitzel ralf_gitzel@hotmail.de 13

s Session Länge (lang vs. kurz) Stateful: Merkt sich den Zustand der Bean Stateless: Zustandslos, jeder Aufruf wie neu s Remote Interface Local Interface EJB Container Verschiedene Client Typen 14

Stateless vs. Stateful Session Beans: Stateless Client @Stateless @Stateless @Stateless Jeder Aufruf ist eine neue Session, alle Daten sind vergessen! 15

Stateless vs. Stateful Session Beans: Stateful Client @Stateful Eine Session, d.h. Daten werden zw. den Aufrufen gespeichert! 16

Stateless Implementierung (I) A.doX() A.doX() A.doX() EJB Container Klasse A A Objekt 1 A Objekt 2 A Objekt n Bean Pool Klasse B 17

Stateless Implementierung (II) EJB Container Klasse A A Objekt 1 A Objekt 2 A Objekt n Bean Pool Klasse B Client bekommt eine zufällige Instanz aus dem Pool zugewiesen! 18

Stateless Implementierung (III) Aufrufe hintereinander können bei unterschiedl. Objekten der gleichen Klasse enden! 1. Aufruf 2. Aufruf EJB Container Klasse A A Objekt 1 A Objekt 2 A Objekt n Bean Pool Klasse B 19

Gruppendiskussion Erklärt diese Implementierung, warum Stateless s keinen Zustand speichern können? Welche Vorteile bietet die Implementierung als Pool? 20

Stateful Implementierung (I) Client I A.doX() EJB Container Klasse A Client II 1-zu-1 Zuordnung bis zum Ende der Session A.doX() A Objekt für I A Objekt für II 21

Passivierung Aktiv, d.h. im Hauptspeicher Keine Client Aktivität Erneute Client Aktivität Hält die Belastung des Hauptspeichers durch inaktive Sessions gering. Timeout: Sehr lange nicht verwendete Sessions werden ganz beendet. Passiv, d.h. auf der Platte gespeichert 22

Gruppendiskussion Was ist der Nachteil, was ist der Vorteil gegenüber einer Stateless Session Bean? Warum sind nicht alle s stateful? 23

Programmierung einer Stateful mit Local Interface Ralf Gitzel ralf_gitzel@hotmail.de 24

Interfaces Jede muss mindestens ein Interface haben Methodennamen dürfen nicht mit der Buchstabenfolge ejb beginnen Ein Interface kann nur eine Annotation haben, d.h. man muss jedes Interface einzeln definieren Local Interface Annotation: @Local 25

Beispiel: Local Interface Datei: IPersonenQuelle.java Anm.: Methoden können beliebig sein 26

Klasse Markierung mit Annotation: Stateless oder Stateful Implementiert Interface(s) Einschränkungen: nicht abstract oder final Methoden dürfen nicht final sein Keine Methoden, deren Name mit ejb beginnt Kann von anderen Klassen erben (auch von anderen Klassen) Kann auch Methoden enthalten, die nicht im Interface definiert sind Muss einen parameterlosen Konstruktor haben 27

Zusätzliche Programmier-Regeln für Stateful s Speicherung des Zustandes in den Instanzvariablen Instanzvariablen müssen serialisierbar sein (wegen möglicher Passivierung) Stateful s müssen mit @Remove explizit zerstört werden, sonst wird Speicherplatz vergeudet! 28

Beispiel: Stateful Klasse Datei: PersonenQuelle.java 29

Web Client Ralf Gitzel ralf_gitzel@hotmail.de 30

Zugriff auf eine Trivial für Stateless s (sog. Dependency Injection, s. letzte Vorlesung Hello World) Für Stateful s benötigen wir einen JNDI-Lookup 31

Wie verwende ich die Stateful im Servlet? StartServlet (erster Aufruf der Applikation!) Andere Servlets 1. JNDI Lookup Referenz auf EJB Session Attribut auslesen Referenz auf EJB 2. Speicherung in Session 32

Wie verwende ich die Stateful im Servlet? StartServlet (erster Aufruf der Applikation!) Andere Servlets 1. JNDI Lookup Referenz auf EJB Session Attribut auslesen Referenz auf EJB 2. Speicherung in Session 33

EJB aus Session verwenden Datei: PersonAnlegenServlt Aufruf über: StartServlet 34

EJB aus Session verwenden Verwendung des Objekts aus der Session wie bisher auch Interessante Details: Wir müssen das Interface als statischen Typ verwenden Wir speichern nicht mehr die Daten sondern das Datenzugriffsobjekt in der Session (PersonenQuelle statt List<Person>) Aber: Wie bekommen wir das Objekt in die Session? 35

Wie verwende ich die Stateful im Servlet? StartServlet (erster Aufruf der Applikation!) Andere Servlets 1. JNDI Lookup Referenz auf EJB Session Attribut auslesen Referenz auf EJB 2. Speicherung in Session 36

EJB Objekt in die Session speichern Bis auf die Objekterzeugung wie gehabt! Datei: StartServlet.java 37

Wie verwende ich die Stateful im Servlet? StartServlet (erster Aufruf der Applikation!) Andere Servlets 1. JNDI Lookup Referenz auf EJB Session Attribut auslesen Referenz auf EJB 2. Speicherung in Session 38

Konzept des JNDI Aufrufs aus einem Servlet (Automatisch) im Context anmelden Bean Informationen konfigurieren Context vom Container holen Eine Referenz auf die Bean aus dem Context holen Für weitere Verwendung in der HttpSession ablegen 39

Konzept des JNDI Aufrufs aus einem Servlet (Automatisch) im Context anmelden Bean Informationen konfigurieren Context vom Container holen Eine Referenz auf die Bean aus dem Context holen Für weitere Verwendung in der HttpSession ablegen 40

EJB Objekt in die Session speichern 1 2 2 1 Datei: StartServlet.java 41

Konzept des JNDI Aufrufs aus einem Servlet (Automatisch) im Context anmelden Bean Informationen konfigurieren Context vom Container holen Eine Referenz auf die Bean aus dem Context holen Für weitere Verwendung in der HttpSession ablegen 42

Context Zugriff Datei: StartServlet.java Anm: Die Befehle könnten auch direkt in doget/post stehen 43

Erläuterung zur vorherigen Folie Context-Objekt wird immer auf diese Weise erzeugt Zugriff auf JNDI ist immer gleich, bis auf: Name des Interfaces (z.b. IPersonenQuelle) Name der (z.b. PersonenQuelle) Wichtig: Exceptions abfangen! 44

Lernziele Ralf Gitzel ralf_gitzel@hotmail.de 45

Lernziele Stateful vs. Stateless verstehen Stateful programmieren können Client mit JNDI Lookup erstellen können 46

Übungsaufgabe Ralf Gitzel ralf_gitzel@hotmail.de 47

Aufgabenstellung Nehmen Sie das Beispiel aus dieser Vorlesung und betrachten Sie es im Detail, indem Sie die möglichen Aufrufe im Code verfolgen Anschließend erweitern Sie es: Schreiben Sie ein Servlet, dass die Liste mit Personen komplett löscht Schreiben Sie ein Servlet, dass automatisch eine Reihe von Beispielpersonen erzeugt 48