Technologie

Java

Der Backendservice ist in Java implementiert und arbeitet auf einem Java EE Full Profile Applikationsserver wie bspw. Glassfish.

JPA

Die Java Persistence API ist die standardisierte Lösung für ORM Mapping und wird im Backend von EclipseLink implementiert, das eine Verbindung zu einer MySQL Datenbank herstellt.

CDI

Das seit Java EE 6 standardisierte Dependency Injection Framework CDI bietet Modularierung und lose Kopplung und unterstützt so eine saubere und testbare Architektur.

Maven

Maven ist ein Dependecy-Management und Build Tool, dass die Verteilung benötigter Bibliotheken und Abhängigkeiten vereinfacht, sowie komfortable Werkzeuge zum Ausführen der Tests, Kompilieren der Anwendung sowie für das Deployment bereitstellt.

Das Repository enthält mehrere Maven Projekte:

Parent Parent-POM, Verwalten von Abhängigkeiten, Plugins, ...
Application, domain, infrastructure Aufteilung nach Funktionalität im Sinne des Domain Driven Designs
Webservice Web-Layer, als JAX-RS Webservice realisiert
War Web Archive, Aggregation aller Projekte

Diese Struktur erzwingt Konventionen, die das Domain Driven Design bestimmt.

Beispielsweise hat das domain-Layer Maven Projekt keine Abhängigkeiten zum application und infrastructure Projekt, das webservice projekt hat lediglich das application layer Projekt als Abhängigkeit.

../../_images/maven-structure.png

webservice/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://
        www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://
        maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>de.hsoffenburg.proxy</groupId>
                <artifactId>parent</artifactId>
                <version>1.0.0-SNAPSHOT</version>
                <relativePath>../parent</relativePath>
        </parent>

        <artifactId>webservice</artifactId>

        <dependencies>
                <dependency>
                <groupId>de.hsoffenburg.proxy</groupId>
                <artifactId>application</artifactId>
                </dependency>
                <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                </dependency>
        </dependencies>
</project>

Siehe auch

Maven Dokumentation

JUnit/Mockito

Der Backend Service ist durch eine JUnit Test Suite getestet. Für sinnvolle Unit Tests ist es notwendig Abhängigkeiten der zu testenden Klasse durch Mocks zu ersetzen. Hierfür wird Mockito verwendet, das eine einfache EDSL zum Erzeugen von Mocks/Stubs bereitstellt.