Java EE 
Full Stack for Business Applications 
 Enterprise Java Beans 
Referent: MATTHIAS REINING 
Technical Manager Insurance at RGI Deutschland GmbH 
blog: http://blog.matthias-reining.com 
t...
ENTEPRISE JAVA BEANS
BESTANDSAUFNAHME 
Wer hat mit EJBs bisher gearbeiet?
DAS PROGRAMM 
 Die Spec 
 Idee, Historie 
 Der App Server 
 Containerkonzept 
 Paketierung (JAR, WAR, EAR) 
 Marktüb...
Java EE 
Low-Level-Technologien 
 Servlets 
 JSP 
 JDBC 
High-Level-Technologien 
 JSF 
 JPA
Was gibt‘s noch? 
„Eigentlich“ geht schon alles…
Enterprise Java Beans 
 Session Beans 
 Message Driven Beans
Enterprise Java Beans 
Enterprise JavaBeans (EJB) sind standardisierte Komponenten 
innerhalb eines Java-EE-Servers (Java ...
Enterprise Java Beans Technology 
Enterprise JavaBeans (EJB) technology is the server-side 
component architecture for Jav...
Session Beans 
Basics
4-Tier-Architecture 
Quelle: http://docs.oracle.com/javaee/6/tutorial/doc/geysj.html
ANFORDERUNGEN 
[Ursprünglich] 
 Interoperabilität mit Standalone-Anwendungen und Systemen, die 
nicht auf der Java-Plattf...
Umgangssprachlich werden 
Session Beans oft als EJBs 
bezeichnet
Historie 
 Session Beans waren von Anfang an Bestandteil des Java EE Standards 
 „Entfernte Zugriffe“ sollten über CORBA...
Was ist ein Session Bean? 
 Java Klasse im „Backend“ einer Unternehmensanwendung 
 Bindeglied zwischen Frontend und Zugr...
Namenskonventionen 
Übliche Empfehlung 
Register 
 RegisterBean oder RegisterEJB 
für die SLSB Klasse 
 Interface Regist...
Business Methoden von Session Beans 
Regeln: 
 Muss public sein 
 Darf nicht final oder static sein 
 Darf nicht mit ej...
Business Methoden von Session Beans 
 Meist werden in Business Methoden die Geschäftsdaten gespeichert 
 Hierbei kommt J...
REMOTE und LOCAL CALLS
REMOTE CALL 
 Aufruf aus einer externen JVM (Standalone Applikation, bspw. Java Swing GUI) 
 Java EE definiert hierfür z...
REMOTE CALL 
[Quelle: Professionel Entwickeln mit Java, S. 907]
CLIENT VIEW 
 Die Client View ist eine Art Interceptor und Proxy für den Session Bean 
 Die Client View ist ein Abbild d...
LOCAL CALL 
 Aufrufer aus dem WEB-Container oder EJB-Container der gleichen 
JVM 
 Das Gesamtsystem darf keine Rechner-F...
LOCAL CALLS 
[Quelle: Professionell Entwickeln mit Java, S. 908]
REMOTE oder LOCAL ? 
 Standalone Client, immer REMOTE 
Web-Container Client, meist LOCAL 
 Falls allerdings eine Server...
BUSINESS INTERFACE 
Interface für 
 Remote Call 
Kennzeichnung @Remote am Interface oder direkt in der Session Bean mit d...
DEPLOYMENT DESKRIPTOREN 
 ejb-jar.xml alternativ zu den Annotations 
 XML überschreibt immer die Annotations 
 Individu...
TRANSAKTIONEN
Java EE Transactions 
Session Beans können folgende Transaktionstypen haben: 
 CMT - Container Managed Transactions 
Der ...
CMT 
Business Methoden wie folgt gekennzeichnet werden: 
@javax.ejbTransactionAttributeType 
 REQUIRED (default) 
 REQUI...
TransactionAttributeType: REQUIRED 
[Quelle: Professionell Entwickeln mit Java, S. 946]
TransactionAttributeType: REQUIRES_NEW 
[Quelle: Professionell Entwickeln mit Java, S. 947]
TransactionAttributeType: MANDATORY 
[Quelle: Professionell Entwickeln mit Java, S. 947]
TransactionAttributeType: SUPPORTS 
[Quelle: Professionell Entwickeln mit Java, S. 948]
TransactionAttributeType: NOT_SUPPORTED 
[Quelle: Professionell Entwickeln mit Java, S. 948]
TransactionAttributeType: NOT_NEVER 
[Quelle: Professionell Entwickeln mit Java, S. 949]
Java EE | Updating Multiple Databases 
[Quelle: http://docs.oracle.com/javaee/7/tutorial/doc/transactions006.htm]
BMT 
Session Beans werden bei BMT wie folgt gekennzeichnet 
@Stateless 
@TransactionManagement(TransactionManagementType.B...
SESSION BEANS 
 Stateless Session Bean (SLSB) 
 Stateful Session Bean (SFSB) 
 Singleton Session Bean
SLSB 
 Zustandsloser Service 
 SLSB bieten Callback-Methoden an 
@PostConstruct, @PreDestroy 
 SLSB werden gepoolt 
 A...
ASYNCHRONUS 
@Asynchronous 
@Asynchronous public Future<….> …. { … return new AsyncResult<…>(…); }
ENDE SESSION BEANS
Message Driven Beans 
Basics
JMS und Message Driven Beans 
 Java Messaging System (JMS) 
 Seit Java EE 7 JMS2.0 (Simplified JMS API) 
 Davor: Classi...
JMS – Spec 
Reference Implementation: Open MQ (Open Message Queue) 
Alternative: ActiveMQ, HornetQ, Red Hat Jboss A-MQ, IB...
Asynchrone Kommunikation beim Messaging 
[Quelle: Professionell Entwickeln mit Java, S. 971]
Timer-Service
Timer programmieren 
 @Resource TimerService timerService 
 @Timeout 
 timerService.createTimer 
 timerService.getTime...
Zeitplangesteuerter Timer 
 @Schedule(hour=„7“, „dayOfWeek=„*“)
Web Services 
JAX-WS
Nächste SlideShare
Wird geladen in …5
×

Java EE - FHWS 2014 - 5 EJB

540 Aufrufe

Veröffentlicht am

Java EE - FHWS 2014 - 5 EJB

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
540
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
4
Aktionen
Geteilt
0
Downloads
14
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Java EE - FHWS 2014 - 5 EJB

  1. 1. Java EE Full Stack for Business Applications  Enterprise Java Beans 
  2. 2. 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
  3. 3. ENTEPRISE JAVA BEANS
  4. 4. BESTANDSAUFNAHME Wer hat mit EJBs bisher gearbeiet?
  5. 5. 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
  6. 6. Java EE Low-Level-Technologien  Servlets  JSP  JDBC High-Level-Technologien  JSF  JPA
  7. 7. Was gibt‘s noch? „Eigentlich“ geht schon alles…
  8. 8. Enterprise Java Beans  Session Beans  Message Driven Beans
  9. 9. 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]
  10. 10. 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]
  11. 11. Session Beans Basics
  12. 12. 4-Tier-Architecture Quelle: http://docs.oracle.com/javaee/6/tutorial/doc/geysj.html
  13. 13. 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]
  14. 14. Umgangssprachlich werden Session Beans oft als EJBs bezeichnet
  15. 15. 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]
  16. 16. 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)
  17. 17. Namenskonventionen Übliche Empfehlung Register  RegisterBean oder RegisterEJB für die SLSB Klasse  Interface RegisterBeanRemote / RegisterBeanLocal …. Meine Empfehlung ;-) Bei No-Inteface-Bens nur fachliche Bezeichnung
  18. 18. Business Methoden von Session Beans Regeln:  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.
  19. 19. 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
  20. 20. REMOTE und LOCAL CALLS
  21. 21. 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
  22. 22. REMOTE CALL [Quelle: Professionel Entwickeln mit Java, S. 907]
  23. 23. 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!!
  24. 24. 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
  25. 25. LOCAL CALLS [Quelle: Professionell Entwickeln mit Java, S. 908]
  26. 26. 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!
  27. 27. BUSINESS INTERFACE Interface für  Remote Call Kennzeichnung @Remote am Interface oder direkt in der Session Bean mit dem Interface als Parameter  Local Call Kennzeichnung @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
  28. 28. 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 kann Bspw: 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)
  29. 29. TRANSAKTIONEN
  30. 30. Java EE Transactions Session Beans können folgende Transaktionstypen haben:  CMT - Container Managed Transactions Der EJB Container kümmert sich um die Transaktionen  BMT - Bean Managed Transactions Der Entwickler kümmert sich programmatisch um die Transaktionen Transaktionen beziehen sich letztendlich immer auf ein RDBMS (COMMIT, ROLLBACK)
  31. 31. CMT Business Methoden wie folgt gekennzeichnet werden: @javax.ejbTransactionAttributeType  REQUIRED (default)  REQUIRES_NEW  MANDATORY  SUPPORTS  NOT_SUPPORTED  NEVER
  32. 32. TransactionAttributeType: REQUIRED [Quelle: Professionell Entwickeln mit Java, S. 946]
  33. 33. TransactionAttributeType: REQUIRES_NEW [Quelle: Professionell Entwickeln mit Java, S. 947]
  34. 34. TransactionAttributeType: MANDATORY [Quelle: Professionell Entwickeln mit Java, S. 947]
  35. 35. TransactionAttributeType: SUPPORTS [Quelle: Professionell Entwickeln mit Java, S. 948]
  36. 36. TransactionAttributeType: NOT_SUPPORTED [Quelle: Professionell Entwickeln mit Java, S. 948]
  37. 37. TransactionAttributeType: NOT_NEVER [Quelle: Professionell Entwickeln mit Java, S. 949]
  38. 38. Java EE | Updating Multiple Databases [Quelle: http://docs.oracle.com/javaee/7/tutorial/doc/transactions006.htm]
  39. 39. 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())
  40. 40. SESSION BEANS  Stateless Session Bean (SLSB)  Stateful Session Bean (SFSB)  Singleton Session Bean
  41. 41. 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.
  42. 42. ASYNCHRONUS @Asynchronous @Asynchronous public Future<….> …. { … return new AsyncResult<…>(…); }
  43. 43. ENDE SESSION BEANS
  44. 44. Message Driven Beans Basics
  45. 45. 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
  46. 46. JMS – Spec Reference 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!
  47. 47. Asynchrone Kommunikation beim Messaging [Quelle: Professionell Entwickeln mit Java, S. 971]
  48. 48. Timer-Service
  49. 49. Timer programmieren  @Resource TimerService timerService  @Timeout  timerService.createTimer  timerService.getTimers().get( ).cancel()
  50. 50. Zeitplangesteuerter Timer  @Schedule(hour=„7“, „dayOfWeek=„*“)
  51. 51. Web Services JAX-WS

×