90
Prof. Dr. Andreas Schmietendorf 03.10.2005 1 Programmierung von Client/Server-Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Embed Size (px)

Citation preview

Page 1: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 1

Programmierung von Client/Server-Anwendungen

J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Page 2: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 2

Java Naming and Directory Interface – JNDI

Enterprise Java Beans im Überblick

Struktur von EJB-Komponenten (Implementierungsbeispiel)

Vorbereitung des Deployment-Prozesses

Auslösen des Deployment-Prozesses

Installation von SUN‘s Referenzumgebung

Funktionenen des SUN-Applikation Servers

Übersicht

Page 3: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 3

Java Naming and Directory Interface - JNDI

Page 4: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 4

Unterstützung der Kommunikation über Rechnergrenzen

- Angebotene Services eines Rechners?

- Wo sind entsprechende Objekte abgelegt?

vgl. Suche im Rahmen eines Telefonbuches

JNDI – Spezifikation eines verwendbaren Interfaces

- Einhaltung der JNDI-Konventionen

- Implementierung eines konkreten Dienstes

Service Provider Interface (kurz SPI)

JNDI

Page 5: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 5

JNDI

Anwendung

JNDI

Naming Manager

SPI

RMI CORBA LDAP

Quelle: Stark, T.: J2EE – Einstieg für Anspruchsvolle,Addison-Wesley, Pearson Studium, München 2005

Page 6: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 6

Beispiele für SPI-Implementierungen:

Lightweight Directory Access Protocol (LDAP-Standard)

Domain Name Service (DNS)

CORBA Naming Service (COS)

RMI Registry

Network Information System (NIS)

Novel Directory Service (NDS)

Windows Registry

JNDI

Page 7: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 7

Naming Service – Aufbau von Namen: Atomic Name

- Nicht weiter zerlegbar

- Atomare Zeichenkette – z.B. sun

Compound Name- Zusammengesetzter Name

- java.sun.com oder /products/jndi/index.jsp

Composite Name- Zusammengefasster Name

- java.sun.com/products/jndi/index.jsp

JNDI

Quelle: Stark, T.: J2EE – Einstieg für Anspruchsvolle,Addison-Wesley, Pearson Studium, München 2005

Page 8: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 8

Einstiegepunkt zum benötigten Service/Objekt:

InitialContext vom Typ javax.naming.Context

Basis-Operationen des JNDI-Kontextobjektes

- bind (Ablegen eines Objektes im aktuellen Kontext)

- unbind (Löschen eines Objektes aus dem Kontext)

- rebind (Möglichkeit zum Überschreiben eines alten Objektes)

- list (Auflisten aller gebundenen Objekte)

- createSubcontext (Erzeugen eines Unterkontextes)

- lookup (Liefert ein gebundes Objekt zurück)

JNDI

Page 9: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 9

Konstanten des Interface javax.naming.Context :

INITIAL_CONTEXT_FACTORY (Schnittstelle zum SPI)

PROVIDER_URL (URL des Service)

SECURITY_PROTOCOL (Typ des Protokolls – z.B. SSL)

SECURITY_PRINCIPAL (Nutzername)

SECURITY_CREDENTIALS (Passwort)

JNDI

Quelle: Stark, T.: J2EE – Einstieg für Anspruchsvolle,Addison-Wesley, Pearson Studium, München 2005

Page 10: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 10

Konfiguration des InitialContext (hier Zugriff auf LDAP):try {

// Umgebung erzeugenHashtable env = new java.util.Hashtable();// Dienst spezifizierenenv.put(Context.INITIAL_CONTEXT_FACTORY,„com.sun.jndi.ldap.LdapCtxFactory“);// Provider URL spezifizierenenv.put(Context.PROVIDER_URL,„ldap://localhost:389“);Context initCtx = new InitialContext(env);

}catch(NamingException ne){ne.printStackTrace();

}

JNDI

Quelle: Stark, T.: J2EE – Einstieg für Anspruchsvolle,Addison-Wesley, Pearson Studium, München 2005

Page 11: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 11

Enterprise Java Beans im Überblick

Page 12: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 12

SUN‘s EJB Definition:

Ein The Enterprise Java Beans architecture is a component

architecture for the development and deployment of

component-based distributed business applications.

Applications written using the Enterprise Java Beans

architecture are scalable, transactional, and multi-user secure.

These applications may be written once, and then deployed on

any server platform that supports the Enterprise Java Beans

specification.

EJB-Überblick

Page 13: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 13

Enterprise-JavaBeans(EJB)-Architektur I: Server-seitige Java-Komponenten (Focus: Anwendungslogik) SUN bietet Spezifikation für EJB‘s, Container und Server

- Referenzimplementierung J2EE bzw. Java EE- Vielzahl angebotener Applikation-Server

• JBoss (www.jboss.org)• BEA WebLogic (www.bea.com)• IBM WebSphere (www.ibm.com)

Portable Anwendungen auf der Basis von EJB‘s- Hardwareunabhängig- Betriebssystemunabhängig- Unterstützung verschiedener Sprachen und CORBA

EJB-Überblick

Page 14: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 14

Enterprise-JavaBeans(EJB)-Architektur II: Abstraktes Programmierinterface

- Entlastung von “low-level“ Aufgaben wie z.B.• Transaktionsverwaltung

• Multithreading

• Ressourcenverwaltung

- Unterstützung der Wiederverwendbarkeit

Die Entwicklung sollte möglichst unabhängig von der Installation, Konfiguration, Auslieferung und dem Betrieb ablaufen können- ITIL Service Delivery

- ITIL Service Support

EJB-Überblick

Page 15: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 15

Container-Konzept I: Behälter bzw. Laufzeitumgebung für Softwarekomponenten

Container definiert nach außen einen abgeschlossenen Bereich

Überwachung des Lebenszyklus einer EJB

- Erzeugen von EJB-Instanzen

- Verwalten und Steuern der möglichen Zustände eines EJB

- Entfernen von EJB-Instanzen

Bestandteil eines konkreten Applikation Servers

Unzureichenden Portabilität durch Verwendung Herstellerspezifischer API‘s

EJB-Überblick

Page 16: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 16

Container-Konzept II (Aufgaben):

Überwachen des Lebenszyklus von EJB‘s

Instanzen Pooling (Verwaltung eines Pools von EJB‘s)

Namens- und Verzeichnisdienst

Transaktionsdienst (ACID-Prinzip)

Nachrichtendienst (Message Service)

Persistenz (CMP - Container Managed Persistence)

Clustermechanismen - meist Herstellerspezifisch!

EJB-Überblick

Page 17: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 17

Container-Konzept III (unterstütze API‘s – Spezifikation 2.1):

J2SE Version 1.3

EJB Version 2.1

JMS API Version 1.x

JNDI Api Version 1.2

JDBC API Version 2.0

JavaMail API ab Version 2.1

Java API for XML Processing (JAXP)

EJB-Überblick

Page 18: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 18

EJB - Eigenschaften: Component Model (Session-, Entity- und Message-Driven Beans) Component Persistence

- BMP - bean managed Persistence- CMP - container managed Persistence

Transaction-Management (Java-Transaction-API) Exceptions (Client und Server) Security Naming und Directory Service (JNDI) Protocoll-Support (RMI, IIOP,...) CORBA-Support (Mapping and Services) Attribute-based Programming (Deployment Descriptor File) Deployment (EJB JAR-Files)

EJB-Überblick

Page 19: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 19

HTML

Java-Applications

Web-ServerWeb-ContainerJSP/Servlets

Datenbank

JDBC

HTTP, HTTPS (HTML/XML)

JNDI, RMI over IIOP

IIOP (CORBA-Mapping)

DCOM/CORBA ActiveX-Bridge

Clients

CORBA

MOM

COM/Windows

EJB

EJB-Container

EJBServer

JMS Message-orientiend Middleware

Low-Level-Services

EJB-Überblick

Page 20: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 20

Rollenverteilung mit EJB‘s: Das EJB-Modell unterstützt eine arbeitsteilige Fertigung, Verarbei-tung, Auslieferung und Administration beanbasierter Applikationen:

EJB-Provider - Lieferant der Java-Kompoenten

Application Assembler - Anwendungsentwickler (komplexere EJB‘s)

EJB-Deployer - Installation und Konfiguration der Umgebung

System-Administrator - Administration Server- und Netzinfrastruktur

EJB-Server-Provider - Anbieter von Applikation-Server

EJB-Container-Provider - Laufzeitumgebung für EJB‘s (derzeit fast immer im Zusammenhang mit dem Applikation-Server)

EJB-Überblick

Page 21: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 21

EJB - Spezifikation 1.0:

Bean-Typen: Session Beans, Entity Beans (optional)

Aufruf von Funktionen: synchron

Deployment-Deskriptor: serialisierte Klasse

Kommunikationsprotokoll: Java-RMI

Benötigtes JDK: Version 1.1

EJB-Überblick

Page 22: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 22

EJB - Spezifikation 1.1:

Bean-Typen: Session Beans, Entity Beans

Aufruf von Funktionen: synchron

Deployment-Deskriptor: XML-konforme Datei

Kommunikationsprotokoll: Java-RMI over IIOP und CORBA/IIOP

(optional)

Benötigtes JDK: Version 1.2

EJB-Überblick

Page 23: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 23

EJB - Spezifikation 2.0: Bean-Typen: SB, EB, Message-Driven Beans

Aufruf von Funktionen: synchron und asynchron

Deployment-Deskriptor: XML-konforme Datei

lokale Ausprägungen des Home/Remote-Interface

Kommunikationsprotokoll: Java-RMI/IIOP & CORBA/IIOP

Datenbank-Mapping EJB QL (Persistenz-Managers)

Relationen zwischen EJB‘s

Benötigtes JDK: Version 1.3.x

EJB-Überblick

Page 24: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 24

EJB - Spezifikation 2.1:

erste Entwurfsversion war am 19. Juni 2002 verfügbar

Primäre Erweiterung - Web Service Unterstützung

- Web Services APIs (JAX-RPC and JAXM)

- Stateless Session Beans und Message Driven Beans als Web Service

Erweiterungen der EJB-QL

MDB-Erweiterung um JMS (weite MOM-Unterstützung)

Steuerung des Nachrichtenaustausch zwischen EJB‘s

Time/Event-Service

EJB-Überblick

Page 25: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 25

EJB - Spezifikation 3.0 – auffallende Änderungen: Verwendung von Java-Annotationen

- Reduktion der benötigten Klassen und Interfaces- Vermeidung redundanter Konfigurationen- Beziehungen zur Umgebung bzw. JNDI festlegen

Veränderung des Deployment-Vorganges- Deployment-Discriptoren sind optional- Vordefinierte Wertbelegungen für Konfigurationsparameter- Konfiguration ggf. vorhandener Ausnahmen

Beibehaltung der 3 EJB-Typen- Home-Interface entfällt bei den Session Beans- EntityBeans sind einfache Java-Klassen (POJO)- JPA – Java Persistence Architecture

EJB-Überblick

Page 26: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 26

Bestandteile einer EJB (Fokus EJB Version 2.1):

Component Interface – nach außen sichtbare Funktionalität

- Local Interface

- Remote Interface (via RMI Mechanismus)

Home Interface – Steuerung des Lebenszyklus

- Local Home Interface

- Remote Home Interface (via RMI Mechanismus)

Bean-Klasse – fachliche Funktionalität (Interface-Implementierung)

Bean-Kontext – Identität der EJB (vgl. Primärschlüssel)

Deployment Descriptor

EJB-Überblick

Page 27: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 27

EJB-Überblick

Message DrivenBeanSession Bean Entity Bean

Enterprise Java Bean

zustandslos zustands-behaftet BMP CMP

Page 28: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 28

EJB-Typen (Session-Beans):

Stateless Session-Beans (javax.ejb.SessionBean)

- genau dem Client zugeordnet von dem dieses instanziert wurde

- nach „Herunterfahren“ des Server nicht mehr vorhanden

- ist keine Referenz mehr vorhanden erfolgt eine Löschen

Stateful Session-Beans

- Verwaltung von Zuständen durch Handle-Mechanismus

- Speicherung der Zustände möglich, z.B. bei TA-Sicherung notwendig

EJB-Überblick

Page 29: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 29

EJB-Typen (Entity-Beans):

Entity-Beans (javax.ejb.EntityBean)

- Repräsentiert ein Geschäftsobjekt

- Persistenzeigenschaften (zumeist Abbildung auf RDBMS)

- Eindeutige Identifizierung über Primärschlüssel ist zwingend

- Wiederherstellung der Bean zu einem späteren Zeitpunkt

- Persistenzmechanismen des Containers - CMP

- Persistenzmechanismen vom Bean verwaltet - BMP

EJB-Überblick

Page 30: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 30

EJB-Typen (Message-Driven-Beans): Message Driven beans (javax.ejb.MessageDrivenBean)

- asynchrone Nachrichtenbehandlung (messaging)

- Interface javax.ejb.MessageDrivenBean wird ebenfalls implementiert

- Lebenszyklusverwaltung (create, remove, context)

- onMessage (Verarbeitung eingehender Nachrichten)

Java Message Service (JMS)- API zur Kodierung der zu sendenden/empfangenden Nachrichten

- Service Provider Interface (JMS-Treiber für spezifische MOM-Impl.)

- zwei Kommunikationsmodelle (Pub/Sub und PTP)

EJB-Überblick

Page 31: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 31

Aufbau/Struktur von EJB-Komponenten

Page 32: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 32

Interner Aufbau einer EJB-Komponente: Besteht aus mindestens 3 Java-Klassen und dem Deployment-Deskriptor Remote-Interface (bzw. die lokale Ausprägung ab der EJB-Version 2.0)

- Nutzung der EJB-Funktionalität über dieses Interface Home-Interface (bzw. die lokale Ausprägung ab der EJB-Version 2.0)

- Realisierung das Erzeugen, Auffinden und Löschen des Beans Bean-Implementierung

- Implementiert die im Remote-Interface spezifizierten Methoden XML - Deployment-Deskriptor (kurz DD)

- Informationen und Anpassungen zum betrachteten Bean

Bem.: Message Driven Beans besitzen weder Home- noch Remote-Interface (sind Message Listener - vgl. zustandslose Session Beans)

EJB-Struktur

Page 33: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 33

Übersetzen inJava-Bytecodez.B. javac *.java

Interner Aufbaudes EJB innerhalb

einer *.jar-Datei

Erstellungdes Java-

Quellcodes

Remote-Interface*.Java

Home-Interface*.java

EJB-Implementierung

*.java

Remote-Interface*.class

Home-Interface*.class

EJB-Implementierung

*.class

DeploymentDescriptor

EJB-jar.XML

Manifest-Datei*.mf

Installation (Deployment)im EJB-Container *.ear

Anwendung imApplikation-Server

installieren

Unterstützung durch Wizards, wie z.B. Referenzimplementierung SUN J2EE(Erzeugen der EJB-JAR-Dateien, Spezifikation des Deployment Descriptors, Verifikation des EJB)

Konfiguration von:Ÿ SecurityŸ PersistenzŸ RessourcenzugriffŸ Transaktions-

sicherung

Session BeansSB

Entity-BeansEB

EJB-ContainerEJB-Container

Web-Container(JSP, Serlets,...)

Web-Container(JSP, Serlets,...)

Business Logic IV- und Buisiness-Komponente Laufzeitumgebung

Message-DrivenBean MDB

EJB-Struktur

Page 34: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 34

Beispiel eines Home-Interfaces:

package example1;

import java.rmi.*;

import javax.ejb.*;

public interface EuroCalcHome extends EJBHome {

public EuroCalcRemote create()

throws CreateException, RemoteException;

}

EJB-Struktur

Page 35: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 35

Beispiel eines Remote-Interfaces:package example1;

import java.rmi.*;import java.lang.*;import javax.ejb.*;public interface EuroCalcRemote extends javax.ejb.EJBObject { // Umrechnung Euro-Betrag in DM public double euro_to_dm(double amount) throws RemoteException;

// Umrechnung DM-Betrag in Euro public double dm_to_euro(double amount) throws RemoteException;}

EJB-Struktur

Page 36: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 36

Beispiel der EJB-Implementierung I:

import package example1;

import java.rmi.*;

import javax.ejb.*;

import javax.naming.*;

public class EuroCalc implements SessionBean {

private SessionContext sessionContext;

//Umrechnungskurs der DM zu einem Euro

double changerate = 1.95583;

EJB-Struktur

Page 37: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 37

Beispiel der EJB-Implementierung II: //Berechnung des Währungsbetrages in DM public double euro_to_dm(double amount) throws ArithmeticException { double dm = 0; dm = amount*changerate; System.out.println(dm); return dm; }

//Berechnung des Währungsbetrages in Euro public double dm_to_euro(double amount) throws ArithmeticException { double euro = 0; euro = amount/changerate; System.out.println(euro); return euro; }

EJB-Struktur

Page 38: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 38

Beispiel der EJB-Implementierung III: //Methoden zur Steuerung des Lebenzyklus des EJB public void ejbCreate(){}

public void ejbRemove(){}

public void ejbActivate(){}

public void ejbPassivate(){}

//Ermöglicht den Zugriff auf den Kontext des EJB public void setSessionContext (SessionContext context){ sessionContext = context; }

}

EJB-Struktur

Page 39: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 39

Aufgaben des Deployment-Deskriptor:

Auf der Basis des Deployment-Deskriptor soll eine Anpassung

entsprechender Attribute der EJB‘s ermöglicht und ein „Blackbox-Reuse

unterstützt werden. Der Deployment-Deskriptor kann als Beipackzettel für

ein EJB, oder einer aus mehreren EJB‘s zusammengesetzten Applikation

betrachtet werden.

EJB-Struktur

Page 40: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 40

Aufgaben des Deployment-Deskriptor kurz DD II: Im DD konfigurierbare Eigenschaften (Attribute):

- Sicherheitsattribute

- Transaktionsattribute

- Umgebungsvariablen

- Verknüpfungen mit anderen Komponenten

- Verknüpfungen zu Datenquellen

Struktur eines EJB-DD

- Struktur-Sektion (Basis- und Umgebungsinformationen)

- Assemblierungs-Sektion (Zugriffsrechte, Transaktionsattribute,...)

EJB-Struktur

Page 41: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 41

Beispiel eines XML-Deployment-Descriptor:<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>

<ejb-jar> <description>no description</description> <display-name>Ejb1</display-name> <enterprise-beans> <session> <display-name>Euro Calculator</display-name> <ejb-name>EuroCalc</ejb-name> <home>example1.EuroCalcHome</home> <remote>example1.EuroCalcRemote</remote> <ejb-class>example1.EuroCalc</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans></ejb-jar>

EJB-Struktur

Page 42: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 42

EJB Object

EJB Container/Server

Enterprise Bean

Home Object

Clie

nt C

ode

(nat

ive

Java

-Cod

e) Home-Interface

Remote-Interface

1: Finden einerBean-Referenz

3: Rückgabe einer EJB-Object-Referenz 2: EJB-Object

Instanz erzeugen4: Aufruf einer Methode

des EJB-Object

7: Rückgabe

5: Delegation desMethodenaufrufs

6: Rückgabe

Interaktionsreihenfolge Client/Server I:

EJB-Struktur

Page 43: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 43

Interaktionsreihenfolge Client/Server II:

Schritt 1 - Finden der Referenz zum Home Object der benötigten Bean

Schritt 2 - EJB-Object Instanz erzeugen

Schritt 3 - Rückgabe einer EJB-Object-Referenz

Schritt 4 - Aufruf einer im EJB-Objekt deklarieren Methode

Schritt 5 - Delegation des Methodenaufrufs

Schritt 6/7 - Übergabe der Ergebnisse der Methodenausführung

EJB-Struktur

Page 44: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 44

Implementierung der Client-Anwendung 1:public class EuroCalcClient {

Object object = null;

EuroCalcHome home = null;

EuroCalcRemote remote = null;

public EuroCalcClient() {

}

EJB-Struktur

Page 45: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 45

Implementierung der Client-Anwendung 2:public void getBean() {

try {InitialContext ctx = new InitialContext();//JNDI, nachsehen ob die Bean existiertobject = ctx.lookup("EuroCalc");System.out.println("object = ctx.lookup, wurde ausgefuehrt! \n");home = (EuroCalcHome)PortableRemoteObject.narrow (object, EuroCalcHome.class);System.out.println("Zuweisung nach home, erledigt! \n");

EJB-Struktur

Page 46: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 46

Implementierung der Client-Anwendung 3:remote = home.create();

System.out.println("Bean Reference:

"+ remote +"\n");

}

catch(Exception ex){

System.out.println("Fehler in getBean()! \n");

ex.printStackTrace();

}

}

EJB-Struktur

Page 47: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 47

Implementierung der Client-Anwendung 4:public void umrechnung(){

try{ remote.dm_to_euro(50000); System.out.println("50000 DM sind " + remote.dm_to_euro(50000)); remote.euro_to_dm(50000); System.out.println("50000 DM sind " + remote.euro_to_dm(50000)); }catch (Exception exc){ exc.printStackTrace(); } }

EJB-Struktur

Page 48: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 48

Implementierung der Client-Anwendung 5:

public static void main(String[] args) {

EuroCalcClient rechnerClient = new EuroCalcClient();

rechnerClient.getBean();

rechnerClient.umrechnung();

}

}

EJB-Struktur

Page 49: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 49

Vorbereitung des Deployment-Prozess

Page 50: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 50

J2EE-Referenzumgebung - Übersicht I: Aufsetzen J2EE-komponentenbasierter Applikationen

Erzeugen und Konfigurieren von EJB-Komponenten

Erzeugen und Konfigurieren von Web-Komponenten

Hinzufügen und Entfernen von JAR, WAR, EAR, RAR

Auslösen der Installation (deployment) im Container

Analyse der Komponenten auf J2EE-Konformität

Installation entsprechender Client-Applikationen.

Vorbereitung des Deployment

Page 51: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 51

J2EE-Referenzumgebung - Übersicht II: Administrations Tool (Kommandozeile – neu mit Web-GUI)

Application Deployment Tool (Kommandozeile oder GUI)

Key Tool (Kommandozeile)

Realm Tool (Kommandozeile)

Verifier (Kommandozeile oder GUI)

Cleanup Script (Kommandozeile)

Packager (Kommandozeile)

Vorbereitung des Deployment

Page 52: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 52

J2EE-Referenzumgebung - Packager:

Enterprise Java Beans (jar-Files)

Web Application (war-Files)

Applikation Clients (jar-Files)

J2EE Applikationen (ear-Files)

Ressource Adapter (rar-Files)

Vorbereitung des Deployment

Page 53: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 53

Vorbereitung des Deployment

Page 54: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 54

EJB-Wizard - Funktionsumfang:

Enterprise Festlegung des Namens der Java-Archive und darin

enthaltener Klassen und Interfaces

Definition des konkreten EJB-Typs (SB, EB, MDB)

Festlegung potentieller Referenzen der EJB-Komponente

Persistenz-, Security- und Transaktionseigenschaften

Festlegung von Umgebungsvariablen des EJB’s

Vorbereitung des Deployment

Page 55: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 55

Vorbereitung des Deployment

Erzeugen eines JAR-Files innerhalb der Applikation:

Page 56: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 56

Vorbereitung des Deployment

Konfiguration des EJB:

Page 57: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 57

Vorbereitung des Deployment

Transaktionseigenschaften:

Page 58: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 58

Vorbereitung des Deployment

Umgebungsvariablen:

Page 59: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 59

Vorbereitung des Deployment

EJB-Referenzen:

Page 60: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 60

Vorbereitung des Deployment

Datenbank-Referenzen:

Page 61: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 61

Vorbereitung des Deployment

JMS-Referenzen:

Page 62: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 62

Vorbereitung des Deployment

Security-Konfiguration:

Page 63: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 63

Vorbereitung des Deployment

Der generierte Deployment Desciptor:

Page 64: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 64

Der eigentliche Deployment-Prozess

Page 65: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 65

Deployment/Installation

Deployment-Start:

Page 66: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 66

Deployment/Installation

Festlegung JNDI-Namen und Referenzen:

Page 67: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 67

Deployment/Installation

Bereitschaft zum Deployment-Vorgang:

Page 68: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 68

Deployment/Installation

Festlegung JNDI-Namen und Referenzen:

Page 69: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 69

Deployment/Installation

Page 70: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 70

Installation derJ2EE-Referenzumgebung

Page 71: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 71

J2EE Referenzumgebung installieren

Inhalte- SUN Application Server- PointBase-Datenbank- J2EE Bibliotheken

Bestandteile- Web-Container- EJB-Container

Anforderungen- 250 MByte HD Speicher- 500 MByte Arbeitsspeicher- Netzwerksintegration- Windows 2000/XP o. UNIX

Page 72: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 72

J2EE Referenzumgebung installieren

Page 73: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 73

Lizenzvereinbarung J2EE

Page 74: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 74

J2EE Referenzumgebung installieren

Page 75: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 75

J2EE Referenzumgebung installieren

Page 76: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 76

J2EE Referenzumgebung installieren

Page 77: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 77

J2EE Referenzumgebung installieren

Page 78: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 78

J2EE Referenzumgebung installieren

Page 79: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 79

J2EE Referenzumgebung installieren

Page 80: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 80

Sun Java™ System Application Server Platform Edition 8

Page 81: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 81

Informationen zum Application Server

Page 82: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 82

Verwendbare Tools

Page 83: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 83

Verwendbare Tools

Starten und Stoppen- Default Server (Standard)- Samples Server (Beispiele)- PointBase (Datenbank)

Deploytool- Komponenten erzeugen- Komponenten installieren- Komponenten verifizieren

Weitere Tools- Admin Console (2 mal)- Online Dokumentation- Deinstalltion J2EE

Page 84: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 84

Start des Application Server

Page 85: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 85

Test des Application Servers

Page 86: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 86

Das Deployment-Tool

Session Bean

Stateless Session Bean

Bean-Klasse

Name des EJB

Beschreibung

Ggf. verwendetes Icon

JMS-Nutzung

Page 87: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 87

Das Deployment-Tool

Entity Bean

Bean-Klasse

Name der PK-Klassen

Remote Interface

Security-Einstellungen

Resource-Reference JDBC

TA-Einstellungen hier CMP

Page 88: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 88

Das Deployment-Tool

Message Driven Bean

Bean-Klasse

Name des EJB

Keine Interface!

Beschreibung

Ggf. verwendetes Icon

JMS-Nutzung

Page 89: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 89

Administration des Application Servers

Page 90: 1 Prof. Dr. Andreas Schmietendorf03.10.2005 Programmierung von Client/Server- Anwendungen J2EE bzw. Java EE Back End Applikationen (EJB-Container)

Prof. Dr. Andreas Schmietendorf03.10.2005 90

Administration des Application Servers