Tech Talk Anwendung von Java Enterprise Edition   Markus Kunde (SC-VK) Köln, 18.11.2008
Inhalt Historie Was ist JEE? Schematischer Aufbau und Funktionsweise Einsatzmöglichkeiten Enterprise Java Beans Persistenz Erwähnenswertes Demo
Historie http://de.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition  (07.11.2008) 11. Mai 2006 5 24. November 2003 1.4 24. September 2001 1.3 23. Mai 2000 1.2.1 2000 1.2 Dezember 1999 1.0 Veröffentlichungsdatum Version
Was ist JEE? J ava Platform  E nterprise  E dition (früher J2EE) Spezifikation einer Software Architektur Benötigt als Laufzeitumgebung einen JEE Application Server Modularer Aufbau, gut skalierbar, fehlertolerant, verteilt einsetzbar, mehrschichtig Größter Konkurrent: .Net Plattform von Microsoft Definiert über die Spezifikation (API) EJB (Enterprise Java Beans) Servlets JSP (Java Server Pages) JSTL (JSP Standard Tag Library) JSF (Java Server Faces) JMS (Java Message Service) Java Transaction Java Mail JDBC (Java Database Connectivity) JPA (Java Persistence API) JNDI (Java Naming & Directory Interface) JAAS (Java Authentication & Authorization Service) … .
Schematischer Aufbau http://java.sun.com/javaee/5/docs/tutorial/doc/bnaay.html  (07.11.2008)
Einsatzmöglichkeiten Situationen, die ein Indikator für den Einsatz sind: Business Transaktionen Verteilte Funktionalität Portable Komponenten Asynchroner Nachrichtenaustausch Berechtigungsrollen Persistenzkontext Management Kein Einsatz in Situationen, wo: Applikationen die Threadkontrolle benötigen Hohe Performance ein hartes Kriterium ist Datenbank „babysitting“
Enterprise Java Beans (3.0) Session Beans Management von vielfältigen Aufgaben Stateful oder Stateless Message-Driven Beans Abonnieren/ Hören auf Nachrichten Reagieren durch Prozessierung asynchroner Nachrichten aus Systemen wie JMS, Legacy Systemen, Web Services Interfaces Remote Local  (Aktion findet in der selben JVM statt) Endpoint (via SOAP) Technisch Proxy/Stub Manager: EJB Container Kein persistenten Zustand; Aktivität ist transient http://www.volkskunstshop.com/figurkerzen-kaffeebohnen-stueck-p-10927.html  (13.11.2008)
Message Driven Beans – Java Message Service  Ansatz JMS ist eine Anbieter-neutrale API zum Zugriff auf Enterprise Messaging Systeme EJB 3.0 Anbieter müssen einen JMS Provider anbieten Producer/Consumer Prinzip Zwei Modelle Point-To-Point (Queue) Publish/Subscribe (Topic) Fünf Nachrichten-Typen MapMessage (Name/Wert Paare) BytesMessage (Byte Daten) ObjectMessage (Serialisierbare Objekte) StreamMessage (Stream von Objekten) TextMessage (String) Achknowledgements AUTO_ACKNOWLEDGE; CLIENT_ACKNOWLEDGE; DUPS_OK_ACKNOWLEDGE
EJB Life Cycle Beispiel: Stateful Session Bean Existiert nicht Bereit Passiv 1. Create 2. Dependency Injection 3. PostConstruct callback 4. Init method (or ejbCreate<METHOD>) PrePassive callback 1. Remove 2. PreDestroy callback PrePassive callback
EJB Container Aufgabe Vorhaltung von diversen Bean Instanzen Management Bean Instanzen Security Transaktionen Lebenszyklus der Bean Instanz Routing vom Proxy zur richtigen Bean Instanz Verhalten kommt auf den Bean Typ an
EJB Container Stateless Session Bean O‘Reilly Enterprise Java Beans 3.0, 5th edition, ISBN: 0-596-00978-X Stateful Session Bean
Entity Beans (EJB 3 Entity) - Java Persistence API Sind Pojos Modellieren reale Welt Objekte Erhalten einen Primärschlüssel (Klasse/primitiver Typ) Management von einem sog. Persistence Service Managed (attached) oder Unmanaged (detached) http://www.idsa.org/idea/idea2005/images/105-B-FlatOut.jpg  (13.11.2008) (früher andere Bedeutung!)
Entity Manager Zentraler Service für alle Persistenzaktionen Manager für OR-Mapping API für Erstellung von Abfragen Finden von Objekten Objektsynchronisierung Manipulation von Objekten Persistence Context Sammlung aller gemanagten Entitiy Objekt Instanzen Persistence Unit Sammlung der Klassen, die zu einer bestimmten Datenbank gemappt weden
Primärschlüssel Primärtypen/ Composite Keys @IdClass Annotation der Primärschlüsselklasse @Id Annoation der zugrunde liegenden Klasse Wird benötigt zur Interaktion mit dem Entity Manager Interface „Serializable“ muss implementiert sind Standardkonstruktor muss vorhanden sein Überschreiben der Methoden „hashCode()“ und „equals()“ „ Autogeneration“-Funktion wird nicht für Composity Keys angeboten http://media.volblog.at/13714/20080206-schluessel.jpg  (13.11.2008)
Entity Relationships 7 Relationship-Typen 4 Kardinalitäten-Typen OneToOne OneToMany  [Implementierung mit Generics] many-to-one many-to-many Unidirektional oder Bidirektional Unidirektional @OneToOne{CascadeType.All} Bidirektional  @OneToOne  [Owner-Side]   @OneToOne(mappedBy=„ Klasse “)  2*4=8? many-to-one and one-to-many Bidirektional ist das Gleiche ;-) Aufpassen auf Nebeneffekte:  Beide Seiten sind verknüpft!
Annotationen, Dependency Injection, Reflection, Interceptors, Transaktionen, … Annotationen Hinzufügen von Metadaten zum Source Code Hinzufügen dynamischer Attribute zu Klassen, Interfaces, Felder, Methoden  (@TARGET) Verfügbar zu Kompilierzeit/Laufzeit  (@RETENTION) Dependency Injection Container managt die Instantiierung und Initialisierung der Ressource Reflection Untersuchung von Klassen, Instanzen oder Methoden zur Laufzeit (z.B. Sichtbarkeit ändern, Zugriff auf Methoden, etc.) Interceptors Unterbrechung von Methodenaufrufen bzw. Anhängen an den EJB Lebenszyklus Kapselung von Verhalten (Trennung Businesslogik und technische Aspekte) „ Separation of Concerns“ (z.B. Logging, Profiling, Authorization) Transaktionen ACID-konform (atomic, consistent, isolated, durable) Server besitzt einen Transaktionsmanager
Aus Entwicklersicht Serverprogrammierung wird versteckt Datenbank Management wird versteckt Starke Fokussierung auf Businesslogik Einmalig größerer Konfigurationsaufwand
Demo https://duke.dev.java.net/images/glassfish/GlassFishMedium.jpg  (07.11.2008)
Weitere Informationen Sehr gutes Buch über Enterprise Java Beans O‘Reilly: Enterprise Java Beans 3.0; ISBN: 0-596-00978-X Java EE im Allgemeinen http://java.sun.com/javaee/5/docs/tutorial/doc/index.html Glossar mit vielen Begriffen http://www.objects-at-work.de/pmwiki/EJBGlossar/HomePage
Vielen Dank http://itmanagement.earthweb.com/img/2008/04/java-guy.jpg (13.11.2008)

Anwendung von Java Enterprise Edition (J2EE)

  • 1.
    Tech Talk Anwendungvon Java Enterprise Edition Markus Kunde (SC-VK) Köln, 18.11.2008
  • 2.
    Inhalt Historie Wasist JEE? Schematischer Aufbau und Funktionsweise Einsatzmöglichkeiten Enterprise Java Beans Persistenz Erwähnenswertes Demo
  • 3.
    Historie http://de.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition (07.11.2008) 11. Mai 2006 5 24. November 2003 1.4 24. September 2001 1.3 23. Mai 2000 1.2.1 2000 1.2 Dezember 1999 1.0 Veröffentlichungsdatum Version
  • 4.
    Was ist JEE?J ava Platform E nterprise E dition (früher J2EE) Spezifikation einer Software Architektur Benötigt als Laufzeitumgebung einen JEE Application Server Modularer Aufbau, gut skalierbar, fehlertolerant, verteilt einsetzbar, mehrschichtig Größter Konkurrent: .Net Plattform von Microsoft Definiert über die Spezifikation (API) EJB (Enterprise Java Beans) Servlets JSP (Java Server Pages) JSTL (JSP Standard Tag Library) JSF (Java Server Faces) JMS (Java Message Service) Java Transaction Java Mail JDBC (Java Database Connectivity) JPA (Java Persistence API) JNDI (Java Naming & Directory Interface) JAAS (Java Authentication & Authorization Service) … .
  • 5.
  • 6.
    Einsatzmöglichkeiten Situationen, dieein Indikator für den Einsatz sind: Business Transaktionen Verteilte Funktionalität Portable Komponenten Asynchroner Nachrichtenaustausch Berechtigungsrollen Persistenzkontext Management Kein Einsatz in Situationen, wo: Applikationen die Threadkontrolle benötigen Hohe Performance ein hartes Kriterium ist Datenbank „babysitting“
  • 7.
    Enterprise Java Beans(3.0) Session Beans Management von vielfältigen Aufgaben Stateful oder Stateless Message-Driven Beans Abonnieren/ Hören auf Nachrichten Reagieren durch Prozessierung asynchroner Nachrichten aus Systemen wie JMS, Legacy Systemen, Web Services Interfaces Remote Local (Aktion findet in der selben JVM statt) Endpoint (via SOAP) Technisch Proxy/Stub Manager: EJB Container Kein persistenten Zustand; Aktivität ist transient http://www.volkskunstshop.com/figurkerzen-kaffeebohnen-stueck-p-10927.html (13.11.2008)
  • 8.
    Message Driven Beans– Java Message Service Ansatz JMS ist eine Anbieter-neutrale API zum Zugriff auf Enterprise Messaging Systeme EJB 3.0 Anbieter müssen einen JMS Provider anbieten Producer/Consumer Prinzip Zwei Modelle Point-To-Point (Queue) Publish/Subscribe (Topic) Fünf Nachrichten-Typen MapMessage (Name/Wert Paare) BytesMessage (Byte Daten) ObjectMessage (Serialisierbare Objekte) StreamMessage (Stream von Objekten) TextMessage (String) Achknowledgements AUTO_ACKNOWLEDGE; CLIENT_ACKNOWLEDGE; DUPS_OK_ACKNOWLEDGE
  • 9.
    EJB Life CycleBeispiel: Stateful Session Bean Existiert nicht Bereit Passiv 1. Create 2. Dependency Injection 3. PostConstruct callback 4. Init method (or ejbCreate<METHOD>) PrePassive callback 1. Remove 2. PreDestroy callback PrePassive callback
  • 10.
    EJB Container AufgabeVorhaltung von diversen Bean Instanzen Management Bean Instanzen Security Transaktionen Lebenszyklus der Bean Instanz Routing vom Proxy zur richtigen Bean Instanz Verhalten kommt auf den Bean Typ an
  • 11.
    EJB Container StatelessSession Bean O‘Reilly Enterprise Java Beans 3.0, 5th edition, ISBN: 0-596-00978-X Stateful Session Bean
  • 12.
    Entity Beans (EJB3 Entity) - Java Persistence API Sind Pojos Modellieren reale Welt Objekte Erhalten einen Primärschlüssel (Klasse/primitiver Typ) Management von einem sog. Persistence Service Managed (attached) oder Unmanaged (detached) http://www.idsa.org/idea/idea2005/images/105-B-FlatOut.jpg (13.11.2008) (früher andere Bedeutung!)
  • 13.
    Entity Manager ZentralerService für alle Persistenzaktionen Manager für OR-Mapping API für Erstellung von Abfragen Finden von Objekten Objektsynchronisierung Manipulation von Objekten Persistence Context Sammlung aller gemanagten Entitiy Objekt Instanzen Persistence Unit Sammlung der Klassen, die zu einer bestimmten Datenbank gemappt weden
  • 14.
    Primärschlüssel Primärtypen/ CompositeKeys @IdClass Annotation der Primärschlüsselklasse @Id Annoation der zugrunde liegenden Klasse Wird benötigt zur Interaktion mit dem Entity Manager Interface „Serializable“ muss implementiert sind Standardkonstruktor muss vorhanden sein Überschreiben der Methoden „hashCode()“ und „equals()“ „ Autogeneration“-Funktion wird nicht für Composity Keys angeboten http://media.volblog.at/13714/20080206-schluessel.jpg (13.11.2008)
  • 15.
    Entity Relationships 7Relationship-Typen 4 Kardinalitäten-Typen OneToOne OneToMany [Implementierung mit Generics] many-to-one many-to-many Unidirektional oder Bidirektional Unidirektional @OneToOne{CascadeType.All} Bidirektional @OneToOne [Owner-Side] @OneToOne(mappedBy=„ Klasse “) 2*4=8? many-to-one and one-to-many Bidirektional ist das Gleiche ;-) Aufpassen auf Nebeneffekte: Beide Seiten sind verknüpft!
  • 16.
    Annotationen, Dependency Injection,Reflection, Interceptors, Transaktionen, … Annotationen Hinzufügen von Metadaten zum Source Code Hinzufügen dynamischer Attribute zu Klassen, Interfaces, Felder, Methoden (@TARGET) Verfügbar zu Kompilierzeit/Laufzeit (@RETENTION) Dependency Injection Container managt die Instantiierung und Initialisierung der Ressource Reflection Untersuchung von Klassen, Instanzen oder Methoden zur Laufzeit (z.B. Sichtbarkeit ändern, Zugriff auf Methoden, etc.) Interceptors Unterbrechung von Methodenaufrufen bzw. Anhängen an den EJB Lebenszyklus Kapselung von Verhalten (Trennung Businesslogik und technische Aspekte) „ Separation of Concerns“ (z.B. Logging, Profiling, Authorization) Transaktionen ACID-konform (atomic, consistent, isolated, durable) Server besitzt einen Transaktionsmanager
  • 17.
    Aus Entwicklersicht Serverprogrammierungwird versteckt Datenbank Management wird versteckt Starke Fokussierung auf Businesslogik Einmalig größerer Konfigurationsaufwand
  • 18.
  • 19.
    Weitere Informationen Sehrgutes Buch über Enterprise Java Beans O‘Reilly: Enterprise Java Beans 3.0; ISBN: 0-596-00978-X Java EE im Allgemeinen http://java.sun.com/javaee/5/docs/tutorial/doc/index.html Glossar mit vielen Begriffen http://www.objects-at-work.de/pmwiki/EJBGlossar/HomePage
  • 20.