Enterprise Computing



Ähnliche Dokumente
Enterprise Computing

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

Softwareentwicklung mit Enterprise JAVA Beans

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013

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

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Enterprise Edition Teil 4. Schnittstellen

Workflow, Business Process Management, 4.Teil

SE2-10-Entwurfsmuster-2 15

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Microsoft Azure Fundamentals MOC 10979

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:

p^db=`oj===pìééçêíáåñçêã~íáçå=

ObjectBridge Java Edition

Isabel Arnold CICS Technical Sales Germany z/os Explorer IBM Corporation

OP-LOG

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Enterprise Edition Teil 3. Enterprise Java Beans

Enterprise Java Beans

Step by Step Webserver unter Windows Server von Christian Bartl

Internetanbindung von Datenbanken

Windows Server 2012 R2 Essentials & Hyper-V

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

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

JDO Java Data Objects

2 Konfiguration von SharePoint

Installation der SAS Foundation Software auf Windows

IBM SPSS Modeler Entity Analytics - Erweiterte Konfiguration

Aufbau eines IT-Servicekataloges am Fallbeispiel einer Schweizer Bank

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

R-BACKUP MANAGER v5.5. Installation

Readme-USB DIGSI V 4.82

WebSphere Application Server Installation

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

EEX Kundeninformation

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. WebSphere Application Server Teil 2. Schnittstellen

Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen

Infrastructure as a Service (IaaS) Solutions for Online Game Service Provision

Lizenzierung von System Center 2012

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

Version/Datum: Dezember-2006

GuiXT und mysap ERP. Regensdorf, April 2004 Dr.Gerhard Rodé, Synactive GmbH


Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Lokale Installation von DotNetNuke 4 ohne IIS

Employment and Salary Verification in the Internet (PA-PA-US)

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

Der Adapter Z250I / Z270I lässt sich auf folgenden Betriebssystemen installieren:

Installation mit Lizenz-Server verbinden

Softwareanforderungen für Microsoft Dynamics CRM Server 2015

RL

Lizenzierung von Windows Server 2012

Wiederherstellen der Beispieldatenbanken zum Buch Microsoft Project 2010

Installation SQL- Server 2012 Single Node

Authentication Policy. Konfigurationsbeispiel ZyXEL ZyWALL USG-Serie. Juni 2010 / HAL

Das neue Volume-Flag S (Scannen erforderlich)

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Windows Azure für Java Architekten. Holger Sirtl Microsoft Deutschland GmbH

ReadMe zur Installation der BRICKware for Windows, Version ReadMe on Installing BRICKware for Windows, Version 6.1.2

Windows 8 Lizenzierung in Szenarien

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

Java 2, Enterprise Edition Einführung und Überblick

4 Installation und Verwaltung

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)

Übung: Verwendung von Java-Threads

Java Enterprise Architekturen Willkommen in der Realität

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Remote Control - LeCroy Oszilloskop WaveSurfer 3000 mit LabVIEW via VICP LAN-Schnittstelle

Einleitung. Funktion. Panzenböck Phillipp. Download Installation. Testen. Konfiguration

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

English. Deutsch. niwis consulting gmbh ( manual NSEPEM Version 1.0

MobiDM-App Handbuch für Windows Mobile

miditech 4merge 4-fach MIDI Merger mit :

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Man liest sich: POP3/IMAP

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

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

Übungen zur Softwaretechnik

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Anleitung zum Prüfen von WebDAV

4D Server v12 64-bit Version BETA VERSION

Systemvoraussetzungen

Werbemittel-Spezifikationen

Der lokale und verteilte Fall

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

SEMINAR Modifikation für die Nutzung des Community Builders

Einführung in Eclipse und Java

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

SAP NetWeaver Gateway. 2013

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

KURZANLEITUNG CLOUD OBJECT STORAGE

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

Anleitung zum Prüfen von WebDAV

Enterprise Application Integration Erfahrungen aus der Praxis

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

AXIGEN Mail Server. s per Smarthost versenden s per Pop3 empfangen. Produkt Version: Dokument Version: 1.2

Transkript:

Enterprise Computing Prof. Dr.-Ing. Wilhelm G. Spruth Teil 12 Enterprise Java Beans

Mainframe PC, Workstation Java 2 Editionen Embedded Devices, Klein- und Kleinstgeräte

J2EE (1) Die Java 2 Enterprise Edition (J2EE) von Sun beinhaltet eine Spezifikation für Verteilte Geschäftsapplikationen. Darin ist neben den Komponenten der Geschäftsapplikation, den Enterprise JavaBeans (EJB), auch die Infrastruktur zu deren Ausführung spezifiziert. Die Infrastruktur beinhaltet Applikationsserver mit sogenannten Containern, in denen die EJB ausgeführt werden. Der Server beziehungsweise der Container interagiert mit den Unternehmenssystem-Ressourcen (z.b. Datenbank) und übernimmt auch die Interaktion mit verteilten Beans in anderen Servern und Maschinen. Weiterhin kontrolliert er die Ausführung von selbst definierten Transaktionen und handhabt Sicherheitseinstellungen. Eigenschaften einer EJBean und deren Anforderungen an die Ablaufumgebung (z.b. Sicherheit, Transaktionssteuerung) werden durch die Attribute eines DeploymentDescriptors (Metadaten) deklarativ beschrieben.

Enterprise HTML Java WEB Bean(s) Browser WEB WEB Servlet Browser Server JSP SQL JDBC (oder andere) WEB Browser WEB Application Server Datenbank Server Dynamischer WEB Seiten Inhalt (3) Im einfachsten Fall enthält das Java Servlet die Anwendungslogik. In komplexeren Fällen lohnt es sich, die Anwendung in Komponentenform zu implementieren. Java Beans implementieren das Java Komponentenmodell. Enterprise Java Beans sind Java Beans mit zusätzlicher Funktionalität, besonders Transaktionseigenschaften (ACID), Persistenz und Sicherheit.

J2EE (2) Die EJB Spezifikation legt fest: Regeln, denen eine EJBean entsprechen muß Funktionalität, die der Container über entsprechende Schnittstellen erbringt Art der Beschreibung einer EJBean für die Installation und für dieverteilung Abbildung auf das CORBA IIOP Protokoll Eine EJB Komponente verfügt über die Möglichkeit entfernter Zugriffe, z.b. auf ein RMI oder CORBA Objekt. Sie kann unter Nutzung von RMI oder RMI/IIOP als Remote Objekt exportiert werden. Wie eine JavaBeans Komponente hat sie Eigenschaften, die durch Introspektion untersucht werden können. Bei der Definition von Zugriffsmethoden verwendet sie JavaBeans Konventionen.

Client Klassen rufen EJB Methoden direct auf, wenn in der gleichen JVM. Wenn nicht, Remote Method Invocation (RMI).

HTML Web Servlets Server JSPs EJBs SQL HTTP Servlet EJB Server Container Container Backend Bevorzugte Struktur eines Web Application Servers Java Application Server Browser Web Application Server Datenbank Server In dieser Konfguratio ist der HTTP Server (Web Server) ist lediglich ein Zusatz und gehört nicht unbedingt zum Lieferumfang eines Web Application Servers. Servlet Container und EJB Container laufen in einer gemeinsamen Java virtuellen Maschine (JVM). Dies reduziert den Kommunikationsaufwand. Servlet Klassen können EJB Klassen direkt aufrufen. Bei getrennten JVMs erfolgt die entsprechende Kommunikation mit Hilfe eines RMI Protokolls (JRMP oder RMI/IIOP). Der Web Application Server enthält weitere Elemente für Administration und Datenbankzugriff.

Typical application flow for Web browser clients using either JDBC (from a servlet) or EJB to access application databases

The typical application flow is as follows: 1. A Web client requests a URL in the browser (input page). 2. The request is routed to the Web server over the Internet. 3. The Web server immediately passes the request to the Web server plug-in. All requests go to the Web server plug-in first. 4. The Web server plug-in examines the URL, verifies the list of host name aliases from which it will accept traffic based on the virtual host information, and chooses a server to handle the request. 5. A stream is created. A stream is a connection to the Web container. It is possible to maintain a connection (stream) over a number of requests. The Web container receives the request and, based on the URL, dispatches it to the proper servlet. 6. If the servlet class is not loaded, the dynamic class loader loads the servlet (servlet init(), then doget()or dopost()). 7. JNDI is used for lookup of either datasources or EJBs required by the servlet. 8. Depending upon whether a datasource is specified or an EJB is requested, the JNDI directs the servlet: To the corresponding database and gets a connection from its connection pool in the case of a data source. To the corresponding EJB container, which then instantiates the EJB when an EJB is requested. 9. If the EJB request involves an SQL transaction, it goes back to the JNDI to look up the datasource. 10.The SQL statement is executed and the retrieved data is sent back either to the servlet or to the EJB. 11.Data beans are created and handed off to JSPs in the case of EJBs. 12.The servlet sends data to JSPs. 13.The JSP generates the HTML that is sent back through the plug-in to the Web server. 14.The Web server sends the output page (output HTML) to the browser. F\:redbooksWebSp\\WebSp13,pdf

Enterprise Java Beans (EJB) EJB EJB EJB EJB EJB EJB EJB EJB Container (andere Bezeichnungen:Laufzeitumgebung, Framework, Object Transaction Monitor - OTM) EJB Dienste Enterprise Java Beans sind Java Beans mit erweiterter Funktionalität. Diese wird von dem EJB Container zur Verfügung gestellt und enthält unter anderem JTS Java Transaction Service JNDI Java Naming directory Interface JMS Java Messaging Servics JDBC Java Data Base Connectivity JMAPI Java Management API JIDL Java Interface Definition Language JTS JIDL JNDI JMS JMAPI JDBC

Enterprise Java Beans (EJB) Enterprise Java Beans sind Java Beans mit erweiterter Funktionalität. Dies sind unter anderem: JTS, Transaction Service, an API for invoking transaction services. JNDI, Java Naming and Directory Interface, an API for accessing naming and directory services. JMS, Java Message Service, an API for invoking asynchronous message delivery services. JDBC, Java Database Connectivity API, accesses data in existing databases through a common interface. JMAPI, Java Management API, which defines access to a set of services for managing Java resources. JIDL, Java interface definition language, an interface to the CORBA set of services for distributed computing.

E M S M E E S S Session Bean (transientes Objekt) M Message-driven Bean E Entity Bean (persistentes Objekt) S EJB Container (andere Bezeichnungen:Laufzeitumgebung, Framework, Object Transaction Monitor - OTM) EJB Server (Web Application Server) Drei verschiedene Arten von EJBs Entity Beans Session Beans Message Beans EJBs sind Komponenten, die eine objektorientierte Sicht auf persistent gespeicherte Entitäten, also eindeutig identifizierbare und über Attribute beschreibare Informationseinheiten, repräsentieren. Diese Entitäten sind beispielsweise in einer Datenbank gespeichert. Handelt es sich dabei um eine relationale Datenbank, so korrespondieren Entity Beans z.b. mit einer Zeile der entsprechenden Datenbanktabelle. Entity Beans modellieren Geschäftskonzepte, bei-spielsweise ein Konto. EJBs sind Komponenten, die auf dem Server ablaufende Geschäftslogik implementieren. Sie modellieren Geschäftsprozesse, wie z.b. eine Überweisung.

Persistenz Die permanente Speicherung eines Objektes auf einem Plattenspeicher wird als Persistenz bezeichnet. Moderne RAID Technologien und Backup Strategien stellen sicher, dass Daten auch Fehlerfälle intakt überstehen. Konzeptuell können Objekte in einer Objektdatenbank (z.b. POET oder Jasmine) gespeichert werden.in der Praxis werden SQL (oder IMS, ADABAS oder VSAM) Daten als Objekte gekapselt; der Zugriff erfolgt z.b. über eine JDBC (Java Data Base Connectivity), SQLJ oder DB2Connect Schnittstelle. Persistente Objekte existieren permanent außerhalb des Gültigkeitsbereichs des Programms, das sie erzeugt hat. Persistenz wird implementiert, indem der Status (die Attribute) eines Objekts zwischen den einzelnen Programmausführungen gespeichert wird. Wenn das Objekt erneut benötigt wird, wird es aus seiner gespeicherten Form wieder hergestellt. Der Herstellungsprozeß erzeugt ein neues Objekt, das mit dem ursprünglichen identisch ist. Bei der Persistenz werden den gespeicherten Daten alle Objektattribute (etwa Klassenname, Feldname und Zugriffs-Modifier) zugeordnet, so daß verhindert wird, daß die Daten versehentlich mit einem falschen Objekttyp abgelegt werden.

Stateless und stateful Session Beans Es existieren zwei Arten von Session Beans: Stateless und Stateful. Session Beans speichern keine Daten persistent z.b. auf einem Plattenspeicher. Entity Beans speichern Daten persistent. Diese können sich entweder in einer Objektorientierten Datenbank oder einer relationalen Datenbank befinden.

Stateless Session Beans Stateless Session Beans behalten keine Zustandsinformation von einem Aufruf zum nächsten. Man kann sie wie Funktionsaufrufe verstehen, die allein mit den übergebenen Parametern arbeiten. Zum Beispiel gibt man einen Wert und eine Währung an und erhält den Betrag in Euro. Sie haben keine Persistenz in der Datenbank und repräsentieren deshalb auch keine Datenbankdaten. Vielmehr stellen sie Geschäftsprozesse oder Abläufe dar, die auf Initiative eines Clients hin ausgeführt werden, der ihre Funktionen benutzt. Jeder Methodenaufruf ist hierbei unabhängig von anderen und vorangegangenen Methodenaufrufen. Aufgrund ihrer Zustandslosigkeit sind sie für den EJB Container relativ leicht zu handhaben und verbrauchen nicht viele Ressourcen.

Stateful Session Beans Stateful Session Beans behalten einen Zustand von Aufruf zu Aufruf. Sie beziehen sich immer auf einen Clienten. Verschiedene Clients "sharen" niemals eine Session Bean. Damit der Container den State einer Session Bean besser managen kann, wird ihm im Deployment Deskriptor der Bean mitgeteilt, ob es sich um eine stateless oder stateful Session Bean handelt. Bei einem Bestellvorgang werden, die zuvor selektieren Produkte in der Bestellung belassen. Beim Hinzufügen eines Artikels ein einen Warenkorb sind die vorher hinzugefügten weiterhin vorhanden. Session Beans werden entweder durch ein Time-out oder durch ein explizites Entfernen durch den Client zerstört. Bein Überschreiten eines bestimmten Zeitwerts löscht der Container die Session Bean. Ein Client muss sich darauf einstellen, das sein entferntes Interface nicht mehr gültig ist, weil der Container die Session Bean nach einer längeren Zeit der Inaktivität entfernt hat. Ein Client kann aber auch durch Aufrufen von remove() auf das entfernte EJBObject, die Session Bean entfernen. In jedem Fall wird die ejbremove() der Session Bean vom Container vor der Zerstörung aufgerufen.

Entity Beans Entity Beans repräsentieren für den Client eine objektorientierte Sicht auf einen Datensatz,.B. eine Zeile in einer Datenbank. Sie erlauben im Gegensatz zu Session Beans auch Mehrbenutzerbetrieb, das heißt, dass auf eine Instanz eines Entity Beans gleichzeitig mehrere Benutzer zugreifen können. Der Container, in den Entity Beans während der gesamten Lebensdauer eingebettet sind, stellt dazu entsprechende Mechanismen bereit, um z.b. Sicherheit, Transaktionskonsistenz und Parallelität sicherzustellen. Für den Klienten ist der Container transparent, so dass keine zusätzlichen Schnittstellen existieren, die eine Manipulation des Containers ermöglichen würden. Da Entity Beans nicht an einen einzelnen Client gebunden sind, endet ihre Lebensdauer nicht nach dem Beenden einer Client - Verbindung. Im Gegensatz zu Session Beans können bzw. müssen sie sogar nach einem Systemausfall automatisch wiederhergestellt werden, da in der Regel ihre Existenz an das Vorhandensein der mit ihnen verbundenen Daten gebunden ist. Das heißt, die Erstellung einer Instanz eines Entity Beans erzeugt z.b. automatisch eine neue Zeile in einer Datenbank und fügt die bei der Erstellung mit übergebenen Daten des erstellten Datensatzes der Datenbank hinzu. Wird die Instanz entfernt, wird automatisch der mit dieser Instanz verbundene Datensatz aus der Datenbank gelöscht. Je nachdem, zu welchem Zweck Entity Beans entwickelt worden sind, unterscheidet man auch bei ihnen zwischen zwei verschiedenen Arten: Container managed Persistence (CMP) Entity EJB Bean managed Persistence (BMP) Entity EJB

Container und Bean managed Persistence Bei Container managed Persistence EJBs wird die Persistenz der repräsentierten Daten von dem Container, in den die EJB eingebettet ist, garantiert. Der Entwickler braucht sich bei der Erstellung dieser Art von Entity Beans also nicht darum zu kümmern, wie die Daten des Entity Beans gesichert werden. Der Container kann z.b. zum lesenden und schreibenden Zugriff auf eine relationale Datenbank eigenständig SQL Code generieren und ausführen. Der Entwickler muss somit nur festlegen, welche Daten er von den anzusprechenden Datenbanken im Entity Bean repräsentieren möchte und verknüpft diese dann mit der Bean Klasse. Bei Bean managed Persistence EJBs ist es Aufgabe des Entwicklers, sich um die Art und Weise zu kümmern, wie die Daten des Entity Beans gesichert werden. in der Praxis können aber Situationen auftauchen, z.b. bei einer Datenbankanfrage mittels Join, in denen man mit BMP EJBs durch handoptimierte SQL-Statements eventuell Leistungsverbesserungen erzielen kann. Joins über mehrere Datenbanken mit mehreren Tabellen sind mit CMP EJBs gar nicht oder nur schwer realisierbar, weswegen man auch hier meist BMP EJBs verwendet. Letztendlich kann der Entwickler bei BMP Entity Beans auch das Objektmodell freier gestalten, er ist hier nicht so sehr an das Datenbankschema gebunden wie bei CMP Entity Beans.

Container Managed Persistence (CMP) Das Ziel ist, dass der Entwickler das Datenbankschema nicht kennen muss, sondern dass durch CMP ein Mapping zwischen dem abstrakten und dem physischen Schema vollzogen wird. Die Steuerung der Persistenz soll durch den Server erfolgen. Vom Beanentwickler müssen lediglich die Objekteigenschaften angegeben werden, die gesichert werden sollen. Um Entity Beans persistent zu machen, sieht dieses Konzept die Deklaration sämtlicher Attribute im Deployment Deskriptor vor. Weiterhin muss das objektrelationale Mapping, also die Abbildung zwischen den Attributen und den Datenbankstrukturen, im Deployment Deskriptor angegeben werden. Der Server ist somit in der Lage, selbständig die benötigte Datenbanktabelle zu erzeugen bzw. Eintragungen innerhalb dieser vorzunehmen. Auch bei Änderungen von Attributen einer Entity Bean werden die Daten vom Server automatisch in der Tabelle gespeichert. Bei einer Suchanfrage kommt ebenfalls der Server zum Einsatz. Hierzu verfügt jeder Server über ein Generatorwerkzeug, welches in der Lage ist, aus dem Deployment Deskriptor Code zu erzeugen, der die genannte Funktionalität bietet. Der Beanentwickler muss keinen Programmcode verfassen, die mit dem Datenbankzugriff zusammenhängt. Dies reduziert den Entwicklungsaufwand beträchtlich. Außerdem ergibt sich aus der Abhängigkeit von CMP Entity Beans von einem Generator ein weiterer Vorteil. Man ist unabhängig von der darunter liegenden Persistenzschicht, was zu einer sehr hohen Portierbarkeit führt. Eine verbesserte Wartbarkeit ist dadurch gegeben, dass Änderungen am Namensschema bzw. an den Attributen einer Bean konsistent durch den Generator berücksichtigt werden. Auch die Fehleranfälligkeit ist vergleichsweise gering, woraus folgt, dass der generierte Code nicht so intensiv getestet werden muss, wie selbst geschriebener Quelltext.

Bean managed Persistence EJB Bei Bean managed Persistence EJBs ist es Aufgabe des Entwicklers, sich um die Art und Weise zu kümmern, wie die Daten des Entity Beans gesichert werden. Dies mag auf den ersten Blick ein Nachteil sein, in der Praxis können aber Situationen auftauchen, z.b. bei einer Datenbankanfrage mittels Join, in denen man mit BMP EJBs durch handoptimierte SQL-Statements eventuell Leistungsverbesserungen erzielen kann. Joins über mehrere Datenbanken mit mehreren Tabellen sind mit CMP EJBs gar nicht oder nur schwer realisierbar, weswegen man auch hier meist BMP EJBs verwendet. Letztendlich kann der Entwickler bei BMP Entity Beans auch das Objektmodell freier gestalten, er ist hier nicht so sehr an das Datenbankschema gebunden wie bei CMP Entity Beans.

EJB Client ruft Methoden der Session Bean auf Entity Bean Session Fassade EJB Architektur EJB Client Session Bean Entity Bean Aufgabenteilung: Session Beans enthalten die Business Logik Entity Bean Entity Beans speichern Daten Session Beans: führen Geschäftsprozesse (Business Logik) aus manipulieren persistente Objekte (Daten), die als Entity Beans modelliert sind Probleme mit dem Session Fassade EJB Architektur Modell: Entity Beans sind verteilte Objekte, die von beliebigen Klienten aufgerufen werden können Entity Beans sind transaktionsfähig Beides ist bei einer Session Fassade unnötiger Overhead. Lösungsansatz : Java Data Objects (JDO) an Stelle der Entity Beans. JDOs sind reguläre Java Klassen, die über einen Persistence Encapsulation Mechanismus verfügen. Weitere Alternative: Konnektoren sind Java Klassen, die einen Zugriff auf CICS, Oracle, DB2 ermöglichen.

Message Based Queuing (MBQ) Message oriented Middleware (MOM) Queues are persistent. 1 2 3 4 Solaris Queue Queue z/os DB2 A B Eine Nachricht wird zunächst an eine lokale (persistente) Queue, von dort an eine entfernte Queue, und von dort an einen Empfänger (hier DB2) geleitet. Die Übertragung erfolgt transaktionssicher (ACID Bedingungen werden eingehalten). Schritte 1-3 : Wenn erfolgreich, Antwort senden, sonst retransmit Step 4: Wenn z/os nach DB2 versagt: roll back nach Queue B, dann recover. MOM existiert unabhängig von Java. IBM MQSeries ist Marktführer. Für praktisch alle Betriebssysteme verfügbar: AIX, DG/UX, HP-UX, Windows, OS/390, OS/400, Psion Pervasive SOD, Sequent, Sinix, Solaris, Tandem, TPF, TrueUnix, VMS/VAX.

JMS Message Message Driven Bean Der J2EE Java Message Service (JMS) ist eine Java-spezifische MOM; Er ermöglicht eine Nachrichtenübermittlung durch asynchrone Methodenaufrufe Eine Message Driven Bean (MDB) ist eine spezielle Art einer Enterprise Java Bean (EJB). Eine Message Driven Bean ist ein potentieller Empfänger eines derartigen asynchronen Methodenaufrufes. Dieser Methodenaufruf kann von einer beliebigen anderen Java Klasse ausgehen. Die sendende EJB wartet nicht auf eine Antwort. Eine Message-driven Bean ist ein Bestandteil der Enterprise Java Bean 2.0 Specification. Eine MDB ist ein Java Message Service (JMS) Message Consumer, auf den ein Client nicht direkt zugreifen kann.

JMS Server Message Driven Bean The most visible difference between message-driven beans and session and entity beans is that clients do not access message-driven beans through interfaces. MDBs "listen" on a specific JMS destination, which usually is a queue. When a message arrives on the destination, that message is delivered to the MDB, which causes the bean's onmessage() method to be invoked. The onmessage() method can be viewed as the only interface to an MDB.

Components of the JMS Server Message listener service An MDB (message-driven bean ) knows that a message has arrived at a specific destination through the use of an MDB listener, which in turn is part of the message listener service (also called a JMS server) provided by a Java Web Application Server (e.g. WebSphere). The message listener service manages an MDB's runtime configuration, which includes listener ports and listener settings, and also manages the MDB listener state. A listener manager controls and monitors one or more JMS listeners, each of which monitors a JMS destination. Listener ports A listener port is a component of the Web Application Server that monitors a JMS destination, looks for messages, and is managed by the message listener service. MDBs are bound to a specific listener port. When a message arrives at the destination that the listener port is monitoring, the message is taken off the destination (e.g. a receiving queue) by the message listener service and delivered to the appropriate MDB (message-driven bean).

Message Driven Bean Alle Instanzen eines MDB Typs sind gleich, da sie nicht direkt für den Client sichtbar sind und keine Zustände annehmen. Daraus resultiert die Möglichkeit für den Container, Pools aus MDB Instanzen zu bilden, um Skalierbarkeit zu erzeugen.

Message Driven Beans (MDB) Eine Message Driven Bean ist eine zustandslose Komponente, die von javax.jms.message gesteuert wird. Wie die Session und Entity Beans sind auch MDB serverseitig und transaktionssicher. Eine MDB wird vom EJB Container, in dem sie sich befindet, immer dann aufgerufen, wenn dieser eine Nachricht aus einer JMS Queue (oder einem JMS Topic) erhalten hat. Damit erfüllt eine MDB die Aufgabe eines Message Listeners. Es ist für in einem Applicationserver befindliche MDB von zweitrangiger Bedeutung, wer Absender einer Nachricht ist. Das kann ein Java Client, eine Enterprise Bean, eine JSP Komponente oder aber auch eine Anwendung, die selbst nicht auf J2EE aufbaut, sein. Der allgemeine Client sendet die Nachricht zum EJB Server, ohne sich der einzelnen vorhandenen MDB im Container bewusst zu sein. Der Grund für die mangelnde Sicht auf einzelne MDB ist das Fehlen von Home und Remote Interfaces bei diesem Beantyp. Eine MDB ist vom Typ her eine zustandslose Session Bean. Das bedeutet, dass man es mit relativ kurzlebigen Instanzen der MDB zu tun hat, die sich keinen Client merken können. Durch die Einführung der MDB wird der EJB Container zu einem Listener für asynchrone Aufrufe und ruft direkt (ohne Interfaces) die MDB auf, die sich dann wie eine zustandslose Session Bean verhält.

EJB Schnittstellen Die EJB Object Schnittstelle (remote, lokal) empfängt alle Methodenaufrufe. Sie implementiert die Transaktions- Zustandsverwaltungs, Persistenz- und Sicherheitsdienste für die Bean je nach den Angaben des Deployment Descriptors. Eine EJB Object Schnittstelle ist enteder eine Remote, oder eine Local Schnittstelle. EJB Object Deployment Methoden Descriptor Enterprise Bean Klient find EJB Home create remove Environment EJB Container EJB Home dient der Identifizierung des Beans. Auf die EJB Home Schnittstelle kann mit JNDI zugegriffen werden. Sie implementiert alle Life-Cycle Dienste für die Bean.

EJB Object Schnittstelle The Enterprise Java Bean (EJB) 2.0 specification contains both a remote client view and a (new) local client view. Thus, session and entity beans can have a local home interface, and a local component interface, either with or instead of a remote home interface and a remote component interface (the latter is sometimes called "component interface", omitting the word "remote"). Local and remote interfaces. Which one to choose? Generally, your Enterprise Java Bean will need a remote client view in cases when you plan to use the bean in distributed environments. Specifically, these are the cases when the client that will be working with it will be in a different Java Virtual Machine (JVM). In the case of a remote client view, calling any method from the remote home interface and/or remote component interface will be handled via remote method invocation (RMI). An EJB can use local client view only if it is really guaranteed that other enterprise beans or clients will only address the bean within a single JVM. If this is the case, such access will be carried out with direct method calls, instead of RMI.

Installing (Deploying) a newly developed Application within a CICS Server CICS is a production server. New applications are developed outside the CICS Server. If you want to develop a new CICS application, you first develop it on a development Server (an IDE, Integrated Development Environment, for example Eclipse), then test it on a separate test system, and the install (deploy) it on the CICS production Server. When you install a new application on a CICS production Server, you first define it to CICS, using one or several define commands.. This assures that CICS can find the new application whenever it is called. Subsequently you install it, which involves copying the new code (and related information) into the CICS address space.

Installing (Deploying) a newly developed Application within a Web Application Server Just like CICS, a Web Application Server is a production server. New applications are developed outside the Web Application Server. The equivalent of the CICS define command is the Java EJB Deployment Descriptor. The equivalent of the CICS install command is called deployment.

Emterprise Bean remote Interface Deployment Descriptor Home Interface Implementation Beispiele für Parameter: EJB *.jar File EJB Container Datenbank Name Verbindung zu Legacy Anwendungen JNDI Namensraum des Containers Transaktions-Semantik Umgebungseigenschaften Deployment Descriptor Der Deployment Descriptor legt die Laufzeit Parameter einer EJB fest Parameter können statisch zur Assembly Zeit oder dynamisch zur Laufzeit festgelegt werden Der Deployment Descriptor wird typischerweise durch den EJB Entwickler angelegt, kann aber durch einen Administrator mit Hilfe eines Tools abgeändert werden

Deployment Descriptor Der Deployment Deskriptor ist eine Datei im XML Format, die eine oder mehrere Beans, deren Zusammenwirken und die Art, wie der EJB Container sie zur Laufzeit behandeln soll, beschreibt. Er enthält hauptsächlich deklarative Informationen, welche nicht im Bean Code zu finden sind. Dies sind vor allem Informationen über die Struktur der Bean und ihrer Abhängigkeiten zu anderen Beans oder Ressourcen wie z. B. einer Datenbankverbindung. Außerdem können im Deployment Deskriptor Umgebungsvariablen gesetzt werden, die von der Bean ausgelesen werden können und somit ihr Verhalten beeinflussen. Dies führt zu einer höheren Flexibilität, da dieselbe Bean in verschiedenen Umgebungen eingesetzt werden kann und nur der Deployment Deskriptor angepasst werden muss.

Werkzeuge: Erstellen, Test, Deploy, Manage JTS JDBC JNDI IIOP Enterprise Java Bean Container Session Beans, Entity Beans EJB Container Interface Servlet Container Native HTTP Server plug-in HTTP Server Apache, IIS, Netscape, Lotus Aufgabenaufteilung Der Web Server (http Server) betreut statische HTML Seiten, CGI und proprietäre Plug-ins Der Servlet Container ist die Laufzeitumgebung für Java Servlet Anforderungen und dynamische Seitenanforderungen (JSP) Die Servlets und JSPsbehandeln HTTP Anforderungen, verwaltet HTTP Sessions mit dem Klienten, erzeugt Presentation Logic via HTML, bewältigt nichttransaktionale (Business) Anwendungen Session und Entity Beans bewältigen (Business Logic) Anwendungen mit transaktionaler Integrität Struktur eines Web Application Servers

Web Server HTTP Server The Apache HTTP Server is a web server notable for playing a key role in the initial growth of the World Wide Web and in 2009 became the first web server to surpass the 100 million web site milestone. Apache was the first viable alternative to the Netscape Communications Corporation web server, currently known as Sun Java System Web Server. Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation. Internet Information Services (IIS) - formerly called Internet Information Server - is a set of Internet-based services for servers created by Microsoft for use with Microsoft Windows. It is the world's second most popular web server in terms of overall websites behind the industry leader Apache HTTP Server. IBM HTTP Server (IHS) is a web server based on the Apache Software Foundation's Apache HTTP Server that runs on AIX, HP-UX, Linux, Solaris, Windows NT, and z/os. It is available for download and use free of charge. The HTTP server is also included in the IBM WebSphere Application Server distribution packages. The Lotus Domino server provides enterprise-grade e-mail, collaboration capabilities, and a custom application platform. Its core services include: Email server (supporting Lotus Notes, POP3, IMAP, web browser and Outlook clients and SMTP support) Applications server (the Lotus Notes client provides the runtime) Web server (Lotus Notes data or other surfaced via a web browser) Database server (Notes Storage Facility) Directory server (LDAP) Die Namen Web Server und HTTP Server hatten ursprünglich die gleiche Bedeutung. Heute sind die Begriffe Web Server und http Server zweideutig, weil man teilweise hierunter einen HTTP Server mit integriertem Servlet Container versteht. Auch der Servlet Container wird häufig als Web Container bezeichnet.

Plug-in code The WebSphere HTTP Server plug-in is code that runs inside various Web servers: IBM HTTP Server, Apache, IIS, others. Requests are passed over to the plug-in, where they are handled based on a configuration file. The plug-in is code supplied with WebSphere. As workload comes into the HTTP Server, directives in the HTTP Server's configuration file (httpd.conf) are used to make a decision: is the incoming work request something the HTTP Server handles, or is it something that is to be passed over the plug-in itself. Once inside the plug-in, the logic that acts upon the request is determined by the plug-in's configuration file, not the HTTP Server's. That configuration file is by default called the plugin-cfg.xml file. Information on which of the supported application servers the request is to go to, is defined in this file. This file is something that is created by the WebSphere Application Server and mostly doesn't need modifying. In general, plug-ins provide functionality extensions for HTTP Server. There are many different plug-ins that can be configured to assist in customization of your Web environment. Another popular plug-in is the Lightweight Directory Access Protocol Server (LDAP) used for security authentication.

HTTP Server plugin This plugin is usually a.dll or.so file It is included in the webserver's configuration file as a plugin (Service statement on z/os) It usually has it's own configuration, located in a file (or some other location). It runs just like an API application in the HTTP server. Performs some very specific functions for the Application Server, as an example 1. Load balancing across multiple App Servers, 2. Enforcing Server affinity, 3. Routing requests based on an URL. The z/os HTTP Server has many facilities, which extend the functions of a basic Web server application server (WAS). One of these functions is the Plug-in interface of the z/os HTTP Server. This allows one of several products to interface with HTTP Server. Here, for example, are some ways in which HTTP Server can pass control to WebSphere; WebSphere plug-in, same address space Web container (Servlet Container) inside HTTP Server, separate EJB container Separate J2EE server with both Web container and EJB container