Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java EE - FHWS 2014 - 5 EJB

667 views

Published on

Java EE - FHWS 2014 - 5 EJB

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×