Geschäftskomponenten mit EJB 3.1



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

Der lokale und verteilte Fall

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

SE2-10-Entwurfsmuster-2 15

Übungsaufgabe Transaktion als Middleware

Auszug aus JAX-WS Folien

Oliver Paulus, 7. Februar Spring Framework Einführung. Oliver Paulus, Was ist Spring?

Enterprise Java Beans

Factory Method (Virtual Constructor)

EJB jar.xml und Name Service (JNDI)

Softwareentwicklung mit Enterprise JAVA Beans

Spring Dynamic Modules for OSGi Service Platforms

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

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

Remote Method Invocation

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Prinzipien Objektorientierter Programmierung

Design Patterns 2. Model-View-Controller in der Praxis

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Warum EJB Technologie (1)?

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

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

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Application Frameworks

Java RMI Remote Method Invocation

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

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

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

ORACLE Business Components for Java (BC4J) Marco Grawunder

Spring Dynamic Modules for OSGi Service Platforms

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

LabView7Express Gerätesteuerung über LAN in einer Client-Serverkonfiguration. 1. Steuerung eines VI über LAN

Powermanager Server- Client- Installation

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk

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

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

Programmieren in Java

OP-LOG

Enterprise JavaBeans Überblick

Anwendung eines Enterprise Java Beans

Hivemind Ein leichtgewichteter Container

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

Wir bringen Ihre USB Geräte ins Netz Ohne Wenn und Aber!

Client-Server-Beziehungen

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Konfigurationsanleitung Tobit David Fax Server mit Remote CAPI Graphical User Interface (GUI) Seite - 1 -

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Aktualisierung der Lizenzierungsrichtlinien für Adobe Produkte

Um DynDNS zu konfigurieren, muss ausschließlich folgendes Menü konfiguriert werden:

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

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

Schedulingund Thread-Ausführer

System-Update Addendum

Installation & Konfiguration AddOn Excel Export Restriction

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Installation & Konfiguration AddOn Excel Export Restriction

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

JPC Visualisierung in Java

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

PQ Explorer. Netzübergreifende Power Quality Analyse. Copyright by Enetech Alle Rechte vorbehalten.

Planung für Organisation und Technik

Komponentenbasierter Taschenrechner mit CORBA

Objektorientierte Programmierung. Kapitel 12: Interfaces

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

SEP 114. Design by Contract

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

Enterprise Java Beans Einführung

Zustandsgebundene Webservices

Java Enterprise Architekturen Willkommen in der Realität

Nathan Burgener. Design by Contract. Modul SWE

Die ideale Verbindung zu Ihren Kunden durch Integration von Telefonie und Kundendaten CTI RECY CLE

Virtual Private Network

Lernprogramm "Veröffentlichen von WMS- Services"

Neues Modul für individuelle Anlagen. Änderung bei den Postleitzahl-Mutationen

Mobile und Verteilte Datenbanken

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

START - SYSTEMSTEUERUNG - SYSTEM - REMOTE

Security Technologien in Java EE 6

ELIS 2.6 WCF Schnittstellenbeschreibung

Anleitung mtan (SMS-Authentisierung) mit Cisco IPSec VPN

Objektorientierte Programmierung

Objektorientierte Programmierung

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Aspektorientierte Middleware Florian Wagner

Lizenz-Server überwachen

Sage Customer View für Windows 8 Funktionen

Java RMI, CORBA und Firewalls

Transkript:

Geschäftskomponenten mit EJB 3.1 Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Kurt Fastner Sommersemester 2012

Inhalt Was ist EJB Die verschiedenen EJB-Typen/Komponenten Applikationsserver, EJB-Container und Dienste Fazit

Einleitung EJB seit 1998, Version 1.0 Ziele: Entwicklungszeiten verkürzen, Code und Fehler reduzieren Seit EJB 3.0 Ease of Development Seit EJB 3.1 Fokus auf erhöhter Flexibilität

Was ist EJB? Spezifikation und Teil von Java EE Programmiermodell für Unternehmensanwendungen Eigenschaften: komponentenbasiert, skalierbar, wiederstandsfähig

Was sind EJBs? Standardisierte server-seitige Komponenten Beinhalten die Geschäftslogik In verschiedenen Ausprägungen vorhanden Session Beans Entity Beans Message Driven Beans

Session Beans Session Beans Stateless Stateful Singleton Bestandteile Business Interfaces (optional) Bean Klasse Deployment Deskriptor (optional)

Session Beans Kern einer EJB Anwendung Nicht persistent Können als Fassade implementiert werden Können an Transaktionen teilnehmen

Business Interfaces Fachliche Schnittstelle für den Client Local Interface für lokale zugriffe (aus der gleichen Anwendung) Remote Interface für entfernte Zugriffe über RMI No-Interface Client View (EJB 3.1)

Remote Interface @Remote public interface Auskunft { public List<Artikel> sucheartikel(string name, String Hersteller); } [1] Pass by Value (Kopie) Serialisierbarkeit der Parameter ist erforderlich

Aufrufmodell Entfernt [1]

Local Interface @Local public interface AuskunftLocal { public List<Artikel> sucheartikel(string name, String Hersteller); } [1] Pass by Reference Wenn nur ein Local Interface deklariert werden soll ist die Annotation überflüssig

No-Interface Client View Kein Interface @LocalBean (optional) Verwässert Komponenteneigenschaften von EJBs Verwendung bei 1:1 Entsprechung Interface/Bean-Klasse

Aufrufmodell Lokal [1]

Bean Klasse Einziger nicht optionaler Teil Beinhaltet die angebotene Geschäftslogik Deklariert Bean-Typ Stateless Stateful Singleton

Stateless Session Beans @Local(AuskunftLocal.class) @Remote(Auskunft.class) @Stateless public class AuskunftBean implements Auskunft, AuskunftLocal {... } [1] Nimmt keinen clientbezogenen Zustand an Die Bean ist nur für 1 Aufruf an einen Client gebunden Werden in einem Instanzpool gehalten

Stateful Session Beans @Stateful public class BestellvorgangBean implements Bestellvorgang, BestellvorgangLocal {... } [1] Nehmen einen clientbezogenen Zustand an 1:1 Beziehung zwischen Client und Bean Aktivierung und Passivierung EJB-Container gesteuerte Transaktionen über mehrere Aufrufe

Singleton Session Beans Neu mit EJB 3.1 EJB konforme Umsetzung des Singleton Patterns Nur eine Instanz pro Applikation/JVM Ähnelt der Stateless Session Bean Konkurrierende Zugriffe können problematisch sein (Flaschenhals)

Singleton Session Bean @Singleton @Startup @DependsOn( ApplicationPropertyServiceBean ) public class SystemServiceBean { @Lock(LockType.READ) public foo() {...} } @Lock(LockType.WRITE) @AccessTimeout(value = 1000, unit = TimeUnit.MILLISECONDS) public void bar(){...}... [1]

Deployment Deskriptor XML Konfigurationsdatei Seit EJB 3.0 durch Annotationen abgelöst Für bestimmte Zwecke aber noch das (einzige) Mittel der Wahl globale Interceptoren kurzfristige Änderungen

Asynchrone Methodenaufrufe Seit EJB 3.1 verfügbar, vorher nur über Message Driven Beans realisierbar @Asynchronous an Methode/Klasse Unterschied mit oder ohne Rückgabewert

Asynchrone Methodenaufrufe @Singleton public class EineBean { } @Asynchronous public Future<Integer> komplizierteberechnung() {... return new AsyncResult<Integer>(ergebnis); }... [1]

Message Driven Beans Nachrichtenbasierte Kommunikation über Broker Technologieunabhängige, lose Kopplung Schnittstelle objektorientierte und restliche Welt Ähnelt der Stateless Session Bean

Entity Beans Seit EJB 3.0 nicht mehr existent Jetzt Persistent Entity und Teil der Java Persistence API (JPA) Von EJB unabhängig und auch Java SE tauglich Schnittstelle zwischen relationaler und objektorientierter Welt

Java EE - Applikationsserver Container für andere Container, bietet diesen bestimmte Dienste an Stellt Protokolle für Client-Kommunikation bereit [1]

EJB-Container [1] Bietet Dienste des AS und weitere den EJB- Komponenten an Stellt die Laufzeitumgebung der EJB- Komponenten einer Anwendung dar

Was bringt EJB? Dependency Injection (DI) / Inversion of Control (IOC) Convention over Configuration Dienste die vom EJB-Container und Applikationsserver zur Verfügung gestellt werden (Lebenszyklus-Management, etc.)

Dependency Injection @EJB, @Resource, @PersistenceUnit, @PersistenceContext @Stateless @Local( MySessionLocal ) public class MySessionBean implements MySessionLocal { @EJB private EJBToInject ejbtoinject; } public void dosomething() { this.ejbtoinject.calculate(); } [1]

JNDI - Namensdienst Verschiedene Namensräume (global; app; module) Registrierung beim JNDI-Namensdienst für jedes Business-Interface (Voll qualifiziert) No Interface Client-View : Bean wird registriert

JNDI - Lookup try { Properties p = new Properties(); // IP + PORT des JNDI - Dienstes p.put(context.provider_url, jnp://126.135.103.7:1042 ); // JNDI - Klasse JBoss - Applikationsserver p.put(context.initial_context_factory, org.jnp.interfaces.namingcontextfactory ); // Verbindung zum JNDI - Dienst herstellen. jndicontext = new InitialContext(p); } catch (Exception e) {... } // Verwendung des JNDI - Namensdienstes Object o = jndicontext.lookup(...); [1]

Konkurrierende Zugriffe handhaben Stateless Session Beans: Während einem Aufruf exklusiv Stateful Session Beans: 1:1 Beziehung Client - Bean Singleton Session Beans: deklarative oder programmatische Steuerung

Deklarative Transaktionalität EJB stellt per Annotation verschiedene Transaktions-Typen zur Verfügung Attribut Beschreibung NOT_SUPPORTED Transaktion nicht unterstützt SUPPORTS Transaktion unterstützt REQUIRED Transaktion erforderlich (default) REQUIRES_NEW Neue Transaktion erforderlich MANDATORY Bestehende Transaktion erforderlich NEVER Bestehende Transaktion verboten [1]

Deklarative Transaktionalität @Stateless @TransactionAttribute(TransactionAttributeType.SUPPORTS) public class AuskunftBean implements Auskunft, AuskunftLocal {... @TransactionAttribute(TransactionAttributeType.NOT_SUPPORT ED) public List<Artikel> sucheartikel (String name) {... } [1]

Deklarative Sicherheit Einschränkung der Zugriffsrechte über Sicherheitsrollen Möglich auf Klassen- und Methoden- ebene Speziellere Konfigurationen überschreiben allgemeinere Annotation @RolesAllowed @PermitAll Beschreibung Definiert Rollen die auf annotierte Methoden/Klassen zugreifen dürfen Erlaubt jeglichen Zugriff ohne Einschränkungen @DenyAll Weist alle Aufrufe auf deklarierte Methoden ab. [1]

Deklarative Sicherheit @RolesAllowed({ CUSTOMER, EMPLOYEE }) public class ProtectedClassBean implements ProtectedClass, ProtectedClassLocal {... } @ PermitAll public void openmethod () {... } [1]

Interceptoren Umsetzung der Aspektorientierten Programmierung (AOP) in EJB Unterbrechen den eigentlichen Methodenaufruf Eingen sich für Querschnittsfunktionalitäten technisch (Logging, Profiling) fachlich (überprüfen von Berechtigungen)

Interceptor definieren public class BeanStatisticsInterceptor {... } @ AroundInvoke public Object onmethodecall(invocationcontext ctx) throws Exception { beanstats.reportmethodcall(ctx.getmethod()); long starttime = System.currentTimeMillis(); try { return ctx.proceed(); } finally { long duration = System.currentTimeMillis - starttime: beanstats.reportmethodduration(ctx.getmethod(), duration); } } [1]

Interceptoren anwenden @Stateless @Interceptors({BeanStatisticsInterceptor.class, SuperSecurity.class}) public class ZielobjektBean implements Zielobjekt { public void fangmichab() {...} @ExcludeClassInterceptors public void michnicht() {...} } [1] @Interceptors auch auf Methodenebene möglich

Timer Service Seit EJB 3.1 tauglicher Ersatz für cron automatische und programmgesteuerte Timer programmgesteuerte Timer können auf Ereignisse zur Laufzeit reagieren automatische Timer werden rein deklarativ festgelegt @Shedule(dayOfWeek= Mon-Fri,hour= 18 ) void machefeierabend(timer timer) {... } [1]

EJB - Lite Teil des Java EE Web-Profile Reduzierter Funktionsumfang auf Webanwendungen angepasst keine Entfernte Kommunikation keine Asynchronen Methodenaufrufe

EJB - Lite [2]

Fazit EJB 3.0 und 3.1 waren wichtige Schritte um die Technologie zu retten Erleichtert Einstieg in EAD für Neulinge Auch erfahrene Entwickler profitieren: weniger Aufwand und Fehler, clean Code,... Mächtiges und wohl vollständigstes Werkzeug im Java Umfeld

Quellen [1] EJB 3.1 professionell; dpunkt.verlag; Ihns [2] JavaMagazin Spezial, Java EE 6; 12.2010