Announcing WildFly Swarm 2016.9

It’s September, so that means 2016.9 is out!

Continuing our trend of monthly releases, as discussed on the Google Group, we’re pleased to release 2016.9, celebrating September, a month never mentioned by Shakespeare in any of his plays.

What’s New?

  • WildFly 10.1.0.Final

  • Continued MicroProfile support

  • Cleaner WEB-INF/lib

  • Hollow Uberjars

What is WildFly Swarm?

WildFly Swarm is the decomposition and reconstitution of the popular WildFly Java Application Server in order to support just enough appserver for microservice type applications.

Each portion of the appserver is referred to as a fraction, which many times maps to a subsystem from WildFly, but also may include other discrete chunks of non-Java EE or WIldFly functionality, such as Swagger, Jolokia or NetflixOSS Ribbon.

WildFly 10.1.0.Final

This release of WildFly Swarm is now based upon WildFly 10.1.0.Final, which brings about easy support for HTTP2, among other interesting things.


While we added support for MicroProfile last month, this month we provide a handy-dandy, downloadble server for your existing MicroProfile-complaint .war applications. You can grab it and read about how to use it.

Cleaner WEB-INF/lib

A chronic problem we’ve seen in the past is that various usage scenarios result in extraneous items appearing in your WEB-INF/lib directory. This not only caused bloat, but also could cause errors, particularly regarding CDI.

The Maven plugin now will be smarter about what goes into WEB-INF/lib, and actively repackages your .war file to ensure that it isn’t polluted, in the case of compile scoped transitive dependencies.

Hollow Uberjars

This release supports the concept of hollow uberjars, which is a slightly contradictory term, of course. You can perform a build with the property of swarm.hollow set to true, and the resulting uberjar will be capable of running your application. But it won’t actually contain your application.

This is differentiated by the -hollowswarm.jar suffix on the resulting output.

This is the mechanism we used to provide the MicroProfile server mentioned above, but it’s possibly useful for your own purposes. Simply pass your own .war files for deployment on the command-line. If you’re using Linux containers, such as Docker, this would allow you to put just enough app-server on one layer, while stuffing your application .war on a higher one.


There are quite a few bugs fixed in this release since 2016.8.1. Check out the full list of them below in the changelog.


Release notes for 2016.9 are available here.


  • [SWARM-657] can’t run tests using the Arquillian Daemon when another application listens on port 12345

  • [SWARM-654] Hollow jars are not recognized as such

  • [SWARM-651] AmbiguousResolutionException when starting uberjar

  • [SWARM-650] Microprofile example fails to start

  • [SWARM-635] ExplodedImporter not available in main()

  • [SWARM-633] Arquillian container is not available in bom only bom-all

  • [SWARM-622] Remove reference to Fraction.InitContext in docs

  • [SWARM-620] Generator search doesn’t recognize 'jax-'

  • [SWARM-615] Manual lookup of CDI-Instance doesn’t work since 2016.8.1

  • [SWARM-614] Container provided dependencies cannot be declared as such for WAR

  • [SWARM-613] ModuleNotFoundException while run example with 2016.8.1

  • [SWARM-611] Weld warnings being displayed when starting a swarmed app

  • [SWARM-598] swarm jmx could be used only with jar packaging

  • [SWARM-596] @CreateSwarm fails when test class implements interfaces or extends classes

  • [SWARM-588] HealthCheck endpoint doesn’t work when JAX-RS @ApplicationPath defined

  • [SWARM-579] @ConfigValue not working when running as an uberjar

  • [SWARM-575] swarmtool fails on javaee7 Stateless EJB example

  • [SWARM-572] BOM does not include version for arquillian-junit-container

  • [SWARM-571] Arquillian does not include src/main/resource/modules

  • [SWARM-564] Can’t get underlying PostgreSQL database connection from datasource

  • [SWARM-549] Creating project from generator cannot compile as JARs cannot download

  • [SWARM-527] jboss-web defined context-root is ignored for health check resources


  • [SWARM-656] Stopping WF-Swarm shows ERROR in log: because no Bean Validation provider could be found

  • [SWARM-644] Change H2 Fraction stability to STABLE

  • [SWARM-639] Unify and Simplify the various .conf handling

  • [SWARM-631] @ConfigurationValue should not provide a default empty value()

  • [SWARM-621] Move :spi into main repository to simplify updating it

  • [SWARM-616] Filter the core WildFly Swarm jars from a user’s WEB-INF/lib if they appear there

  • [SWARM-609] Add appropriate debug logging in container to provide information about what’s happening

  • [SWARM-608] Display installed fractions with their stabilityLevel at boot

  • [SWARM-604] Running uber jar introduces redundant temp jar files in user tmp dir

  • [SWARM-534] Generator fractions selection

  • [SWARM-526] Define WildFly Swarm as product-name

  • [SWARM-492] Provide localized error messages and codes for Swarm exceptions

Feature Request

  • [SWARM-653] Create a MicroProfile distribution

  • [SWARM-628] Allow enabling HTTP/S by generating a local keystore for testing purposes

  • [SWARM-619] Enable HTTP/2 support in the existing HTTP(/S) connectors

  • [SWARM-293] Pass a WAR to Swarm for deployment

  • [SWARM-292] Ability to deploy as WAR or java -jar

Component Upgrade

  • [SWARM-617] Upgrade to WildFly 10.1.0.Final


  • [SWARM-562] Add swarm.fraction.tags property to camel fraction pom.xml files


Per usual, we tend to hang out on in #wildfly-swarm.

All bug and feature-tracking is kept in JIRA.

Documentation for this release is available.

Thank you, Contributors!

We appreciate all of our contributors since the last release:


  • Athou

  • Heiko Braun

  • Toby Crawley

  • Ken Finnigan

  • George Gastaldi

  • Bob McWhirter

  • Ladislav Thon

  • Sebastien Blanc


  • Ken Finnigan

  • Bob McWhirter