Application Server werden häufig als schwergewichtig characterisiert, was aber nicht an ihrer Größe liegt, sondern daran, dass man zum Betrieb einer Enterprise-Applikation zunächst einen Server installieren und konfigurieren muss, bevor die Anwendung darauf deployt werden kann.
Man kann die Vorbereitung allerdings auch im Anwendungsprojekt erledigen und automatisieren, sodass der zusätzliche Aufwand im Betrieb entfällt. Das geht bspw. mit einem Maven-Plugin für WildFly:
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-jar-maven-plugin</artifactId>
<version>10.0.0.Final</version>
<configuration>
<feature-packs>
<feature-pack>
<location>wildfly@maven(org.jboss.universe:community-universe)#27.0.1.Final</location>
</feature-pack>
</feature-packs>
<layers>
<layer>jaxrs</layer>
<layer>cdi</layer>
</layers>
<output-file-name>wildfly-bootable.jar</output-file-name>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
Ein mvn package erzeugt nun zusätzlich zum normalen Ergebnis des Builds – i. A. ein war-File – die Datei wildfly-bootable.jar, die den Server inklusive der Anwendung enthält. Sie kann mit java -jar wildfly-bootable.jar gestartet werden.
Wie oben zu sehen ist, wird der Server aus sog. Layers zusammengesetzt. Somit kann man also einen Server genau auf die Anwendung zuschneiden und die Teile weglassen, die nicht benötigt werden.
Weitere Möglichkeiten sind u.a.:
- Erstellung eines sog. Hollow JARs. Es enthält nur den provisionierten Server. Die Anwendung wird dann beim Start mittels Kommandozeilenparameter bestimmt.
- Ausführen von Konfigurations-Skripten (jboss-cli), z. B. um bestimmte Datasources einzurichten oder Logging-Einstellungen vorzunehmen.
- Starten von Anwendung und Server im Development-Modus mit Hot Reloading von Code-Änderungen.
Weitere Details s. https://docs.wildfly.org/27/Bootable_Guide.html.
Wir nutzen das Plugin und insb. den Development Mode seit einiger Zeit in unseren Seminaren. Die Erfahrungen sind sehr gut. Angenehm ist, dass die Projekte ihre Serverkonfiguration mitbringen und für die Weiterentwicklung der Anwendungen keine besondere Integration in die IDE vonnöten ist.