WebApps – mit REST, JPA 2, JSF 2, AngularJS, JEE6, JEE7 auf JBoss WildFly 9

Sonntag, 13. Dezember 2015 von  
unter Fachartikel Architektur

Die Beispiel-Applikationen

Die JEE 7 Beispiel-Applikationen arbeiten mit JSF 2.2 auf Basis der Template-Technologie und ermöglichen die leichte Pflege von und die Suche nach Stammdaten bzw. Bestandsdaten durch den Admin jeder Applikation. Die Beispiel-Applikationen verwenden im Backend JPA 2 – Entities und EJB 3.x, sowie auf der Serverseite die entsprechend konfigurierte Hibernate-Version 4.3 auf dem JBoss WildFly 9.

Mit JBoss Forge werden sowohl die JSF 2.2 User Interfaces erzeugt, als auch die Angular JS GUIs der JEE 7 Beispiel-Applikationen erzeugt. Mit jeder responsiven Angular JS Applikation kann der Admin der Applikation dann auch unterwegs im Browser auf seinem Smartphone die zu pflegenden Stammdaten/-Bestandsdaten bearbeiten oder durchsuchen.

Die Verwendung und Effektivität der eingesetzten JEE-Technologien und WebFrameworks wird durch diese simplen JEE7 Beispielprojekte belegt und diese werden jeweils als .war Archive namens *.war und *-angularjs.war per Deployment auf dem die JEE7-Spezifikation vollständig implementierenden JBoss WildFly 9 Application Server zum Test zur Verfügung gestellt.

Weiterhin gibt es zwei SPAs (Single Page Applikationen) als JEE6-Beispielapplikationen, wobei auch hier eine responsive Admin-Applikation unter Verwendung von Bootstrap, Underscore, jQuery, und hier eine Grusskarten-SPA-Beispielapplikation unter Verwendung eines JSF Frontends zum Test zur Verfügung stehen.

Da alle JEE-Beispielapplikationen unter Verwendung von HTML5 und CSS3, sowie JavaScript-Frameworks bzw. XHTML und der JSTL entwickelt wurden, gibt es ebenfalls eine responsive HTML5, CSS3, jQuery, JSON, GoogleMaps-Beispielapplikation, die auf einem simplen Apache WebServer läuft. Hier alle Beispiel-Applikationen des Jahres 2015 zusammengestellt auf einem Linux Server.

TDD der Beispiel Applikationen

Wie zusätzliche Selenium-Tests mit dem Selenium FireFox-PlugIn durchgeführt und diese Tests gespeichert werden können, ist bereits in diesem Blog-Eintrag hier beschrieben. Diese Selenium Tests können gespeichert und in einer Test-Suite zusammengefasst werden, um auch später jederzeit die korrekte Funktionsweise der Eingabe-Aktionen und Link-Aufrufe der Mobile Applikation automatisiert verifizieren zu können.

Bei dieser Gelegenheit, darf auf das sehr erfolgreiche und effektive Seminar “TDD mit Java”

hier und hier von Binaris Informatik hingewiesen werden.

Verwendete Technologien

a) Die Angular JS Beispiel-Applikationen:

Die Beispiel-Applikation *-angularjs verwendet im Frontend Angular.js und HTML5/CSS3 und auch die JavaScript-Bibliotheken Bootstrap.js und etwas jQuery.

Das MVC Framework Angular JS ermöglicht unter Einsatz des Router Design Patterns und des Front Controller Design Patterns das Erstellen von responsiven (Mobile) Applikationen zur Bearbeitung von über ein Service Interface verfügbaren Daten aus einem RESTful WebService.

Mit AngularJS werden in der Beispiel-Applikation mit den HTML5-Frontends sowohl die Benutzerschnittstelle umgesetzt als auch die Anwendungslogik in den JavaScript-Dateien definiert. Für die dabei verwendeten Edit-Templates und HTML-Suchseiten können Anpassungen (z. B. für die auszugebenden Daten) innerhalb des jeweilgen JavaScript edit*Controllers.js oder auch der jeweiligen search.html durchgeführt werden.

b) Die JSF Beispiel-Applikation:

Die JSF 2.2-Applikationen verwenden im Frontend JSF 2 und .xhtml-Templates mit HTML5-/CSS3. Weiterhin findet die JSTL-TagLibrary Verwendung.

c) Das RESTful WebService-Backend der Beispiel-Applikationen:

Für das JAX-RS Service-Backend der Beispiel-Applikationen kommt Java EE zum Einsatz (Stateful/Stateless EJB 3.2 und JEE 7) und im Backend Model JPA 2 Entities. Über ein Service Interface werden die interessierenden Daten der Beispiel-Applikationen aus einem RESTful WebService verfügbar gemacht.

Maven JEE 7 JBoss-Artefakte und Maven Dependencies

Wie die Beispiel-Applikationen mittels JBoss Forge erstellt werden, ist bereits in den Blog-Einträgen beschrieben worden, und wie in der pom.xml des jeweiligen Beispielprojekts nach erfolgtem Download erkennbar ist, werden hier die folgenden JEE7 Artefakte für den JBoss WildFly 9 verwendet und importiert:

WildFly JBoss Java EE 7 Specification APIs with Tools:
– jboss-javaee-7.0-with-tools

WildFly JBoss Java EE 7 Specification APIs with Resteasy:
– jboss-javaee-7.0-with-resteasy

WildFly JBoss Java EE 7 Specification APIs with Hibernate:
– jboss-javaee-7.0-with-hibernate

Weiterhin werden die folgenden JEE Dependencies verwendet:

– jboss-annotations-api_1.1_spec
– jboss-jaxrs-api_2.0_spec
– resteasy-jackson2-provider

– hibernate-jpa-2.1-api
– jboss-ejb-api_3.2_spec
– hibernate-jpamodelgen
– jboss-servlet-api_3.1_spec

Die JEE Beispiel-Applikationen verwenden unter der Haube CDI, worüber es bereits Blog-Einträge in diesem Blog gibt hier und hier. Die Aktivierung von CDI erfolgt, wie beschrieben, mittels beans.xml im WEB-INF Verzeichnis.

Deployment auf JBoss WildFly und Konfigurationen

Die Beispiel-Applikationen wurden auf dem JBoss WildFly 9 deployt und getestet und können gerne weiterverwendet und als Open Source weiterentwickelt werden. Nach erfolgter Konfiguration des WildFly-Servers ist nur noch die jeweilige Datasource in der standalone/configuration/standalone.xml unter den <datasources> den bereits vorhandenen <datasource>-Elementen hinzuzufügen.

Für die Weiterentwicklung, den Build und das Deployment des Projekts ist mindestens Java 6 und Maven 3 erforderlich. Als Entwicklungsumgebung wurde Eclipse 4.4 in Form des “JBoss Developer Studios 8.1.0“ mit Java 7 verwendet und ebenfalls Eclipse 4.5 (Mars) in Form des “JBoss Developer Studios 9.Final“ mit Java 8, was auch sehr gut funktioniert. Weiterhin die FireFox WebDeveloper IDE/Tools. Als Datenbank wurde MySQL InnoDB 5.x eingesetzt, hier kann aber auch leicht PostgreSQL, Oracle oder auch gerne eine andere Open Source-Datenbank verwendet werden.

Die Konfiguration des JBoss WildFly 9 Application Servers kann in einem bereits in diesem Blog vorhandenen Blog-Eintrag hier nachgelesen werden.

Wie die interessierte Leserin/der interessierte Leser hier bereits feststellen konnte, macht es einfach viel Spaß, die mit Hilfe von JBoss Forge auf den JPA-Entities angelegten JEE7, JBoss, JSF 2.2 und AngularJS Applikationen zu erstellten und auszuprogrammieren, und responsive WebApps unter Verwendung von jQuery und JSON zu erstellen, weshalb durchaus noch weitere Blog-Einträge zu diesen Themen folgen können. Allen interessierten Leserinnen und Lesern weiterhin viel Freude bei der agilen Softwareentwicklung mittels Scrum und dem Test Driven Development mit Java, sowie ein frohes Weihnachtsfest 2015, einen angenehmen Jahreswechsel und einen guten Start ins neue Jahr 2016.

Kommentare

Die Kommentare sind geschlossen.