Weld 4.0.0.Final

2020-12-16   release   Matej Novotny

An early Xmas present for CDI lovers is here - Final release for Weld 4 is now available! You can pick your Xmas jar-packaged present from Maven Central right away.

Since there were no new reported issues after integrating Weld 4.0.0.CR1 version into GlassFish and WildFly EE 9 preview, we have promoted Weld to Final release. Latest core version is now 4.0.0.Final and Weld API that ships with it is 4.0.Final.

Functionally, Weld 3 and 4 remain identical and both are getting the same treatment and doses of bugfixes. The main difference is that Weld 4 operates with EE 9, meaning it expects you to use it with CDI 3.0 along with the new jakarta package names.

Given that most changes poured into this version were more about dependecy updates, structural changes etc., I won’t list them all here. However, if you are still curious, you could take a peek at JIRA release page and browse various Weld 4 releases that we did over time.

What’s more important is that we are keen on hearing from you should you find any issues with this version. Whether you are an integrator or user, we realize no project is ever bug-free and we want to smack those bugs! So if you hit any problems that you think are bugs, let us know via one of the usual channels:

  • Ask on mailing list

  • Create JIRA issues

  • Drop the question on Weld Gitter

Last but not least, the Weld team wishes you Merry Christmas and Happy New Year.

WildFly Patch

Sorry to disappoint, but we cannot provide a patch yet. WildFly source code already contains the needed bits for EE 9 server variant, but there wasn’t a release yet. Good news is, once there is a release, it will already contain Weld 4 Final! From there on, we can then deliver patches as we used to.

Weld 4.0.0.Beta1

2020-9-18   release   Matej Novotny

A new Weld 4 release is now available! Latest core version is now 4.0.0.Beta1 and Weld API that ships with it is 4.0.Beta1.

I will not be listing links to issues as usual, because I think more important work was done outside of JIRA tracking this time (although you can check the issues here). Instead, let me sum it up in a short list of noticeable changes:

  • All Weld bits are now present in Maven Central

    • Including servlet core (and shaded) which had to be left out last time

  • We are able to execute CDI TCKs in EE 9 environment once again and it’s all passing

  • We are now able to test servlets with Tomcats and Undertow

  • Reworked documentation generation tooling

    • Weld docs now have similar look to those of CDI and are distributed in either PDF or single page HTML format

  • Did some updates on Javadoc generation in API and Core if generated with JDK 11

  • Big update pass on tooling and dependencies

    • We are now using Dependabot and have bumped almost every dependency and tooling in the project

    • Which also led to nice cleanup and fixing of several issues

On top of that, every bugfix that would go into Weld 3 is of course being added to Weld 4 as well so those aren’t missing either!

WildFly Patch

Sadly we cannot provide a patch for WildFly as there is not yet any official release that would support EE 9. As soon as there is one, we will surely follow up with Weld patch!

Weld 3.1.5.Final

2020-8-12   release   Matej Novotny

New maintenance release is now out - Weld 3.1.5.Final. It comes along with Weld API 3.1.SP3 although there are no significant changes in the API. The release was mainly to update to a new parent project version, allowing us to consume newer plugins and prepare ground for MR JAR support. As for core artifacts, there are some bugfixes as usual, so let’s take a look at those.

Fixes and improvements:

  • Weld Core

    • Allow to aggressively invoke setAttribute() when manipulating with conversation map in session (WELD-2626)

      • This behaviour is gated behind a property; it doesn’t affect standard Weld behaviour

    • Automatically cleanup leftover HttpSessionDestructionContext when starting new session context on a thread (WELD-2631)

    • Fix a rare case where an integer overflow could happen during alternative priority ordering (WELD-2628)

  • Weld Servlet Support

    • Change WebAppBeanArchiveScanner to allow serving modules without publishing (WELD-2570)

  • Other bits

    • ObserverMethodConfigurator initialized by reading an AnnotatedType previously didn’t set the method as async when it should (WELD-2609)

    • Fix up generation of javadoc (especially with JDK 11) for shaded artifacts and make it include Weld API/SPI as well as CDI API javadoc

    • Prepare ground for MR JAR releases which are a likely solution to JDK 11 class defining for SE (WELD-2619)

      • This is hopefully coming in the very next release

    • Updates to website tooling (Docker image, Ruby dependencies) and updates to some old http references which should now be https

    • Re-enable testing of CDI TCK 1.2 with Weld 3.x; this was broken sometime during migration to Jakarta artifacts (WELD-2624)

    • A test that assumed an order in between conversation context lifecycle and session timeouts was found to be wrong (ConversationContextDestroyedOnSessionTimeoutTest) and was re-written to remove the erroneous assumption (WELD-2629)

    • Correct JaCoCo TCK execution (WELD-2625)

WildFly Patch

This time around, the patch for WildFly 20.0.1.Final is available.

If you’re not familiar with patching WildFly, check the FAQ.

Weld 4 and Jakarta EE 9

2020-5-13   release , jakarta   Matej Novotny

Weld Meets Jakarta EE 9

Most of you surely know that Jakarta EE 9 is on the horizon; slowly but steadily it is making its way into Java world. And we are not far behind, in fact we have just released Weld 4.0.0.Alpha2 which is an implementation of CDI 3.0! You heard that right, in Jakarta EE 9, all APIs have bumped their major versions; CDI turned 3.0 and so Weld version implementing that became 4.0. Hand in hand with it goes Weld API 4.0.Alpha1, also adapted to EE 9.

Some basic information about the release:

  • All the bits should be available in Maven Central at this point.

  • There is also .zip distribution as usual, see download page for more information.

  • No WildFly patch is provided this time around because WildFly does not yet have an EE 9 branch.

Working and Broken Parts

The only, yet considerably huge, change in APIs is (or at least should be) the swap from javax to jakarta packages. This comes with bunch of problems, for instance there is no EE server that could run on EE 9 with new packages yet. GlassFish is going to be first and they are working on integrating all the EE 9 reference implementations. There are some chicken-egg problems such as Weld requiring EE 9 server to execute CDI TCKs, but at the same time there is GlassFish needing Weld 4.0 to start operating with EE 9 in the first place. For this reason, our first few 4.0 releases are going to be marked as Alpha or Beta, they will not be fully tested and might be missing some parts that previous releases contained.

Here’s what’s working:

  • All testing that doesn’t require full EE container

  • Weld core implementation and API works as usual and is fully released

  • Weld examples work only partially, all those needing EE container have nowhere to be deployed

  • Weld SE works fully

  • Weld Probe should work so long as you are in SE

And here are the missing parts:

  • We cannot execute CDI TCKs until there are stable GlassFish build

    • We should be able to renew this pretty soon

  • Other in-container tests that we have (running on WildFly) are now disabled

  • Servlet parts of Weld are completely excluded from early releases

    • This is because there is currently no servlet working on EE 9, therefore we have nothing to adapt our internals to, yet

One big and sadly unanswered question is that of backward compatibility. In Jakarta itself, there seems to be a consensus of EE 9 not being backward compatible with EE 8. Weld 4 on its own will not work with applications written for Java EE 8 - basically with anything requiring old javax namespace packages. However, EE servers will be forced to adapt somehow, so I expect a tooling might eventually emerge that will allow to run legacy applications on newer servers. But that is yet to be seen and surely no sooner than after EE 9 release when other big servers start to adopt it.

Development Plans

Just to make things clear - we are planning on actively developing both, Weld 3 and Weld 4. We understand that EE server will need to take their time switching to Jakarta EE 9, all the more due to the aforementioned circumstances around backward compatibility. Therefore, both our versions will get their share of updates and bug fixes in the future!

Weld 3.1.4.Final

2020-3-28   release   Matej Novotny

New Weld version is here, say hello to Weld 3.1.4.Final. There are only few issues included in this release, so let’s take a look at them.

Fixes and improvements:

  • Weld Core

    • ObserverMethodConfigurator initialized by reading an AnnotatedType previously didn’t set the method as async when it should (WELD-2609)

    • Fixed observability of @Destroyed events for Conversation context when there are multiple WARs deployed (WELD-2610)

    • After a failed attempt to restore a conversation, Weld could omit firing @Initialized event; this is now working properly (WELD-2611)

    • Cleanup of stored conversations required unnecessarily many locks simultaneously which could lead to deadlock on some servers (WELD-2612)

    • Removed Unsafe usage as means of cracking open ClassLoader for proxy definition (WELD-2613)

      • This only helped to hide IllegalAccess warning on JDK 11 (which will now show again)

      • Starting with JDK 12 and newer, Unsafe doesn’t work at all making this solution obsolete

      • We’ve created (WELD-2619) in order to search for better solution that would work across all JDK versions

    • Using HttpSessionContext.destroy() could sometimes not destroy the instance if it wasn’t used in current request (WELD-2615)

    • Fix OSGi versions for EE dependencies (WELD-2616)

    • Properly close stream after reading (WELD-2606)

WildFly Patch

This time around, the patch for WildFly 19.0.0.Final is available.

If you’re not familiar with patching WildFly, check the FAQ.