Chapter 2. New Features and Enhancements

2.1. Security

Server Blocks Non-SSL IIOP Socket When SSL Is Required

When the server-requires-ssl attribute is set to true in the IIOP subsystem, the server will now block attempts to connect to the non-SSL socket.

FIPS 140-2 Compliant Cryptography Using the BouncyCastle Providers

You can use the BouncyCastle providers to configure a FIPS compliant instance of JBoss EAP using the elytron subsystem. Full instructions are available at Enable FIPS 140-2 Cryptography for SSL/TLS Using BouncyCastle in the How to Configure Server Security guide.

Define a FIPS 140-2 Compliant Credential Store Using the BouncyCastle Providers

You can use the BouncyCastle providers to obtain a FIPS compliant credential store. These credential stores can be defined using either of the following methods.

2.2. Java EE 8

This continuous delivery release for JBoss EAP no longer requires that you set the ee8.preview.mode system property to use Java EE 8 features. It supports Java EE 8 by default.

2.3. Server Management

Using Git to Manage Configuration Data

You can now use Git to manage and persist your server configuration data, properties files, and deployments. This not only allows you to manage the version history, but it also allows you to share server and application configurations across multiple servers and nodes using one or more Git repositories. This feature only works for standalone servers that use the default configuration directory layout.

For more information, see Using Git to Manage Configuration Data in the Configuration Guide.

Support for Eclipse MicroProfile Config

JBoss EAP now supports Eclipse MicroProfile Config, which provides portable externalization of configuration data. Support is implemented using the SmallRye Config component and is provided by the microprofile-config-smallrye subsystem. This support allows applications and microservices to be configured to run in multiple environments without a need for modification or repackaging.

For more information, see Using Eclipse MicroProfile Config to Manage Configuration in the Configuration Guide.

Kill Servers in a Server Group

The kill-servers operation is now available for server groups in a managed domain. This is useful in cases where a problem is causing all servers in a server group to hang, so that you can kill all of the server processes in one operation as opposed to performing the kill operation on each server.

2.4. Datasources

Retrieve Datasource Class Properties for a JDBC Driver

The datasource-class-info runtime attribute provides the list of datasource connection properties that can be set for a JDBC driver’s datasource class. When using the management console to add or edit an XA datasource, or edit a non-XA datasource, the properties field provides this list of properties as suggestions.

Note

The JDBC driver must have been created with the driver-datasource-class-name or driver-xa-datasource-class-name set for the properties to be shown. In a managed domain, the profile containing the JDBC driver must have a running server for the properties to be shown.

For more information, see the Datasource Attributes table in the Configuration Guide.

2.5. Hibernate

Upgraded from Hibernate ORM 5.1 to Hibernate ORM 5.3

JBoss EAP 7.2 now includes Hibernate ORM 5.3. Hibernate ORM 5.3 includes changes that were made for Hibernate ORM 5.2, which was built using the Java 8 JDK and required the Java 8 JRE at runtime. Hibernate ORM 5.3 also adds support for the JPA 2.2 specification. It contains changes to comply with this specification, along with other improvements.

For more information about the features introduced in Hibernate ORM 5.2 and 5.3, along with what you need to know to migrate your applications from Hibernate ORM 5.1 to Hibernate ORM 5.3, see Migrating from Hibernate ORM 5.1 to Hibernate ORM 5.3 in the Migration Guide for JBoss EAP.

Upgraded from Hibernate Validator 5.3.x to Hibernate Validator 6.0.x

JBoss EAP 7.2 includes Hibernate Validator 6.0.x, which is the reference implementation for JSR 380: Bean Validation 2.0.

For more information, see About Bean Validation in the Development Guide for JBoss EAP.

2.6. Clustering

Enhanced Execute Methods Use CompletableFuture

In this release, CommandDispatcher asynchronous methods were enhanced to take advantage of the new Java EE 8 CompletableFuture interface. This allows consumers of CommandDispatcher to implement non-blocking handling of dispatched commands.

Deprecated MethodReplacement Method

executeOnNode

executeOnMember

executeOnCluster

executeOnGroup

submitOnNode

executeOnMember

submitOnCluster

executeOnGroup

For more information, see Public API for Clustering Services in the Development Guide.

2.7. Infinispan

HotRod Client Injection

You can inject a HotRod client to connect to a remote JDG cluster using the @Resource JNDI injection.

For more information, see Externalize HTTP Sessions to JBoss Data Grid in the Configuration Guide.

Non-blocking Initial State Transfer

Caches can now be made immediately available instead of waiting for state transfer to complete. This is accomplished by setting the timeout attribute of the cache to 0, allowing the cache to receive its state through background operations.

For more information, see State Transfer in the Configuration Guide.

2.8. Logging

Socket Log Handlers

You can now configure a socket log handler to send log messages over a TCP or UDP socket to a remote logging server.

For more information, see Configure a Socket Log Handler in the Configuration Guide.

2.9. Messaging

IBM MQ Resource Adapter

This release of JBoss EAP was tested with the the following configurations.

  • The IBM MQ 8.0.0.10 resource adapter was tested against the IBM MQ 8.0.0.x broker. Versions 8.0.0.0 through 8.0.0.9 of the IBM MQ resource adapter are not supported.
  • The IBM MQ 9.0.0.4 resource adapter was tested against the IBM MQ 9.0.0.x broker. Versions 9.0.0.0 through 9.0.0.3 of the IBM MQ resource adapter are not supported.

For more information about the IBM MQ resource adapters, see Deploying the IBM MQ Resource Adapter in Configuring Messaging for JBoss EAP.

Messaging Journal Persistence Using a JDBC Database

In addition to the currently supported Oracle 12c database, this release of JBoss EAP adds support for the IBM DB2 Enterprise database when using JDBC to persist messages.

Support for HA Topology for Messaging JDBC Persistence Store

This release of JBoss EAP supports HA topology for messaging JDBC persistence store. For details, see Configuring HA for Messaging JDBC Persistence Store in Configuring Messaging for JBoss EAP.

Simplifying Connection to Remote Red Hat AMQ 7 Messaging Broker

Connection to Remote Red Hat AMQ 7 messaging broker no longer requires the presence of JBoss EAP’s embedded messaging broker. You can define resources required for connection to remote Red Hat AMQ broker directly in the messaging-activemq subsystem.

2.10. Management CLI

Keyboard Navigation Shortcuts

The management CLI now supports several ways to navigate around when editing a management CLI command. The keyboard shortcuts to use depend on which platform you are using. See Use Keyboard Navigation Shortcuts in the Management CLI Guide for the list of supported shortcuts.

Generate Output for HTTP Management API

The echo-dmr command provides a new --compact argument to display content on a single line. When used with the --output-json management CLI startup argument, this argument allows you to generate output that can be directly consumed by the HTTP Management API.

Management CLI Output Scrolling

The management CLI now supports scrolling directly inside the console if the output is longer than the terminal window. You can use the scroll wheel, directional arrows, or the PgUp, PgDn, Home and End keys to navigate through the output.

On Windows this feature is only available beginning with Windows Server 2016. There are no issues with other operating systems.

Searching Management CLI Output

You can now search multi-page output in the management CLI. See Searching Multi-page Output in the Management CLI Guide for more information.

2.11. Transactions

New maximum-timeout Transaction Manager Attribute

Previously, when users set a transaction timeout of 0, which implies an unlimited timeout, the transaction manager used Integer.MAX_VALUE as the actual value for the transaction timeout. Because the maximum integer value could exhibit problems, the transaction timeout value is now capped at a smaller value.

A new configurable attribute, maximum-timeout has been added to the transactions subsystem with a default value of 31536000 seconds (365 days). If a transaction is configured with an unlimited timeout, the transaction manager now uses the value of maximum-timeout instead, and a WARN message notifying this behavior is logged.

2.12. Web Services

Java API for JSON Binding

RESTEasy supports both JSON-B and JSON-P. In accordance with the specification, entity providers for JSON-B take precedence over the ones for JSON-P for all types of entities except JsonValue and its sub-types.

The JsonBindingProvider property from resteasy-json-binding-provider module provides support for JSON-B. To satisfy JAX-RS 2.1 requirements, the JsonBindingProvider provider takes precedence over the other providers for dealing with JSON payloads, in particular the Jackson payload. In order to retain backward compatibility, you can set the resteasy.preferJacksonOverJsonB context property to true and disable the JsonBindingProvider configuration for the current deployment.

For details, see the Java API for JSON Binding section in the Developing Web Services Applications for JBoss EAP.

Asynchronous HTTP Request Processing

The default asynchronous engine implementation class for RESTEasy is ApacheHttpAsyncClient4Engine. You can set the asynchronous engine as the active engine by calling the useAsyncHttpEngine method in the ResteasyClientBuilder class.

For details, see the Asynchronous NIO Request Processing section in the Developing Web Services Applications for JBoss EAP.

Custom RESTEasy Annotations

With the addition of parameter names in the bytecode, you are no longer required to specify the parameter names in the following annotations: @PathParam, @QueryParam, @FormParam, @CookieParam, @HeaderParam and @MatrixParam. To do so, you must switch to the new annotations with the same name, in a different package, which have an optional value parameter.

For details, see the Custom RESTEasy Annotations section in the Developing Web Services Applications for JBoss EAP.

Extending the ParamConverter Functionality

In the JAX-RS semantics, a ParamConverter converts a single string that represents an individual object. RESTEasy extends the semantics to allow a ParamConverter to parse the string representation of multiple objects and generate a List<T>, Set<T>, SortedSet<T>, array, or any other multi-valued data structure.

For details, see the Extending the Functionality of the ParamConverter section in the Developing Web Services Applications for JBoss EAP.

Resource Method Algorithm Switch

A bug discovered in the resource method matching algorithm used in RESTEasy 3.0.x versions prior to 3.0.25.Final caused RESTEasy to return too many resource methods when responding to requests. For more information, see JAX-RS and RESTEasy Application Changes in the Migration Guide.

RESTEasy Service Provider Interface

JBoss EAP now provides a RESTEasy service provider interface (SPI) to modify resource class metadata, which is created using ResourceBuilder. Implementations of the ResourceClassProcessor interface allows customizing the metadata generation.

For more information about the RESTEasy SPI, see the RESTEasy SPI to Modify Resource Metadata section in the Developing Web Services Applications for JBoss EAP.

2.13. Quickstarts and BOMs

JBoss EAP BOMs Available for Application Development

The artifact IDs for JBoss EAP Maven BOM files have changed because of the update to Java EE 8. The following table lists the Maven BOMs that are available for application development in this release.

BOM Artifact IDUse Case

jboss-eap-javaee8

Supported JBoss EAP Java EE 8 APIs plus additional JBoss EAP API JARs.

jboss-eap-javaee8-with-spring4

jboss-eap-javaee8 plus recommended Spring 4 versions.

jboss-eap-javaee8-with-tools

jboss-eap-javaee8 plus development tools such as Arquillian.

For more information about the BOMs available for application development, see Manage Project Dependencies in the Development Guide.