WildFly 8 Final is released!

I’m happy to announce the release of WildFly 8.0.0.Final. This means we feel the project is now stable and ready for general use. We received excellent feedback from the community regarding the CR1 release, and are looking forward to hearing more about your experiences with 8 Final.

We will be highlighting notable WildFly 8 articles, videos and resources on our new WildFly 8 Resources page. Please keep an eye on it for future developments.

Java EE7 Certified

The biggest development in this release is that WildFly 8 is now officially Java EE7 certified, meeting both the Web and the Full profiles.

For those unfamiliar with Java EE7, it is an industry leading specification that offers applications productivity improving capabilities, including support for the modern web, batch processing, and improvements in dependency injection.

High Performance Web Server (Undertow.io)

Undertow, the new cutting-edge web server in WildFly 8, is designed for maximum throughput and scalability, including environments with over a million connections. It supports non-blocking and blocking handlers, traditional and asynchronous servlets, and JSR-356 web socket handlers. It is highly customizable, with the ability for applications to implement nearly anything from dynamic request routing to custom protocols. It can also function as a very efficient, pure non-blocking reverse proxy, allowing WildFly to delegate to other web servers with minimal impact to running applications. This release adds numerous improvements including greater extensibility and enhanced security capabilities.

Port Reduction

By utilizing HTTP upgrade, WildFly 8 has moved nearly all of its protocols to be multiplexed over two HTTP ports: a management port, and an application port. This is a big benefit to cloud providers (such as OpenShift) who run hundreds to thousands of instances on a single server.

In total, our default configuration now only has two ports:

Table 1. Ports
Port Protocols                                                                                             Bound Interface

9990

HTTP/JSON Management, HTTP Upgraded Remoting - (Native Management & JMX), Web Administration Console

management

8080

HTTP (Servlet, JAX-RS, JAX-WS), Web Sockets, HTTP Upgraded Remoting (EJB Invocation, Remote JNDI)    

application

Note that since CR1 we have finally dropped the native management port 9999, which instead uses the HTTP management port (9990). Our full profile configuration also dropped the native JMS ports 5445 and 5455, which instead are multiplexed over port 8080. However, all of these original ports can still be enabled if desired.

Management Role Based Access Control (RBAC) & Auditing

WildFly can now support organizations with separated management responsibilities and restrictions. Roles represent different sets of permissions such as runtime operation execution, configuration areas that can read or written, and the ability to audit changes and manage users. As part of this work, LDAP integration was improved to support group mapping to roles, as well as configurable caching strategies. Finally, a new restricted audit log can be enabled including the ability to offload to a secure syslog server.

Security Manager

WildFly now provides a specialized Java security manager that allows you to define per-deployment security permissions, and also greatly improves upon the performance of using the standard Java security manager. In addition to the standard Java EE permissions.xml, a more flexible jboss-permissions.xml descriptor is also supported.

Logging

The management API now supports the ability to list and view the available log files on a server.

There is also a new ablity to define a custom formatters other than the default pattern formmatter.

For deployments that wish to bypass container logging, there is now an attribute, add-logging-api-dependencies, to disable the adding of the implicit server logging dependencies. Another option is to use a jboss-deployment-structure.xml to exclude the logging subsystem which will stop the logging subsystem from processing a deployment.

Finally, use-deployment-logging-config, has been added to enable or disable processing pf logging configuration files found in a deployment.

Note that the system property org.jboss.as.logging.per-deployment to disable per-deployment logging has been deprecated.

JCA & Datasources

WildFly 8 now supports a DistributedWorkManager implementation based on the JGroups project, and the JCA connection manager has been enhanced with the lazy connection manager extensions.

The data sources and resource adapters subsystems allow setting capacity policies and additional flush strategies as well. Resource adapters now allows a security inflow policy per deployment.

More information is available here.

Clustering

Clustering support was heavily refactored in WildFly 8 and includes the following:

  • New/optimized distributed web session implementation for use with Undertow

  • mod_cluster support for Undertow

  • New/optimized distributed single sign-on support for Undertow

  • New/optimized distributed @Stateful EJB caching implementation

    • SFSB state is now replicated by default, if supported by the server profile. Replication can be disabled per bean by via @Stateful(passivationCapable=false).

  • New public clustering API

    • Allows applications to view cluster topology and listen for topology changes

    • Allows applications to broadcast/submit commands to nodes in the cluster for remote execution

    • Requisite modules are automatically made available to deployments, if supported by the server profile

  • New public API for creating singleton services

    • A singleton service is a decorated MSC service that only runs on one node in the cluster at any given time.

    • Exposes a builder API that simplifies the process of installing an MSC service as a singleton service.

    • Requisite modules are automatically made available to deployments, if supported by the server profile

    • Maintain hot backups of cache data across distinct clusters (i.e. remote locations)

CLI Improvements

Within the CLI configuration it is now possible to define aliases to servers that you regularly connect to allowing you to specify the name of an alias when using the 'connect' command instead of requiring the full URL.

The CLI GUI now lets you "Explore" any node in the tree. This makes it much easier to work on a single section of the tree and is particularly useful in domain mode when the tree gets huge. https://community.jboss.org/wiki/AGUIForTheCommandLineInterface#explore

Patching

The infrastructure to support the application of patches to an existing install has been implemented. This capability allows for a remote client to install and rollback new static modules and binary files using the WildFly management protocol.

New Minimalistic "Core" Distribution

A new download option is now available in WildFly 8, called the "core" distribution. This distribution is ideal for framework authors that want to build their own application runtime using the powerful WildFly 8 architecture.

This architecture includes:

  • Rich management later supporting configuration persistence, hot runtime updates, and unified set of tools and protocols.

  • Fully concurrent service container with advanced capabilities

  • Modular class loading which enables multi-tenancy of applications

  • Pluggable hot deployment layer

  • Built-in lightweight web server (supports the HTTP/JSON management protocol)

Improved JDK8 Compatibility

This release has improved compatibility with JDK8, and we now encourage everyone interested in Java 8 to run WildFly 8 on it as well. Expect future releases of WildFly to include APIs that take advantage of the new language features.

Web Services

A number of major web services improvements also occured in this release:

  • WebServiceFeature to control when to create new Apache CXF Bus instances and when / how to share them in the container. You can read more about the new feature here.

  • WS-Policy code-first improvements (@PolicySets) allow users to choose desired policy assertions among a list of pre-defined groups and scenarios. More information is available here.

  • WS-Discovery support allows selected deployments to be automatically registered with the discovery service so that outside consumers can discover available endpoints. See the documentation for more information.

REST

WildFly 8 includes RESTEasy 3 which supports the standard Java EE REST APIs (JAX-RS 2.0) and also provides a number of useful extensions including JSON Web Encryption, Jackson, Yaml, JSON-P, and Jettison.

Hibernate Search is now offered out of the box in WildFly. Hibernate Search indexes objects for fast full-text searching. Multiple data sources are supported including Infinispan and standard database entities.

Pruning

Java EE7 no longer requires the following technologies:

  • CMP - JPA offers much more performant and flexible API.

  • JAX-RPC - JAX-WS offers a much more accurate and complete solution.

  • JSR-88 - Very little adoptionr. Most preferred the more complete deployment APIs provided by venders.

We decided to completely remove support for these technologies due to the high maintenance cost, low community interest, and much better alternative solutions. If you are not able to port at this time, we recommend looking at JBoss EAP6, which provides long term maintenance and support of these technologies,

Other Notable Updates

  • Non-clustered session persistence (disabled by default, might be enabled in a future release)

  • CDI integration and performance improvements

  • EJB SLSB pooling is disabled by default, which is a better performing configuration for most applications

  • A number of significant JPA improvements including better support for OpenJPA and EclipseLink

  • Batch now supports JDBC based backends, including a number of DB providers

  • Generic JMS RAR for simplifying integration with third party messaging providers

  • JASPIC compliance has greatly improved after a number of community contributions and testing (Thanks!)

Issue Resolution

  • 211 issues were resolved since CR1

Component Updates

  • Arquillian 1.1.2.Final-wildfly-1

  • Byteman 2.1.4

  • EJB Client 2.0.0.Final

  • Eclipse JDT Core Compiler 4.3.1

  • Groovy 2.2.1

  • Hal 2.1.1.Final

  • Hibernate 4.3.1.Final

  • Hibernate Search 4.5.0.Final

  • Hibernate Validator 5.0.3.Final

  • Hornetq 2.4.1.Final

  • Invocation 1.2.1.Final

  • Ironjacamar 1.1.3.Final

  • JBeret 1.0.0.Final

  • JBoss Logging 3.1.4.GA

  • JBoss Logmanager 1.5.2.Final

  • JBoss Marshalling 1.4.3.Final

  • JGroups 3.4.2.Final

  • Jackson 1.9.13

  • Jastow 1.0.0.Final

  • Jipijapa 1.0.1.Final

  • Log4j JBoss LogManager 1.1.0.Final

  • Metadata 8.0.0.Final

  • Mod_cluster 1.3.0.Final

  • Mojarras 2.2.5-jbossorg-3

  • Msc 1.2.0.Final

  • Narayana 5.0.0.Final

  • Netty 4.0.15.Final

  • Netty-xnio-transport 0.1.1.Final

  • PicketBox 4.0.20.Final

  • PicketLink 2.5.2.Final

  • Remote naming 2.0.0.Final

  • Remoting 4.0.0.Final

  • Remoting JMX 2.0.0.Final

  • SASL 1.0.4.Final

  • Santuario 1.5.6

  • Undertow 1.0.0.Final

  • Weld 2.1.2.Final

  • Wildfly Security Manager 1.0.0.Final

  • XNIO 3.2.0.Final