Announcing WildFly Swarm 2016.8.1

We’ve reached 2016.8.1! Say what?!

Yes, we’ve released August.1! There was a discussion on our Google Group about six weeks ago regarding release naming, and here we are releasing the first in the line of that new naming.

And yes, there was a problem with the original 2016.8, hence 2016.8.1!

Going forward we will be doing releases by month, unless we deem a month unworthy of a release.

With this release we’ve introduced multiple BOMs to signify maturity of the various parts. See the section on Fraction Stability indicator for further details.

And the JBoss Forge WildFly Swarm addon is also updated, so feel free to give it a try!

What’s New?

  • MicroProfile

  • Driver and Datasource handling

  • CDI Configuration injection

  • Fraction authoring changes

  • Arquillian Testing changes

  • Fraction Stability indicator

  • GitHub reorganization

  • Bugfixes

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.

Microprofile

By now you’ve likely heard about the MicroProfile initiative that was announced at Red Hat Summit this year. The goal of the MicroProfile is to optimize and enhance Java EE for a microservices architecture. There are many challenges with microservices architecture that are not solved by Java EE, but the MicroProfile seeks to close that gap.

The initial version of MicroProfile, planned for September, defines it as containing JAX-RS, CDI, and JSON-P. With this release WildFly Swarm now has support for the MicroProfile as a fraction. To use it, just add the following to pom.xml:

<dependency>
  <groupId>org.wildfly.swarm</groupId>
  <artifactId>microprofile</artifactId>
  <version>2016.8.1</version>
</dependency>

Driver and Datasource handling

We’ve completely reworked how JDBC drivers, datasources and JPA interact to simplify it and remove a lot of the interdependencies between them. We recognized that the previous means of configuring JDBC drivers, datasources and integrating them with JPA was not the easiest. With this release we’ve split out the JDBC drivers into fractions for h2, mysql and postgresql.

With this change the JPA Fraction has a dependency on h2 to get up and running quickly, but it doesn’t contain any H2 specific configuration. This makes it very easy to switch between JDBC drivers by excluding the h2 dependency from jpa and adding a dependency for a different driver.

All the existing configuration properties haven’t changed and work as before.

CDI Configuration injection

This change breaks backwards compatibility, unfortunately, as we’ve renamed @ConfigValue to @ConfigurationValue. Configuration values are also now injectable into Fractions or user application code!

Fraction authoring changes

Developing fractions is now a whole lot simpler!

Only a single Maven module is now required for a Fraction, with any complexity moved into the fraction-plugin for packaging it.

Full details are available in the User Guide.

Arquillian Testing changes

We’ve simplified how to do testing with Arquillian in this release.

There is no longer a need to have the test implement ContainerFactory, etc. All you need is to define a Swarm instance like this:

@CreateSwarm
public static Swarm newContainer() throws Exception {
    return new Swarm().fraction(EJBFraction.createDefaultFraction());
}

Fraction stability indicators

You may have noticed in the Project Generator that we now display stability badges that indicate the level of maturity for each Fraction. The table below outlines what the different stability levels mean:

Level BOMs Description

Deprecated

bom-deprecated, bom-all

Expect no more changes. Avoid using this fraction.

Experimental

bom-experimental, bom-all

Expect the unexpected. Please provide feedback on API and your use-case

Unstable

bom-unstable, bom-all

Expect patches and features, possible API changes.

Stable

bom, bom-stable, bom-all

Expect patches, possible features additions.

Frozen

bom-frozen, bom-all

Expect only patches. Please do not make feature requests.

Locked

bom-locked, bom-all

Expect no changes, except serious bugs. Please do not make feature requests.

GitHub reorganization

After splitting out the codebase into several repositories a few releases ago, after 1.0.0.Final we’ve merged them all together again!

There are still a couple of repositories, fraction-plugin and spi, that are still separate but the rest is all in https://github.com/wildfly-swarm/wildfly-swarm. We’ve been able to merge them together by simplifying what is required to develop a Fraction, thereby reducing the number of Maven poms required.

DonĀ“t be afraid to star it! :)

Bugfixes

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

Changelog

Release notes for 2016.8 are available here.

  • [SWARM-258] Add jdr subsystem from WildFly
  • [SWARM-481] Move default DS creation out of jpa
  • [SWARM-482] Provide a fraction to serve the admin console static assets
  • [SWARM-486] Can't load project-stages.yml on classpath with Arq
  • [SWARM-524] Make the JAX-RS client API available through the jaxrs fraction
  • [SWARM-528] swarm.http.port and swarm.port.offset do not work with @ArquillianResource URL baseURL
  • [SWARM-536] docker container - WFLYCTL0079: Failed initializing module org.jboss.as.logging
  • [SWARM-538] Camel examples do not eager open HTTP port
  • [SWARM-539] Add camel-swagger example
  • [SWARM-544] swagger-ui error with jaxrs fraction
  • [SWARM-545] Slow Startup Since 'Final' Release
  • [SWARM-546] Fraction does not retain state from Main to Runtime
  • [SWARM-551] Infinispan - access default cache - ClassCastException
  • [SWARM-553] Error with logging fraction when using PeriodicSizeRotatingFileHandler
  • [SWARM-556] Expose stability index (and friendly word) in the fraction-lists
  • [SWARM-563] Finer granularity in the @Configuration annotation(s)
  • [SWARM-565] Failed to run Main() within IDE
  • [SWARM-566] slf4j bindings do not work
  • [SWARM-574] Keycloak Fraction fails because of ClassCastException when web.xml is added via Shrinkwrap
  • [SWARM-578] Using gradle, the Main method executes differently in IDE and Swarm.jar
  • [SWARM-580] Swarm Uber-jar does not work with gradle and a source-jar-task
  • [SWARM-584] Upgrade to wildfly-camel-4.2.0
  • [SWARM-586] IllegalStateException when accessing monitoring endpoints
  • [SWARM-587] Unable to connect to Remote JMS
  • [SWARM-589] Running Arquillian Persistence Extension with Wildfly Swarm example throws an exception
  • [SWARM-590] keycloak-server fraction is missing an infinispan cache "authorization" entry
  • [SWARM-594] Make default deployment factories CDI components
  • [SWARM-595] Re-organize container.runtime
  • [SWARM-597] Simplify RuntimeServer CDI bootstrap
  • [SWARM-599] Attempt to use and configure JMXFraction fails with CNFE
  • [SWARM-600] Provide for enabling the legacy remoting port binding
  • [SWARM-602] config-api-generator can not recongnize attribute start with number and short string
  • [SWARM-607] StringIndexOutOfBoundsException: String index out of range: -1 during plugin JAR build

Resources

Per usual, we tend to hang out on irc.freenode.net 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:

WildFly Swarm

  • Sebastien Blanc

  • Heiko Braun

  • Thomas Diesler

  • Stuart Douglas

  • Ken Finnigan

  • George Gastaldi

  • Marco Hofstetter

  • Bob McWhirter

  • James Perkins

  • Tomas Remes

Examples

  • Heiko Braun

  • Thomas Diesler

  • Ken Finnigan

  • George Gastaldi

  • Bob McWhirter

  • Sayo Oladeji

  • puffybsd

Documentation

  • Heiko Braun

  • John Clingan

  • Ken Finnigan

  • George Gastaldi

  • Marco Hofstetter

  • Bob McWhirter

  • Rafael Pereira