J2EE
Java2 Enterprise Edition
René NoackMai 2003
2
J2EE – Java2 Enterprise Edition
Überblick:
1. Einordnung J2EE
2. J2EE Architektur
3. EJB (Enterprise JavaBeans)
4. JNDI (Java Naming and Directory Interface)
3
J2EE – Java2 Enterprise EditionEinordnung J2EE
J2SE Java2 Standard Edition• Kern der Java Plattform
(Applets, implementierte Java-Anwendungen)
J2ME Java2 Micro Edition• Zusatzfunktionen für eingebettete Systeme• Reduktion von Sprach- & Funktionsumfang von Java
J2EE Java2 Enterprise Edition• Funktionen von J2SE• + Schnittstellen (APIs) für den Einsatz
in Mehrschichtenarchitekturenund für Serveranwendungen
4
J2EE – Java2 Enterprise EditionEinordnung J2EE
Entwicklung durch Herstellerkonsortium(IBM, Oracle, BEA,…)
Weiterentwicklung durch Java Community Process (JCP)
Implementierungen IBM WebSphere BEA WebLogic Sun One
(Sun besitzt Referenzimplementierung)
5
J2EE – Java2 Enterprise EditionEinordnung J2EE
Eigenschaften von J2EE:
Komponenten – orientiert
Netzwerk – orientiert
Web – Browser ist primäres User – Interface
RMI, für die Realisierung entfernter Methodenaufrufe verteilte Anwendungen möglich
Programmiersprache Java
6
J2EE – Java2 Enterprise EditionEinordnung J2EE
weitere Eigenschaften von J2EE:
Plattformunabhängigkeit (durch Java)
Herstellerunabhängigkeit (Java – Spezifikation)
Integration bestehender Konzepte(Servlets, JavaServerPages (JSP), EJB, …)
besser handhabbar als CORBA (geringere Komplexität)
3 – Tier – Architektur
7
3 – Tier – Architektur
Client – Schicht
Anwendungs-
schicht
(Middleware)
Datenablage-
schicht
J2EE – Java2 Enterprise EditionJ2EE Architektur
Client Client Client
Enterprise JavaBeansMiddleware – Komponenten
Datenablage Datenablage
8
J2EE Server
J2EE – Java2 Enterprise EditionJ2EE Architektur
Client – Container Web – Container EJB - Container
J2EE – Komponenten
JSP - Datei
ServletEnterprise
Bean
EnterpriseBean
EnterpriseBean
9
J2EE – Java2 Enterprise EditionJ2EE Architektur
Beispiel für die Kommunikation zwischen den Containern:
Browser (Client - Container) greift auf Servlet bzw. JavaServerPages (JSP) im Web – Container zu
Servlets bzw. JSP besitzen Geschäftslogik Für die Umsetzung sind u.U. Rückgriffe auf EJB – Methoden
notwendig, die sich im EJB – Container befinden. Die Rückgabewerte der EJB – Methoden erhält der Web –
Container.
Web – Container leitet Ergebnis zurück zum Browser (Client – Container)
10
J2EE – Java2 Enterprise EditionJ2EE Architektur
Client – Container
beinhaltet Java Applet, Java Applikationen, HTML – Browser sowie die Kombination des Genannten
greifen Java – basierende Client – Applikationen auf Enterprise JavaBeans zu, so existiert beim Client eine EJB – Container spezifische Bibliothek
Bibliothek enthält Details zur Kommunikation mit dem Server
11
J2EE – Java2 Enterprise EditionJ2EE Architektur
Web – Container
Laufzeitumgebung für Servlets bzw. JSP dynamische Webinhalte möglich Anforderung dafür: Unterstützung HTTP (bei Bedarf HTTPS)
Transport von Requests und Antworten
Verwaltung der Servlet – Instanzen (Lebenszyklen)
12
J2EE – Java2 Enterprise EditionJ2EE Architektur
Web – Container
Servlets: Webkomponenten zur Erzeugung dynamischer
Dokumente auf dem Server (meist HTML)
Verwaltung erfolgt durch Server Requests werden formatiert und zu Servlet geleitet Ausgabe des Servlets wird gelesen und zum Aufrufer
gesendet
Servlet schreibt Ausgabe in übergebenes Objekt ungeeignet für die Erzeugung komplexer Seiten
13
J2EE – Java2 Enterprise EditionJ2EE Architektur
Web – Container
JavaServerPages (JSP): Erweiterung des Servlet – Konzeptes
Trennung von Struktur & Layout durch JSP – Tags
Server erkennt JSPs an URL
Ersetzung der JSP – Tags vor Versenden zum Client
intern: Umwandlung JSP zu Servlet
14
J2EE – Java2 Enterprise EditionJ2EE Architektur
EJB – ContainerAufgaben:
Laufzeitumgebung für EJBs
Dienstanbieter (Transaktions- / Sicherheitsdienst) Dienste durch aufrufenden Client und EJBs nutzbar
Delegation von Anfragen an EJB / Antworten einer EJB an den Client
Bean kommuniziert mit dem Container, nicht mit dem Server
15
J2EE – Java2 Enterprise EditionJ2EE Architektur
EJB – Container
Aufgaben: Transparenz für den Benutzer sichern
Verwaltung der Lebenszyklen der EJBs
Gewährleistung der persistenten Datenhaltung
Koordination von Transaktionen
Bereitstellung von Sicherheitsmechanismen
16
J2EE – Java2 Enterprise EditionJ2EE Architektur
EJB – Container
Leistung:
Namens- & Verzeichnisdienst
Thread-, Prozessmanagement, damit Nebenläufigkeit erreicht wird (betrifft: Dienste, EJB, EJB - Container)
Zugriff auf Zusatzressourcen (Bsp.: Datenbanken)
Clustering und Lastverteilung
17
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Enterprise Java Beans
JavaBeans: hauptsächlich visuelle Konstruktion
wiederverwendbarer Komponenten
Enterprise JavaBeans: verteilte, transaktionsgesteuerte, sichere, skalierbare,
portable, serverseitige Java – Applikation realisierbar
durch EJB – Container transparente Dienstnutzung
18
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Anforderungen an moderne Anwendungen
logisch und räumlich verteilbar
Handhabung umfangreicher Datenmengen(nebenläufiger Zugriff)
Datenmanipulation innerhalb von Transaktionen
Sicherheit bzw. Zugriffsschutz
19
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Test, der Eignung von EJBs
Muss Architektur auf weltweit anerkannten Standards basieren?
Muss Anwendung auf unterschiedlichste Datenquellen zugreifen können und Transaktionen unterstützen?
Soll nebenläufiger Zugriff möglich sein?
Ist Zugriffsschutz erforderlich?
20
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
EJB - Eigenschaften:
serverseitige Komponenten
ermöglichen Logik-Implementierung einer Anwendung
Ablauf in spezieller Laufzeit – Umgebung
Dienste des EJB – Containers explizit oder implizit nutzbar (Persistenz, Sicherheit, …)
21
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
EJB - Eigenschaften:
EJB – Instanzen werden zur Laufzeit vom EJB – Container erzeugt und verwaltet
EJB anpassbar durch Modifikation der Umgebungsvariablen während der Laufzeit
Zugriff durch Client wird durch EJB – Container vermittelt
Bean Entwickler legt Sicht auf EJB fest
22
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Local Interface vs. Remote Interface
viele Anwendungen erfordern Komm. zwischen EJBs oft im gleichen Adressraum
Version 1.1 Remote – Aufruf trotz eigenem Adressraum RMI – Overhead überflüssig
Seit Spezifikation 2.0 Kommunikation des Clients über Local – Interface möglich
23
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Local Interface vs. Remote Interface
Local Interface Remote Interface
- - ortstransparent
- Call by Reference - Call by Value
- ohne RMI - RMI
- nur bei gleichem Adressraum - immer verwendbar
- verminderter Overhead -
- bessere Performanz für -
lokale Aufrufe
24
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Arten von Enterprise JavaBeans
ContainerManaged
Persistence
BeanManaged
Persistence
EnterpriseJavaBean
SessionBean
EntityBean
MessageDrivenBean
Stateless Stateful
25
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Session Bean:
wird für einen Client exklusiv ausgeführt
kann innerhalb einer Transaktion ausgeführt werden
repräsentiert nicht direkt Geschäftsdaten, aber kann diese ändern, z.B. mittels DB-Zugriffen über JDBC
Lebensdauer entspricht Sitzungsdauer
26
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Stateless – Session Bean:
Methodenaufrufe entkoppelt
zu verarbeitende Daten müssen explizit übergeben werden
Stateless – Session Beans gleichen Typs besitzen gleiche Identität
27
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Stateful – Session Bean:
Zugriff auf Daten eines vorangegangenen Methodenaufrufs möglich
zu verarbeitende Daten können explizit übergeben werden
Stateful – Session Beans gleichen Typs besitzen unterschiedliche Identitäten
28
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Entity Bean:
stellt Daten einer Datenbasis als Objekt dar
kann gleichzeitig durch mehrere Clients genutzt werden
kann innerhalb von Transaktionen ausgeführt werden
Lebensdauer ist an die Bestandsdauer der Daten in der Datenbank geknüpft
29
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Entity Bean:
Container Managed Persistence:
EJB – Container übernimmt die Sicherung eines Zustandes einer Entity - Bean
Bean Managed Persistence:
Bean – Entwickler implementiert das Management der Persistenzierung selbst
30
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Message Driven Bean:
zustandslos, asynchron, gedächtnislos
angesprochen durch Nachrichten
Nachrichtenzustellung erfolgt, sobald EJB – Container Nachricht aus JMS – Warteschlange od. Topic erhält
Lebensdauer: solange onMessage() ausgeführt wird
31
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Persistenz:
EJB – Container ermöglicht DB – Zugriff über JNDI Beans können selbst für Persistenz sorgen
automatische Persistenz durch EJB – Container Enterprise Bean unabhängig vom vorh. Persistenzmedium transparente Persistenz
Entwicklung von EJB – Containern mit Zugriff auf andere Anwendungssysteme
32
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Transaktionen:
Spezifikation unterstützt flache Transaktionen
Nutzung durch direkte Kommunikation mit Dienst über Java Transaction API (JTA)
Deklarative Transaktionen Bei Installation von Entity Bean werden ausgewählte
Methoden Transaktionen zugeordnet EJB – Container sorgt für Einhaltung Bean unangetastet
33
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Messaging:
seit Version 2.0 Einbindung von Messaging – Dienst über JMS API vorgeschrieben
durch EJB asynchron, parallel
Enterprise Beans und Clients können Nachrichten versenden
jeder Client kann Nachrichten asynchron senden und / oder empfangen (Sender + Empfänger anonym)
34
J2EE – Java2 Enterprise EditionEJB (Enterprise JavaBeans)
Sicherheit:
bestimmt durch Systemadmin. und Bean – Installateur
Umsetzung durch EJB – Container
Benutzerrollen / Benutzerrechte definierbar
zur Laufzeit Test Rolle / Rechte durch EJB – Container
auch Authentifizierung und sichere Komm. möglich
35
J2EE – Java2 Enterprise EditionJNDI (Java Naming and Directory Interface)
JAVA Naming and Directory Interface
Mechanismus zum Auffinden von J2EE Komponentenbzw. Schnittstelle zum Ansprechen von Namens- &Verzeichnisdiensten
Namensdienst: Binding
Referenzen auf entfernte Objekte bilden Namen wählen an definiertem Platz hinterlegen
Lookup Wiederfinden von (an Namensdienst) gebundenen Objekten
36
J2EE – Java2 Enterprise EditionJNDI (Java Naming and Directory Interface)
JAVA Naming and Directory Interface
Verzeichnisdienst:
leistungsfähiger als Namensdienst
verwaltet Objekte & Ressourcen (Drucker, Dateien,..) mit Hierarchie – Strukturen
kann Zusatzinformationen zu Remote – Objekt bereitstellen
37
J2EE – Java2 Enterprise EditionQuellenverzeichnis
Quellen der Literatur:
[DP02] Denninger, Stefan; Peters, Ingo:Enterprise JabaBeans 2.0.Addison – Wesley, 2., überarbeitete Auflage, 2002.
[SS02] Schäffer, Stefan; Schilder, Walter:Enterprise Java mit IBM WebSphere.Addison – Wesley, 2002.
Quellen des Internet:
http://www.sun.com/j2eeJava™ 2 Platform Enterprise Edition Specification, v1.4 (Public Draft)
http://www.fhs-hagenberg.ac.at/staff/jheinzel/WS2002/PRG5/Docs/EJB_Einfuehrung.pdfErlach, Andreas: Enterprise JavaBeans (EJB), 2002.
38
J2EE – Java2 Enterprise EditionAbkürzungsverzeichnis
API - Application Programming Interface
BMP - Bean managed persistence
CMP - Container managed persistence
EJB - Enterprise JavaBeans
HTTP - Hyper Text Transfer Protocol
J2EE - Java 2 Enterprise Edition
J2EE SPI - J2EE Service Provider Interfaces
J2SE - Java 2 Standard Edition
JAAS - Java Authentication and Authorization Service
JACC - Java Authorization Service Provider Contract for Containers
JAF - JavaBeans Activation Framework
JAX-RPC - Java API for XML-based RPC
JAXP - Java API for XML Parsing
JAXR - Java API for XML Registries
JCA - Java Connector Architecture
JDBC - Java Database Connectivity
JMX - Java Management Extensions
JMS - Java Message Service
JNDI - Java Naming and Directory Interface
JNLP - Java Network Launch Protocol (Java Web Start)
JRMI - Java Remote Method Invocation
JSP - JavaServer Pages
JTA - Java Transaction API
JTS - Java Transaction Service
RMI – IIOP - Remote Method Invocation – Internet Inter ORB Protokoll
SAAJ - SOAP with Attachments API for Java
SPI - Service Provider Interface