Releases: kumuluz/kumuluzee
v3.0.0
We are happy to announce the final release of the KumuluzEE 3.0.0. The new major release brings full support for Java 9+ and support for Java EE 8 with some new components and a bunch of updated components.
The following components from Java EE 8 have been added:
- JSON-B 1.0
- Java Mail 1.6
We're including the reference implementation for both of the new components, with alternative implementations planned in the future when they become available.
The following components were updated to their Java EE 8 versions:
- JSF 2.3
- JPA 2.2
- JAX-RS 2.1
- CDI 2.0
- Bean Validation 2.0
- JSON-P 1.1
All implementations of the listed components have been updated to the latest Java EE component versions, so you're free to use any of them.
Furthermore, the new release brings the support for the Apache CXF JAX-WS implementation. We are continuing in the spirit of modularity, as this is the second JAX-WS implementation, supported by the KumuluzEE framework, the first one being Metro. The samples showing the usage of the new framework are already available at the kumuluzee-samples repository.
We have also included some missing integrations between various components. The Bean Validation has been integrated with the CDI, which allows injection of Validator
instances in CDI beans and validation of input arguments and return values of CDI methods. Also, the JNDI now allows lookup for the JTA UserTransaction
. Additionally both JSON-P and JSON-B can now be used with JAX-RS automatically. You don't need to do anything, simply add the relevant components as your dependencies and it will work.
Make note that the Servlet component is still on version 3.1 as the default implementation Jetty has not yet updated upstream to support the 4.0 version of the Servlet component. It will be added as soon as it will become available. The omission of Servlet 4.0 for this release however is a rather minor issue, as KumuluzEE already supports HTTP2, which is the flagship feature of Servlet 4.0.
Due to popular request we began implementing the mechanism that will allow activating or deactivating extensions via configuration framework properties. The necessary support in the core framework is finished and we will be pushing out support in each individual extension soon alongside with the updates necessary to support Java 9+ in each individual extension.
We're also hard at work at continuously optimizing and reducing the footprint of the framework and its dependencies, such as removing unneeded libraries, reducing the footprint of the initial loader and general speed ups of the framework. The release also includes updates to the maven plugin and the uber JAR loader, which address a number of issues found since its introduction. It's now more stable and handles edge cases better. We also took this opportunity to remove some of the legacy stuff still residing inside KumuluzEE. All deprecated features in versions 2.x are removed, so make sure to check whether you're still using any.
Some enhancements that support further development of extensions also made it into this release. The translation of configuration keys into environment variable names has changed to allow the kumuluzee-config-mp
extension to align with the latest MicroProfile Config 1.3 specification. We will be supporting the legacy lookups, so this won't break existing configuration.
A new configuration property has been added to the startup configuration, which instructs Jetty to propagate any exceptions that happen during startup. This property has little use for the end-user but aids in the development of the KumuluzEE Arquillian Container Adapter.
The release also includes bug fixes, improved compatibility with the EE specification and updates of the various components and libraries to their latest upstream versions.
Features:
- Added support for Java 9+.
- Added new EE component Java Mail 1.6 (RI).
- Added new EE component JSON-B 1.0 (Yasson).
- Updated EE component JSF to 2.3 (Mojarra).
- Updated EE component JPA to 2.2 (EclipseLink, Hibernate).
- Updated EE component JAX-RS to 2.1 (Jersey).
- Updated EE component CDI to 2.0 (CDI).
- Updated EE component Bean Validation to 2.0 (Hibernate Validator).
- Updated EE component JSON-P to 1.1 (RI).
- Added support for Apache CXF JAX-WS implementation.
- Added support for JSON-P and JSON-B when (de)serializing objects with JAX-RS (Jersey).
- Added ability for extensions to specify, when they should not be initialized.
- Removed deprecated features and config values.
Enhancements:
- Sped up the classloading when using the uber JAR.
- Added Bean Validation CDI integration.
- Added transaction manager to JNDI.
- Added environment variable lookups as defined in the MicroProfile Config 1.3 specification.
- Added configuration property that enables Jetty startup exception propagation.
- Added the ability to retrieve registered Servlets at runtime.
- Retrieve configuration value as a raw key if the parsed key is not found.
- Updated libraries and component implementations to their latest versions.
- Added support for dynamic key names with a custom prefix.
- Added support for key names containing dots.
- Added Rest Client extension group.
Bugs:
- Fixed
stopServlet
method inJettyServletServer
throwsIllegalStateException
. - Added support for legacy key names in
getListSize
for environment variables. - Uber JAR will now work in directories that include special characters (spaces, # ...).
- Fixed test that fails if build path contains space.
- Fixed an issue when loading resources in the Uber JAR.
- Fixed an issue where shutdown hooks of the Uber JAR were overlapping and causing undefined behavior on shutdown.
- Fixed an issue where CDI not triggering shutdown events correctly when using the Uber JAR.
- Fixed allowing repackaging WAR and EAR into an Uber JAR.
- Updated Travis build.
- Fixed package-info.java loading when running in JAR with Java 9+.
v3.0.0-beta.3
We are happy to announce the third prerelease of the KumuluzEE 3.0.0 Beta. The v3.0.0-beta.3 prerelease of KumuluzEE framework further improves on the v3.0.0-beta.2 prerelease.
This prerelease completes an important goal set for the release of KumuluzEE 3.0.0 - the support of Java 9+ in the core framework. We have updated JAX-RS Jersey, JAX-WS CXF, JAX-WS Metro and JPA Hibernate components to support Java 9 and Java 10 and done extensive testing on each component to ensure everything works with the latest improvements in the Java runtime environment. Along with this update, the Jetty and JAX-WS CXF dependencies have been upgraded to the latest versions.
We have also included some missing integrations between various components. The Bean Valdation has been integrated with the CDI, which allows injection of Validator
instances in CDI beans and validation of input arguments and return values of CDI methods. Also, the JNDI now allows lookup for the JTA UserTransaction
.
For all features introduced in the 3.0.0 version before this prerelease, see the v3.0.0-beta.1 and v3.0.0-beta.2 release notes.
Features:
- Added support for Java 9+ in components JAX-RS Jersey, JAX-WS CXF, JAX-WS Metro and JPA Hibernate
Enhancements:
- Added Bean Validation CDI integration
- Added transaction manager to JNDI
- Added Rest Client extension group
Bugs:
- Fixed
stopServlet
method inJettyServletServer
throwsIllegalStateException
- Updated Travis build
Please note that KumuluzEE v3.0.0-beta.3 is a beta release and as such it is not recommended for use in production! We really appreciate your feedback so please report any issues and bugs for this Beta release on GitHub.
If no major bugs are found, this will be the last prerelease of KumuluzEE 3.0.0 so stay tuned for the final release!
Happy testing!
v3.0.0-beta.2
We have entered the second phase of KumuluzEE Beta testing. The v3.0.0-beta.2 prerelease of KumuluzEE framework continues to improve on the already stable v3.0.0-beta.1 prerelease.
The brand new feature in this prerelease is the support of the Apache CXF JAX-WS implementation. We are continuing in the spirit of modularity, as this is the second JAX-WS implementation, supported by the KumuluzEE framework, the first one being Metro. The samples showing the usage of the new framework are already available at the kumuluzee-samples repository.
Due to popular request we began implementing the mechanism that will allow activating or deactivating extensions via configuration framework properties. The necessary support in the core framework is finished and we will be pushing out support in each individual extension after the final 3.0.0 release.
Some enhancements that support further development of extensions also made it into this prerelase. The translation of configuration keys into environment variable names has changed to allow the kumuluzee-config-mp
extension to align with the latest MicroProfile Config 1.3 specification. We will be supporting the legacy lookups, so this won't break existing configuration.
A new configuration property has been added to the startup configuration, which instructs Jetty to propagate any
exceptions that happen during startup. This property has little use for the end-user but aids in the development of the KumuluzEE Arquillian Container Adapter.
Finally, the dependencies have been upgraded to their latest minor/patch versions and some minor bugs have been fixed.
For all features introduced in the 3.0.0 version before this prerelease, see the v3.0.0-beta.1 release notes.
Features:
- Added support for Apache CXF JAX-WS implementation
- Added ability for extensions to specify, when they should not be initialized
Enhancements:
- Added environment variable lookups as defined in the MicroProfile Config 1.3 specification
- Added configuration property that enables Jetty startup exception propagation
Bugs:
- Added support for legacy key names in
getListSize
for environment variables - Fixed test that fails if build path contains space
Please note that KumuluzEE v3.0.0-beta.2 is a beta release and as such it is not recommended for use in production! We really appreciate your feedback so please report any issues and bugs for this Beta release on GitHub.
Happy testing!
v2.5.3
v3.0.0-beta.1
We're exited to announce the first Beta of KumuluzEE version 3.0.0. It's the first of a series of prerelease versions that will feature full support for Java EE 8 as a baseline for KumuluzEE components, replacing Java EE 7. We're also bringing better support for Java 9 and above, with continuously increased streamlined modules support throughout the betas.
This release focuses on updating all Java EE components available in KumuluzEE to their Java EE 8 versions as well as further integration between them. Updated components are:
- JSF 2.3
- JPA 2.2
- JAX-RS 2.1
- CDI 2.0
- Bean Validation 2.0
- JSON-P 1.1
All implementations of the listed components have been updated to the latest Java EE component versions, so you're free to use any of them. In addition to the ones listed, this updated also brings the following new components that are new to KumuluzEE:
- JSON-B 1.0
- Java Mail 1.6
We're including the reference implementation for both of the new components, with alternative implementations planned in the future when they become available.
Additionally both JSON-P and JSON-B can now be used with JAX-RS automatically. You don't need to do anything, simply add the relevant components as your dependencies and it will work.
Make note that the Servlet component is still on version 3.1 as the default implementation Jetty has not yet updated upstream to support the 4.0 version of the Servlet component. It will be added as soon as it will become available. The omission of Servlet 4.0 for this beta however is a rather minor issue, as KumuluzEE already supports HTTP2, which is the flagship feature of Servlet 4.0.
We're also hard at work at continuously optimizing and reducing the footprint of the framework and its dependencies, such as removing unneeded libraries, reducing the footprint of the initial loader and general speed ups of the framework. The release also includes updates to the maven plugin and the uber JAR loader, which address a number of issues found since its introduction. It's now more stable and handles edge cases better. We also took this opportunity to remove some of the legacy stuff still residing inside KumuluzEE. All deprecated features in versions 2.x are removed, so make sure to check whether you're still using any.
The release also includes bug fixes, improved compatibility with the EE specification and updates of the various components and libraries to their latest upstream versions.
Features:
- Added new EE component Java Mail 1.6 (RI).
- Added new EE component JSON-B 1.0 (Yasson).
- Updated EE component JSF to 2.3 (Mojarra).
- Updated EE component JPA to 2.2 (EclipseLink, Hibernate).
- Updated EE component JAX-RS to 2.1 (Jersey).
- Updated EE component CDI to 2.0 (CDI).
- Updated EE component Bean Validation to 2.0 (Hibernate Validator).
- Updated EE component JSON-P to 1.1 (RI).
- Added support for JSON-P and JSON-B when (de)serializing objects with JAX-RS (Jersey).
- Removed deprecated features and config values.
Enhancements:
- Added the ability to retrieve registered Servlets at runtime.
- Retrieve configuration value as a raw key if the parsed key is not found.
- Sped up the classloading when using the uber JAR.
- Updated libraries and component implementations to their latest versions.
- Added support for dynamic key names with a custom prefix.
- Added support for key names containing dots.
Bugs:
- Uber JAR will now work in directories that include special characters (spaces, # ...).
- Fixed an issue when loading resources in the Uber JAR.
- Fixed an issue where shutdown hooks of the Uber JAR were overlapping and causing undefined behavior on shutdown.
- Fixed an issue where CDI not triggering shutdown events correctly when using the Uber JAR.
- Fixed allowing repackaging WAR and EAR into an Uber JAR.
Please note that KumuluzEE v3.0.0-beta.1 is a beta release and as such it is not recommend for use in production! We really appreciate your feedback so please report any issues and bugs for this Beta release on GitHub.
Happy testing!
v2.5.2
We are announcing the availability of KumuluzEE version 2.5.2.
This version brings important features and fixes to various bugs. Some of the features are:
- Improved support for MicroProfile 1.2.
- Improvements to the configuration framework, which from now on uses configurable priorities for the configuration sources instead of fixed ones. This feature allows for more dynamic approach to the configuration and also aligns configuration framework to the MicroProfile Config specification.
- Ability to have the configuration file outside the classpath has been added, which provides more freedom when configuring KumuluzEE with configuration files and enables Uber JAR deployments to read the configuration from file outside the actual JAR.
- Configuration parameter to disable the
Server
andX-Powered-By
HTTP headers has been added, which is recommended by security standards.
This release also includes fixes to various bugs and updates to the library dependencies. Note that to run a JSF or JSP project, the following dependency must now be included:
<dependency>
<groupId>com.kumuluz.ee</groupId>
<artifactId>kumuluzee-el-uel</artifactId>
</dependency>
Several extensions that enhance the development and usage of microservices have been released, including kumuluzee-health, kumuluzee-jwt-auth, kumuluzee-openapi, kumuluzee-swagger, kumuluzee-metrics and kumuluzee-fault-tolerance. They enable fast and easy integration of various cloud-native features and further coalign the KumuluzEE framework with the MicroProfile specification.
Features:
- Improved support for MicroProfile 1.2
- Configuration sources now use configurable priorities
- Added method for registering servlets with init order
- Added the ability to have the configuration file outside the classpath.
- Added configuration parameter to disable
Server
andX-Powered-By
HTTP headers
Enhancements:
- Lowered the default HTTP connector idle timeout to a reasonable level
- Updated component/library dependencies to their latest patch versions
Bugs:
- Added support for retrieving properties at root level when using
@ConfigBundle
annotation - Unified
getMapKeys
andgetListSize
method behavior across configuration sources - Updated
ContainerIncludeJarPattern
to work with paths that include /lib/ - Apps now create their own temporary directory, since system temporary files can be periodically cleared
- Fixed JUL loading in the EeClassLoader before the logging system is initialized causing JUL to not be redirected to the target logging implementation
v2.4.1
The new minor release includes several bug fixes regarding the new kumuluzee-maven-plugin
for uber JAR support.
Bugs
- When KumuluzEE is shutting down the uber JAR classloader will wait for other threads to finish and then perform the shutdown procedure.
- Fixed the Maven plugin copying dependencies to an incorrect directory - now target/dependency, was target/classes/dependency.
- Fixed the logging implementation in the EeClassLoader to not initialise the Java Util Logging before KumuluzEE itself has the chance to initialize it.
- Added the missing information of the loaded KumuluzEE extensions in the
EeRuntime
API.
v2.4.0
We're announcing the availability of KumuluzEE version 2.4.0.
This version marks an important milestone for the framework as it brings much needed major new features that were missing and improving the JTA integration, config framework, logging and the extensions subsystem, as well as fixed various bugs and aligned with the upstream versions of all the EE components and libraries.
We're please to highlight a few major additions to KumuluzEE, which both help bring the framework closer to more supported Java EE components as well as further improve the extensibility and support of more cloud-native features:
-
Continued work on JTA, further enhancing the CDI integration with proper transaction scoped persistence context and a few other improvements that are needed to correctly and successfully achieve CDI managed transactions.
-
Reworked and consolidated the main KumuluzEE config to use the config framework and added a public API to access it in your apps. We've also added a new public API for the KumuluzEE runtime that contains various framework's runtime information.
-
Full HTTP/2 support with or without SSL, as well as adding SSL with the HTTPS connector to the existing HTTP/1.1 support. This also brings proper reverse proxy support (e.g. for correct remote IP and scheme information), the ability to automatically redirect HTTP to HTTPS, custom SSL protocols and ciphers, option to enable default directory browsing and various other possible settings.
-
Brand new maven plugin
kumuluzee-maven-plugin
. The plugin will be used from now on to support the creation of full single uber jars that contain all dependencies and can be directly ran with a single command. Together with that, we also included some quality of life improvements, such as not requiring the presence of thewebapp
folder in the project resources and also support for the more standardWAR
project layout with thewebapp
folder being a sibling of theresource
folder. The location of thewebapp
folder is completely customisable and can be set to whichever folder you like. -
Reorganisation of the KumuluzEE logging system in tandem with specific support for logs extensions, that enable the correct usage of any logging framework you wish to use. By default KumuluzEE uses JUL which can be configured to use any other framework as port of the logs extension. This is developed together with the
kumuluzee-logs
official logs extension, which will include support for the most popular logging frameworks as well some additional logging functionality not found in traditional logging systems. The logs extension is however, like any other KumuluzEE extension, open to everyone. -
Updated the extension definition mechanism to enable custom extension groups without explicit support of KumuluzEE itself. Extension types are replaced with extension groups, which signify that only one extension of a particular group can be preset, except in special cases where a particular group is more tightly integrated into KumuluzEE with a special interface (like config). We are providing several officially supported extension groups, for which we will supply official extension implementations through the extension projects, however everyone is free to make his own. And with this change now, if none of the official group fit your new extension, you can simply create your own.
-
Support for advanced configuration of the data source pool via the standard config framework, additional config framework enhancements and initialisation validation within the framework.
-
Additional configuration framework enhancements with support for nested classes or arrays when using the CDI injection of config parameters and the ability to provide a custom path to the config file source.
We're also finishing the initial version of the multiple extensions that enhance the development and usage of microservices, with the goal of aligning them and conforming to the new microprofile specifications (config, health, ...) that are in development right now.
The new release also fixed some small bugs, improved compatibility with the EE specification and updated the various components and libraries to their latest upstream versions.
Features
- Full support for HTTPS with customisable SSL settings
- Full support for HTTP/2 with or without SSL with both the HTTP and HTTPS connector
- Option to automatically redirect from HTTP to HTTPS
- Full support for running behind a reverse proxy
- Added support for automatic proper transaction scoped persistence context when using JTA in CDI
- New API for accessing the frameworks config -
EeConfig
- New API for accessing the frameworks runtime information and utilities -
EeRuntime
- Added the System Properties as a default configuration source for the configuration framework
- Advanced configuration options for the datasource connection pool
- Added the ability to create a single uber jar containing all dependencies that can be ran directly with a single command using the new
kumuluzee-maven-plugin
- Overhaul and restructuring of the logging system to allow dynamic framework wide configuration of a custom logging solution via the extension mechanism.
- Restructured the extension definition mechanism to support custom groups that are not officially available.
Enhancements
- Restructured the KumuluzEE configuration variables to match the new system.
- Added the ability to toggle directory browsing of the server on or off.
- The
webapp
folder is no longer required to be present in the projects resources - The
webapp
folder can now be configured to be located anywhere, with the default being a sibling of theresources
folder to match the standardWAR
structure - Added a new global
debug
option to the main config, that signals whether the framework and your app/service is or should be in the debug mode. - Added support for nested classes and arrays for the CDI injection of config values using
@ConfigBundle
and@ConfigValue
. - Added support for a custom path for the config file source.
Bugs
- Fixed the
jboss-logging
dependency version mismatches.
v2.4.0-beta.2
We're releasing the second beta for KumuluzEE version 2.4.0. The biggest change in the beta is the overhaul and reorganisation of the KumuluzEE logging system in tandem with specific support for logs extensions, that enable the correct usage of any logging framework you wish to use. By default KumuluzEE uses JUL which can be configured to use any other framework as port of the logs extension. This is developed together with the kumuluzee-logs
official logs extension, which will include support for the most popular logging frameworks as well some additional logging functionality not found in traditional logging systems. The logs extension is however, like any other KumuluzEE extension, open to everyone.
We've also updated the extension definition mechanism to enable custom extension groups without explicit support of KumuluzEE itself. Extension types are replaced with extension groups, which signify that only one extension of a particular group can be preset, except in special cases where a particular group is more tightly integrated into KumuluzEE with a special interface (like config). We are providing several officially supported extension groups, for which we will supply official extension implementations through the extension projects, however everyone is free to make his own. And with this change now, if none of the official group fit your new extension, you can simply create your own.
We're also including some additional configuration framework enhancements, that didn't make it into the first beta. Such as support for nested classes or arrays when using the CDI injection of config parameters and the ability to provide a custom path to the config file source as well as some code cleanup and minor fixes.
The beta also includes some bug and regression fixes and dependency definition fixes.
If nothing major is found, we can expect the final release soon.
Features
- Overhaul and restructuring of the logging system to allow dynamic framework wide configuration of a custom logging solution via the extension mechanism.
- Restructured the extension definition mechanism to support custom groups that are not officially available.
Enhancements
- Added a new global
debug
option to the main config, that signals whether the framework and your app/service is or should be in the debug mode. - Added support for nested classes and arrays for the CDI injection of config values using
@ConfigBundle
and@ConfigValue
. - Added support for a custom path for the config file source.
Bugs
- Removed incorrect and unnecessary jersey dependencies in the jetty component.
- Downgraded the Jackson library 2.9.0 to 2.8.10 because of incompatibility with select libraries. We expect to upgrade it back shortly, once one of the bigger issues is resolved upstream.
- Fixed the
jboss-logging
dependency version mismatches.
v2.4.0-beta.1
We're releasing the first beta for KumuluzEE version 2.4.0. This beta includes many much needed features and improvements. We're continuing work on JTA, further enhancing the CDI integration with proper transaction scoped persistence context and a few other improvements. We've also reworked and consolidated the main KumuluzEE config to use the config framework and added a public API to access it in your apps. We've also added a new public API for the KumuluzEE runtime that contains various framework's runtime information.
We're also making a big push with full HTTP/2 support with or without SSL, as well as adding SSL with the HTTPS connector to the existing HTTP/1.1 support. This also brings proper reverse proxy support (e.g. for correct remote IP and scheme information), the ability to automatically redirect HTTP to HTTPS, custom SSL protocols and ciphers, option to enable default directory browsing and various other possible settings.
We're also happy to announce the availability of the new kumuluzee-maven-plugin
. The plugin will be used from now on to support the creation of full single uber jars that contain all dependencies and can be directly ran with a single command. Together with that, we also included some quality of life improvements, such as not requiring the presence of the webapp
folder in the project resources and also support for the more standard WAR
project layout with the webapp
folder being a sibling of the resource
folder. The location of the webapp
folder is completely customisable and can be set to whichever folder you like.
This beta also includes support for advanced configuration of the data source pool via the standard config framework, additional config framework enhancements and initialisation validation within the framework. We've also fixed some small bugs, improved compatibility with the EE specification and updated the various components and libraries to their latest upstream versions.
We're expecting a few more additions to the config framework to land before the release in the next beta, with a release following it, if no major issues are found.
Features
- Full support for HTTPS with customisable SSL settings
- Full support for HTTP/2 with or without SSL with both the HTTP and HTTPS connector
- Option to automatically redirect from HTTP to HTTPS
- Full support for running behind a reverse proxy
- Added support for automatic proper transaction scoped persistence context when using JTA in CDI
- New API for accessing the frameworks config -
EeConfig
- New API for accessing the frameworks runtime information and utilities -
EeRuntime
- Added the System Properties as a default configuration source for the configuration framework
- Advanced configuration options for the datasource connection pool
- Added the ability to create a single uber jar containing all dependencies that can be ran directly with a single command using the new
kumuluzee-maven-plugin
Enhancements
- Restructured the KumuluzEE configuration variables to match the new system
- Added the ability to toggle directory browsing of the server on or off
- The
webapp
folder is no longer required to be present in the projects resources - The
webapp
folder can now be configured to be located anywhere, with the default being a sibling of theresources
folder to match the standardWAR
structure