O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Workshop Java EE 7, 2nd Edition

Book Description

Dieses Arbeitsbuch bietet eine praktische Einführung in die Entwicklung von Business-Anwendungen mit Java EE 7. Schrittweise erstellen Sie eine Beispielanwendung auf Grundlage des Web Profile und lernen dabei alle wichtigen Technologien und Konzepte von Java EE 7 kennen, u.a.: JavaServer Faces, Managed Beans, CDI und EJB Lite, JPA sowie Internationalisierung, Resource Library Contracts, Interceptors, Transaktionen, Timer und Security.Nach der erfolgreichen Lektüre sind Sie in der Lage, Java-EE-7-Anwendungen von Grund auf zu entwickeln und auf einem Anwendungsserver zu verteilen.

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Inhaltsübersicht
  5. Inhaltsverzeichnis
  6. 1 Ein Einstieg mit Profil
    1. 1.1 Java EE 7 – der Standard für Enterprise Java
      1. 1.1.1 Struktur einer Enterprise-Java-Anwendung
      2. 1.1.2 Die Java Enterprise Edition (Java EE)
      3. 1.1.3 Anatomie einer Java-EE-Anwendung
    2. 1.2 Die Komponentenarchitektur von Java EE 7
      1. 1.2.1 Die Komponenten der Webschicht
      2. 1.2.2 CDI – ein Komponententyp mit viel Potenzial
      3. 1.2.3 Enterprise JavaBeans
      4. 1.2.4 Java Persistence API (JPA)
      5. 1.2.5 Die Java-EE-Profile
      6. 1.2.6 Und ab geht’s auf den Applikationsserver!
    3. 1.3 Die Zielarchitektur
    4. 1.4 Wie geht es jetzt weiter?
    5. 1.5 Weiterführende Literatur
  7. 2 Aufsetzen der Entwicklungsumgebung
    1. 2.1 Werkzeuge und Server für Java EE
    2. 2.2 Installation der nötigen Softwarepakete
      1. 2.2.1 Installation von Java SE 8
      2. 2.2.2 Installation von Maven 3
      3. 2.2.3 Installation von WildFly 8.1.0
    3. 2.3 Vom Projekt zur ausgeführten Webanwendung
      1. 2.3.1 Anlegen eines leeren Java-EE-7-Webprojektes mit Maven
      2. 2.3.2 Der erste Build und das erste Deployment
      3. 2.3.3 Test des Deployments
    4. 2.4 Eclipse Luna – Mehr als ein Texteditor
      1. 2.4.1 Installation von Eclipse
      2. 2.4.2 Eclipse-Plug-in m2e
      3. 2.4.3 Import von Maven-Projekten
      4. 2.4.4 Das Deployment
    5. 2.5 Weitere Werkzeuge des Workshops
    6. 2.6 Weiterführende Literatur
  8. 3 Fachlichkeit der Beispielanwendungen »My-Aktion« und »My-Aktion-Monitor«
    1. 3.1 Einleitung
    2. 3.2 Übersicht der Anwendungsfälle
    3. 3.3 Fachklassen
    4. 3.4 Anwendungsfälle
      1. 3.4.1 Anmeldung notwendig
      2. 3.4.2 Aktionen anzeigen und bearbeiten
      3. 3.4.3 Spendenformular bearbeiten
      4. 3.4.4 Spendenliste anzeigen
      5. 3.4.5 Aktion bearbeiten
      6. 3.4.6 Aktion löschen
      7. 3.4.7 Neue Aktion anlegen
      8. 3.4.8 Aktionsdaten editieren
      9. 3.4.9 Geld spenden
      10. 3.4.10 Reduzierte Spendenliste anzeigen
    5. 3.5 Weiterführende Literatur
  9. 4 Iteration Nr. 1 – JavaServer Faces
    1. 4.1 Einleitung
    2. 4.2 Fachklassen als JavaBeans
      1. 4.2.1 Konto
      2. 4.2.2 Spende
      3. 4.2.3 Aktion
    3. 4.3 Internationalisierung
    4. 4.4 Das Vorlagensystem
      1. 4.4.1 Templating mit Facelets
      2. 4.4.2 Ein Template für My-Aktion
      3. 4.4.3 Resource Library Contracts
    5. 4.5 Der Anwendungsfall »Aktionen anzeigen und bearbeiten«
      1. 4.5.1 Die Backing Beans
      2. 4.5.2 JSF-Technologien für den ersten Anwendungsfall
      3. 4.5.3 Unsere erste View!
      4. 4.5.4 Der Start – ein erster Meilenstein
    6. 4.6 Weitere JSF- und Java-EE-Technologien
      1. 4.6.1 @Inject-Annotation
      2. 4.6.2 Texteingabe mit Validierung, Konvertierung und Fehlermeldungen
      3. 4.6.3 Das Rasterlayout von UI-Komponenten
      4. 4.6.4 Auswahlkomponenten
      5. 4.6.5 Die GET-Parameterverarbeitung in einer View
      6. 4.6.6 Ajax – Etwas mehr Dynamik gefällig?
      7. 4.6.7 HTML5 Friendly Markup
    7. 4.7 Die Implementierung der restlichen Anwendungsfälle
      1. 4.7.1 Aktion bearbeiten und Aktion neu anlegen
      2. 4.7.2 Spendenliste anzeigen
      3. 4.7.3 Spendenformular bearbeiten
      4. 4.7.4 Geld spenden
    8. 4.8 Neue Funktionalitäten in Java EE 7
      1. 4.8.1 Faces Flows
      2. 4.8.2 Stateless Views
    9. 4.9 Exkurs: PrimeFaces
      1. 4.9.1 Installation über Maven
      2. 4.9.2 Neue Farbauswahl für die Bearbeitung des Spendenformulars
      3. 4.9.3 Tabs für das Anlegen und Editieren von Aktionsdaten
      4. 4.9.4 Der Bestätigungsdialog für den Anwendungsfall »Aktion löschen«
    10. 4.10 Aufgaben
      1. 4.10.1 Verwendung von PrimeFaces-Komponenten für alle Views (Pflichtaufgabe)
      2. 4.10.2 Lokalisierung der Schaltfläche »Update URL«
      3. 4.10.3 Durchgängige Verwendung von Inline-Labels
      4. 4.10.4 Auslagerung der Eigenschaften des Spendenformulars
    11. 4.11 Weiterführende Literatur
  10. 5 Iteration Nr. 2 – Funktionale Tests
    1. 5.1 Einleitung
    2. 5.2 Testframeworks Arquillian und Graphene konfigurieren
    3. 5.3 Wiederwendbare Klassen erstellen
      1. 5.3.1 Testdaten für Aktionen und Spenden bereitstellen
      2. 5.3.2 Anwendung My-Aktion mit Arquillian deployen
      3. 5.3.3 Webseiten mit Graphene steuern
    4. 5.4 Anwendungsfälle testen
      1. 5.4.1 Den Anwendungsfall »Neue Aktion anlegen« testen
      2. 5.4.2 Den Anwendungsfall »Geld spenden« testen
    5. 5.5 Aufgaben
      1. 5.5.1 SetupDatabase erweitern
      2. 5.5.2 Testfall für bisher gespendeten Betrag hinzufügen
      3. 5.5.3 Weitere Testfälle erstellen
    6. 5.6 Literaturverzeichnis
  11. 6 Iteration Nr. 3 – CDI
    1. 6.1 Warum CDI?
    2. 6.2 Der Laufzeit-Container
      1. 6.2.1 Der Sichtbarkeitsbereich (Scope) einer Bean
        1. 6.2.1.1 RequestScope
        2. 6.2.1.2 SessionScope
        3. 6.2.1.3 ViewScope
        4. 6.2.1.4 DependentScope
        5. 6.2.1.5 Setzen der Scopes für unsere Anwendung
      2. 6.2.2 Beans referenzieren über Dependency Injection
      3. 6.2.3 Der Lebenszyklus
        1. 6.2.3.1 Lebenszyklusmethode PostConstruct
        2. 6.2.3.2 Lebenszyklusmethode PreDestroy
      4. 6.2.4 Beliebige Klassen als Beans mit Producer-Methoden
    3. 6.3 Anwendungsweite Nachrichten
      1. 6.3.1 Events senden und empfangen
      2. 6.3.2 Nachrichten gleichen Typs mit Qualifiern unterscheiden
    4. 6.4 Services
      1. 6.4.1 Die Mock-Methode in eine Serviceklasse auslagern
      2. 6.4.2 Die verwendete Serviceimplementierung mit Qualifiern auswählen
    5. 6.5 Was noch nicht behandelt wurde
      1. 6.5.1 ApplicationScope und ConversationScope
      2. 6.5.2 Der FlowScope
      3. 6.5.3 Interzeptoren und Dekoratoren
      4. 6.5.4 Stereotypes
      5. 6.5.5 Der BeanManager
      6. 6.5.6 Erweiterungen
      7. 6.5.7 Disposer-Methoden
    6. 6.6 Aufgaben
      1. 6.6.1 Fachliches und technisches Log unterscheiden
      2. 6.6.2 Nachricht zur Aktualisierung einer Aktion hinzufügen
    7. 6.7 Weiterführende Literatur
  12. 7 Iteration Nr. 4 – Java Persistence API
    1. 7.1 Einleitung
    2. 7.2 Entitäten annotieren
      1. 7.2.1 Als Entität markieren und Primärschlüssel festlegen
      2. 7.2.2 Relationen der Entitäten festlegen
      3. 7.2.3 Abhängige Entitäten einbinden
    3. 7.3 Services um Datenzugriffe erweitern
      1. 7.3.1 EntityManager einbinden
      2. 7.3.2 Datenbankabfragen hinzufügen
      3. 7.3.3 CRUD-Operationen ausführen
      4. 7.3.4 CampaignListProducer um Servicedelegation erweitern
    4. 7.4 Daten transaktional speichern
      1. 7.4.1 Datenquelle konfigurieren
      2. 7.4.2 Services um Transaktionen erweitern
    5. 7.5 Spenden persistieren und anzeigen
      1. 7.5.1 Service zur Bearbeitung von Spenden erstellen
      2. 7.5.2 Anwendungsfall Geld spenden finalisieren
      3. 7.5.3 Den bisher gespendeten Betrag berechnen
      4. 7.5.4 Spenden in der Spendenliste anzeigen
    6. 7.6 Eingaben über Bean Validation überprüfen
      1. 7.6.1 Entitäten mit Bedingungen annotieren
      2. 7.6.2 Validatoren aus Views entfernen
      3. 7.6.3 Zugeordnete Spenden beim Löschen einer Aktion automatisch entfernen
    7. 7.7 Eigene In-Memory-Datasource für Tests benutzen
    8. 7.8 Was noch nicht behandelt wurde
      1. 7.8.1 CriteriaQuery als Alternative zur NamedQuery
      2. 7.8.2 LazyInitialisationException über FetchType vermeiden
      3. 7.8.3 Object Locking
        1. 7.8.3.1 Optimistische Sperre
        2. 7.8.3.2 Pessimistischen Sperre
      4. 7.8.4 Lebenszyklusmethoden bei Zustandsänderungen
    9. 7.9 Neue Funktionalitäten in Java EE 7
      1. 7.9.1 Bean Validation auf Methodenebene
      2. 7.9.2 Erweiterte CDI-Unterstützung
      3. 7.9.3 Aufruf gespeicherter Prozeduren und Funktionen
      4. 7.9.4 Schreibende Massenoperationen mit der Criteria API
    10. 7.10 Zusammenfassung
      1. 7.11 Aufgaben
      2. 7.11.1 JPQL-Abfragen mit Criteria API ersetzen
      3. 7.11.2 Zeitstempel der Aktualisierung hinzufügen
      4. 7.11.3 Minimalen Spendenbetrag der Aktion überprüfen
      5. 7.11.4 Organisator über Spendenziel informieren
    11. 7.12 Weiterführende Literatur
  13. 8 Iteration Nr. 4 – Enterprise JavaBeans
    1. 8.1 Einleitung
    2. 8.2 Sicherheit
      1. 8.2.1 Organisatoren speichern
      2. 8.2.2 Security-Domain für WildFly anlegen
      3. 8.2.3 Benutzeroberfläche absichern
      4. 8.2.4 Eigene Aktionen für jeden Organisator
      5. 8.2.5 Services über Annotationen absichern
      6. 8.2.6 Mehr Sicherheit durch SSL
      7. 8.2.7 Eigenen Anmeldebildschirm festlegen
      8. 8.2.8 Automatisches Login für die Tests
    3. 8.3 Transaktionssteuerung
      1. 8.3.1 Transaktionssteuerung durch den Container
      2. 8.3.2 Transaktionssteuerung über die Bean
      3. 8.3.3 Transaktionssteuerung über Interzeptoren
    4. 8.4 Zeitgesteuerte Abläufe realisieren
      1. 8.4.1 Spenden überweisen
      2. 8.4.2 Hintergrundjob zeitlich gesteuert aufrufen
    5. 8.5 Vergleich EJBs und CDI
      1. 8.5.1 Unterschiedlicher Lebenszyklus
      2. 8.5.2 Vorteile der jeweiligen Technologie
    6. 8.6 Was nicht behandelt wurde
      1. 8.6.1 Stateful Session Beans
      2. 8.6.2 Entfernter Methodenaufruf
      3. 8.6.3 Nebenläufigkeit
      4. 8.6.4 Asynchroner Methodenaufruf
      5. 8.6.5 Message-Driven Beans
      6. 8.6.6 Entity Beans
    7. 8.7 Aufgaben
      1. 8.7.1 Registrierungsformular für Organisatoren erstellen
      2. 8.7.2 Services auf CDI umstellen
      3. 8.7.3 Ausführungszeit einer Methode messen
    8. 8.8 Weiterführende Literatur
  14. 9 Iteration Nr. 5 – Kommunikation und HTML5
    1. 9.1 Einleitung
    2. 9.2 Neue Technologien
      1. 9.2.1 Webservices
      2. 9.2.2 WebSockets
    3. 9.3 Kommunikationsarchitektur
    4. 9.4 REST-Webservice-Schnittstelle für My-Aktion
      1. 9.4.1 REST-Webservice für das Management von Aktionen
        1. 9.4.1.1 Liste aller Aktionen eines Organisators abfragen
        2. 9.4.1.2 Aktion löschen
        3. 9.4.1.3 Neue Aktion hinzufügen
        4. 9.4.1.4 Aktion aktualisieren
      2. 9.4.2 REST-Webservice zur Abfrage und Ausführung von Spenden
        1. 9.4.2.1 Spendenliste einer Aktion abfragen
        2. 9.4.2.2 Geld spenden
    5. 9.5 Die Webapplikation My-Aktion-Monitor
      1. 9.5.1 Anwendungsserver Glassfish installieren
      2. 9.5.2 Bestandteile der Anwendung My-Aktion-Monitor
        1. 9.5.2.1 Spendenliste einer Aktion anzeigen
        2. 9.5.2.2 SOAP-Webservice für My-Aktion-Monitor erstellen
        3. 9.5.2.3 SOAP-Webservice testen
        4. 9.5.2.4 Spendenliste über SOAP aktualisieren
    6. 9.6 Nicht behandelt
      1. 9.6.1 JMS
      2. 9.6.2 Java Mail
      3. 9.6.3 JMX
    7. 9.7 Aufgaben
      1. 9.7.1 Erweiterung der REST-Services um XML
      2. 9.7.2 Eigenen REST-Client erstellen
    8. 9.8 Literaturverzeichnis
  15. 10 Java EE 7 und die Cloud
    1. 10.1 Einleitung
    2. 10.2 Was ist eine Cloud?
      1. 10.2.1 Standardisierungsbedarf für Java-EE-Cloud-Szenarien
    3. 10.3 My-Aktion in OpenShift installieren
      1. 10.3.1 Zugang für OpenShift anlegen
      2. 10.3.2 Notwendige Werkzeuge installieren
      3. 10.3.3 Neue Anwendung in OpenShift anlegen
      4. 10.3.4 My-Aktion in OpenShift deployen
      5. 10.3.5 Anpassungen für OpenShift vornehmen
    4. 10.4 Literaturverzeichnis
  16. A Anhang
    1. A.1 Vom Servlet zu JSF mit CDI und EJB
      1. A.1.1 Ein paar Hinweise vorweg
      2. A.1.2 Java Servlets
      3. A.1.3 JavaServer Pages und JavaBeans
      4. A.1.4 JavaServer Faces und JSF Managed Beans
      5. A.1.5 JavaServer Faces und CDI
      6. A.1.6 JSF, CDI und Enterprise JavaBeans
    2. A.2 My-Aktion und My-Aktion-Monitor auf GitHub
      1. A.2.1 Git installieren
      2. A.2.2 Git-Repository des Workshops verwenden
      3. A.2.3 Literatur zu Git
  17. Index
  18. Fußnoten