Java EE - FHWS 2014 - 5 EJB

Post on 19-Jun-2015

156 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Java EE - FHWS 2014 - 5 EJB

Transcript

Java EEFull Stack for Business

Applications

Enterprise Java Beans

2014-10-25

Referent: MATTHIAS REINING

Technical Manager Insurance at RGI Deutschland GmbH

blog: http://blog.matthias-reining.com

twitter: https://twitter.com/MatthiasReining

about.me: http://about.me/matthiasreining

2014-10-25

ENTEPRISE JAVA BEANS

2014-10-25

BESTANDSAUFNAHMEWer hat mit EJBs bisher gearbeiet?

2014-10-25

DAS PROGRAMM

Die Spec Idee, Historie

Der App Server Containerkonzept Paketierung (JAR, WAR, EAR) Marktüberblick

Das Projekt Entwicklung eines Beispielprojektes IDE Settings, Oberflächen (Servlets, JSF),

Business Logic (EJB), Persistence (JPA), Java EE Patterns (CDI), Web Services (JAX-RS)

Die Produktion Buildmanagement (maven, Jenkins) Deployment einer Java EE Anwendung in

der Cloud bei einem PaaS Anbieter

2014-10-25

Java EE

Low-Level-Technologien Servlets JSP JDBC

High-Level-Technologien JSF JPA

2014-10-25

Was gibt‘s noch?„Eigentlich“ geht schon alles…

2014-10-25

Enterprise Java Beans Session Beans Message Driven Beans

2014-10-25

Enterprise Java Beans

Enterprise JavaBeans (EJB) sind standardisierte Komponenten innerhalb eines Java-EE-Servers (Java Enterprise Edition). Sie vereinfachen die Entwicklung komplexer mehrschichtiger verteilter Softwaresysteme mittels Java. Mit Enterprise JavaBeans können wichtige Konzepte für Unternehmensanwendungen, z. B. Transaktions-, Namens- oder Sicherheitsdienste, umgesetzt werden, die für die Geschäftslogik einer Anwendung nötig sind.

[Quelle: http://de.wikipedia.org/wiki/Enterprise_JavaBeans]

2014-10-25

Enterprise Java Beans Technology

Enterprise JavaBeans (EJB) technology is the server-side component architecture for Java Platform, Enterprise Edition (Java EE). EJB technology enables rapid and simplified development of distributed, transactional, secure and portable applications based on Java technology.

[Quelle: http://www.oracle.com/technetwork/java/javaee/ejb/index.html ]

2014-10-25

Session BeansBasics

2014-10-25

4-Tier-Architecture

Quelle: http://docs.oracle.com/javaee/6/tutorial/doc/geysj.html

2014-10-25

ANFORDERUNGEN

[Ursprünglich]

Interoperabilität mit Standalone-Anwendungen und Systemen, die nicht auf der Java-Plattform basieren

Verteilung von Anwendungskomponenten auf einer Server-Farm. (Bei einer Server Farm werden meherer Java EE Server zu einem Cluster verbunden). Wegen der Lastverteilung wird die Performance des Gesamtsystems verbessert

Transaktionsverwaltung von verteilten Systemen[Quelle: Professionell entwickeln mit Java EE 7 , S. 902]

2014-10-25

Umgangssprachlich werden Session Beans oft als EJBs bezeichnet

2014-10-25

Historie

Session Beans waren von Anfang an Bestandteil des Java EE Standards „Entfernte Zugriffe“ sollten über CORBA realisiert werden

(Standard unter den platfformunabhängigen Middleware-Technologien)

Ab 2001 (J2EE 1.3) lokaler Zugriff auf Session Beans[mittlerweile eig. der Normalfall, da der Client der Web Browser ist und die Web Anwendung in der gleichen JVM läuft / funktioniert allerdings nicht auf Server Farmen]

2014-10-25

Was ist ein Session Bean?

Java Klasse im „Backend“ einer Unternehmensanwendung Bindeglied zwischen Frontend und Zugriffsschicht zu einem RDBMS Ihre Aufgabe: Implementierung der Geschäftslogik der

Unternehmensanwendung

Unterscheidung Statless Session Bean (SLSB) (javax.ejb.Stateless) Stateful Session Bean (SFSB) (javax.ejb.Stateful) Singleton Session Bean (javax.ejb.Singleton)

2014-10-25

Namenskonventionen

Übliche EmpfehlungRegister

RegisterBean oder RegisterEJBfür die SLSB Klasse

Interface RegisterBeanRemote / RegisterBeanLocal

…. Meine Empfehlung ;-) Bei No-Inteface-Bens nur fachliche Bezeichnung

2014-10-25

Business Methoden von Session BeansRegeln: Muss public sein Darf nicht final oder static sein Darf nicht mit ejb beginnen Bei Remote-Calls müssen die Parameter und der Rückgabetyp „RMI“-

fähig sein.

2014-10-25

Business Methoden von Session Beans Meist werden in Business Methoden die Geschäftsdaten gespeichert Hierbei kommt JPA und JTA zum Einsatz Besondere Funktionen bieten Business Methoden im Bereich

Transaktionen

2014-10-25

REMOTE und LOCAL CALLS

2014-10-25

REMOTE CALL

Aufruf aus einer externen JVM (Standalone Applikation, bspw. Java Swing GUI) Java EE definiert hierfür zwei Kommunikationswege

RMI-IIOP RMI

Remote Method Invocation (geht nur wenn auf beiden Seiten eine JVM ist) IIOP

Internet Inter-ORB Protocol: Kommunikationsprotokoll für CORBA „RMI over IIOP“ RMI-IIOP

RMI wird um Sprachunabhängigkeit erweiter

Web Services EJBs SOAP Web Services

Der Aufruf geht immer an eine ClientView und nicht direkt an den Session Bean.Die ClientView wird vom Container erzeugt und ist für den Aufruf transparent

2014-10-25

REMOTE CALL

[Quelle: Professionel Entwickeln mit Java, S. 907]

2014-10-25

CLIENT VIEW

Die Client View ist eine Art Interceptor und Proxy für den Session Bean Die Client View ist ein Abbild der Session Bean Die Client View leitet die Anfrage an die entsprechende Business Methode weiter Der EJB Container ist daher in der Lage ein Instanz-Pooling vorzunehmen. Durch die Entkoppelung beim Zugriff, kann die Session Bean sich „irgendwo“

befinden. In Cluster Instanzen kann hierdurch ein Failover oder Balancing vorgenommen

werden.

Die Client View ist für den Entwickler transparent!!

2014-10-25

LOCAL CALL

Aufrufer aus dem WEB-Container oder EJB-Container der gleichen JVM

Das Gesamtsystem darf keine Rechner-Farm mit Cluster-Instanzen sein.

Der Aufruf geht immer an eine ClientView und nicht direkt an den Session Bean.Die ClientView wird vom Container erzeugt und ist für den Aufruf transparent

2014-10-25

LOCAL CALLS

[Quelle: Professionell Entwickeln mit Java, S. 908]

2014-10-25

REMOTE oder LOCAL ?

Standalone Client, immer REMOTE Web-Container Client, meist LOCAL

Falls allerdings eine Server Farm eingesetzt wird mit verbunden Cluster-Instanzen funktionieren LOCAL Calls nicht mehr.

Architektonische Unabhängigkeit: immer REMOTE

über die Architektur nachdenken und pragmatisch vorgehen!

2014-10-25

BUSINESS INTERFACE

Interface für Remote Call

Kennzeichnung @Remote am Interface oder direkt in der Session Bean mit dem Interface als Parameter

Local CallKennzeichnung @Local am Interface oder direkt in der Session Bean mit dem Interface als Parameter

No-Interface View Alle public Methoden sind lokal aufrufbar. Der Container erstellt keine No-Interface View falls ein Business Interface vorhanden ist. Falls trotzdem erwünscht kann dies mit @LocalBean trotzdem angefordert werden

2014-10-25

DEPLOYMENT DESKRIPTOREN

ejb-jar.xml alternativ zu den Annotations XML überschreibt immer die Annotations

Individuelle Deployment Deskriptoren Der Standard sieht vor, dass ein App-Server Hersteller individuelle

Deplyoment Deskriptoren zusätzlich verwenden kannBspw: glassfish-ejb-jar.xml

In den Beans kann bpsw die install der Instanzen in einem Pool festgelegt werden (steady-pool-size, resize-quantity, max-pool-size, pool-idle-timeout-in-seconds)

2014-10-25

TRANSAKTIONEN

2014-10-25

Java EE Transactions

Session Beans können folgende Transaktionstypen haben:

CMT - Container Managed TransactionsDer EJB Container kümmert sich um die Transaktionen

BMT - Bean Managed TransactionsDer Entwickler kümmert sich programmatisch um die Transaktionen

Transaktionen beziehen sich letztendlich immer auf ein RDBMS (COMMIT, ROLLBACK)

2014-10-25

CMT

Business Methoden wie folgt gekennzeichnet werden:

@javax.ejbTransactionAttributeType REQUIRED (default) REQUIRES_NEW MANDATORY SUPPORTS NOT_SUPPORTED NEVER

2014-10-25

TransactionAttributeType: REQUIRED

[Quelle: Professionell Entwickeln mit Java, S. 946]

2014-10-25

TransactionAttributeType: REQUIRES_NEW

[Quelle: Professionell Entwickeln mit Java, S. 947]

2014-10-25

TransactionAttributeType: MANDATORY

[Quelle: Professionell Entwickeln mit Java, S. 947]

2014-10-25

TransactionAttributeType: SUPPORTS

[Quelle: Professionell Entwickeln mit Java, S. 948]

2014-10-25

TransactionAttributeType: NOT_SUPPORTED

[Quelle: Professionell Entwickeln mit Java, S. 948]

2014-10-25

TransactionAttributeType: NOT_NEVER

[Quelle: Professionell Entwickeln mit Java, S. 949]

2014-10-25

Java EE | Updating Multiple Databases

[Quelle: http://docs.oracle.com/javaee/7/tutorial/doc/transactions006.htm]

2014-10-25

BMT

Session Beans werden bei BMT wie folgt gekennzeichnet

@Stateless

@TransactionManagement(TransactionManagementType.BEAN)public class …

Die Transaktionen müssen mit @Resource UserTransaction behandelt werden (begin(), commit(), rollback())

2014-10-25

SESSION BEANS Stateless Session Bean (SLSB) Stateful Session Bean (SFSB) Singleton Session Bean

2014-10-25

SLSB

Zustandsloser Service SLSB bieten Callback-Methoden an

@PostConstruct, @PreDestroy SLSB werden gepoolt

ACHTUNG: Properties an der Klasse können gesetzt werden, werden allerdings beim nächsten Aufruf ggf. von einem anderen Client gelesen.

2014-10-25

ASYNCHRONUS@Asynchronous

@Asynchronous public Future<….> …. { … return new AsyncResult<…>(…); }

2014-10-25

ENDE SESSION BEANS

2014-10-25

Message Driven BeansBasics

2014-10-25

JMS und Message Driven Beans

Java Messaging System (JMS) Seit Java EE 7 JMS2.0 (Simplified JMS API) Davor: Classic JMS API

Asynchrone Nachrichtenübermittlung JMS Client kann Sender und/oder Empfänger sein JMS Provider verwaltet und routet die Nachrichten

2014-10-25

JMS – SpecReference Implementation: Open MQ (Open Message Queue)Alternative: ActiveMQ, HornetQ, Red Hat Jboss A-MQ, IBM WebSphere MQ

Konkrete Implementierung hängt vom Application Server ab!

2014-10-25

Asynchrone Kommunikation beim Messaging

[Quelle: Professionell Entwickeln mit Java, S. 971]

2014-10-25

Timer-Service

2014-10-25

Timer programmieren

@Resource TimerService timerService @Timeout timerService.createTimer timerService.getTimers().get( ).cancel()

2014-10-25

Zeitplangesteuerter Timer

@Schedule(hour=„7“, „dayOfWeek=„*“)

2014-10-25

Web ServicesJAX-WS

2014-10-25

top related