README.md 3.9 KB

Ein Java-Beispielprojekt für die Lehrveranstaltungen "Software Engineering 2" (SE2) und "Softwarequalität und Test" (SwQT).

Projekt-Voraussetzungen

  • Versionsverwaltungswerkzeug "Git"
  • installiertes Java 8 JDK (mit Dokumentation)
  • eine Java-Entwicklungsumgebung ("Eclipse", "JetBrains IntelliJ IDEA", "NetBeans" o.ä.)
  • JEE-Application Server "JBoss WildFly Version 8.2.1-final"
  • Plugin "JBoss Tools" (nur für Eclipse)
  • Build-System "maven"
  • ein relationales Datenbankverwaltungssystem ("MySQL" empfohlen, oder "MariaDB", "PostgreSQL", "Oracle Express" etc.)
  • ein REST-Client (empfohlen "Advanced Rest Client Application" für Chrome)

Java-Projekt herunterladen

In einem beliebigen Verzeichnis ausführen:

git clone https://git.ziemers.de/edu/swXercise.git

Danach das entstandene Projektverzeichnis swXercise in der Entwicklungsumgebung als existierendes Maven-Projekt importieren.

MySQL konfigurieren

Zunächst muss das MySQL-Datenbanksystem installiert werden. Dies ist betriebssystemspezifisch. Während der Installation wird ein temporäres Root-Kennwort generiert.

Dann kann das MySQL-Frontend gestartet werden (es wird zunächst nach dem temporären Kennwort gefragt):

mysql -u root -p

Dann kann/muss das Kennwort geändert werden, beispielsweise in 'root':

ALTER USER 'root'@'localhost' IDENTIFIED BY ‘root‘;

Dann müssen die beiden projektspezifischen Datenbanken (für Test und "Produktion") erstellt und mit den nötigen Rechten versehen werden:

create database swxercise;

create database swxercise_test;

grant all privileges on swxercise.* to 'root'@'localhost' identified by 'root';

grant all privileges on swxercise_test.* to 'root'@'localhost' identified by 'root';

MySQL-Datenbank im WildFly einbinden

Zunächst muss der JBoss WildFly Application Server installiert werden. Dies ist betriebssystemspezifisch.

Datei module.xml im Verzeichnis $JBOSS_HOME/modules/system/layers/base/com/mysql/driver/main erstellen mit folgendem Inhalt:

<module xmlns="urn:jboss:module:1.3" name="com.mysql.driver">
  <resources>
    <resource-root path="mysql-connector-java-5.1.41-bin.jar" />
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

Und natürlich die jar-datei mit dem angegebenen MySQL-Treiber in dieses Verzeichnis hineinkopieren. Er muss von den Oracle-Internetseiten heruntergeladen werden.

Aufgepasst bei der Version des MySQL-Konnektors in der module.xml!

In der standalone.xml im Verzeichnis $JBOSS_HOME/standalone/configuration folgenden Inhalt unterhalb der WildFly-Beispieldatenbank com.h2database.h2 ergänzen:

<drivers>
  ... (hier befindet sich der H2-Treiber; unserer kommt darunter)
  <driver name="mysql" module="com.mysql.driver">
    <driver-class>com.mysql.jdbc.Driver</driver-class>
  </driver>
</drivers>

MySQL-Datasource im WildFly definieren

In der standalone.xml im Verzeichnis $JBOSS_HOME/standalone/configuration folgenden Inhalt innerhalb der Datasources ergänzen:

... (hier befindet sich die H2-Datasource; unsere kommt darunter)
</datasource>
<datasource jndi-name="java:jboss/datasources/swXerciseDS" pool-name="swXerciseDS" enabled="true" use-java-context="true" jta="true">
  <connection-url>jdbc:mysql://localhost:3306/swxercise?useSSL=false</connection-url>
  <driver>mysql</driver>
  <!-- der Default-Eintrag "TRANSACTION_REPEATABLE_READ" kann zu Camunda-Deadlocks kommen (ThZ, 24.04.2017) -->
  <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
  <pool>
    <min-pool-size>10</min-pool-size>
    <max-pool-size>100</max-pool-size>
    <prefill>true</prefill>
  </pool>
  <security>
    <user-name>root</user-name>
    <password>root</password>
  </security>
  <statement>
    <prepared-statement-cache-size>32</prepared-statement-cache-size>
    <share-prepared-statements>true</share-prepared-statements>
  </statement>
</datasource>