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.
Examples are available in https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/2016.8.
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