News

Weld 6.0.0.CR1

2024-11-13   release   Matej Novotny

First version of the Jakarta EE TCKs has finally landed in Central and with that, we have re-enabled all remaining TCK tests and are confident enough to issue a candidate release for Weld 6!

Note that both, Weld API and Weld Core artifacts have been released.

Here is the list of changes from last Beta:

  • Implement validation for unproxyability of sealed types (WELD-2799)

  • Correct injection into @Resource fields of beans registered through extensions (WELD-2798)

  • Improve the algorithm that determines BeanManager instance for synthetic beans coming from build compatible extensions (WELD-2794)

  • Weld OSGi bundle now correctly exports org.jboss.weld.util.reflection (WELD-2793)

  • Weld OSGi bundle now contains imports for built-in bean proxies (WELD-2796)

  • Re-introduce Jakarta EE CDI TCK into continuous integration (WELD-2778)

    • The TCK artifact in Central is not yet final (it is M1) but it is enough to make sure Weld passes all related CDI tests with WildFly

  • Fix possible file leak in org.jboss.weld.util.ServiceLoader (WELD-2800)

    • This was only reported during GlassFish testing and affected just Windows machines

  • Resolve license conflict of jboss-logging-processor inside shaded Weld SE JAR (WELD-2795)

As per usual, please report any issues you discover with this release so that we can squash those bugs.


Weld 5.1.3.Final

2024-8-27   release   Matej Novotny

A new version of Weld 5.1 has landed in Maven Central.

This is a bug squashing round which backports several notable fixes and changes from Weld 6 into Weld 5:

  • Change BeanManager resolution process for BuildCompatibleExtension not belonging to any bean archive (WELD-2794)

  • LazySessionBeanStore no longer swallows exceptions happening when attempting to initiate HTTP session (WELD-2762)

  • Correct how we determine proxy package for beans with unassignable types in their bean type set (WELD-2763)

    • This was only problematic in environments using WeldDefaultProxyServices to define their proxies (such as Weld SE)

  • Correct CommonLogger to mention correct GAV for Jandex (WELD-2770)

  • Added the ability to register Build Compatible Extension in Weld SE without discovery (WELD-2772)

  • Correct inheritance of producer fields if there is an extension present (WELD-2773)

  • Make sure @Default qualifier is added to events fired via BeanManager#getEvent() where appropriate (WELD-2775)

  • Observer method confiurator now correctly allows to override Reception settings without changing its notify() method (WELD-2786)

  • Clean up legacy Jetty integration parts (WELD-2787)

  • Use Lock instead of synchronized within ContextualInstanceStrategy to be more virtual thread-friendly (WELD-2788)

  • Skip superclass declarations of final methods when creating proxies (WELD-2785)

  • Ensure OSGi bundle has access to all dependencies needed for built-in beans (WELD-2796)


Weld 6.0.0.Beta4

2024-7-3   release   Matej Novotny

New versions of Weld artifacts are now available in Central - Weld Core 6.0.0.Beta4 accompanied by Weld API 6.0.Beta5.

Where applicable, 6.0.0.Beta4 bumps up Jakarta dependencies to their Final variants as well as implements remaining features from CDI spec, adds new Weld-specific API and addresses multiple backlog issues that were scheduled for this major release.

You might be wondering where did Betas 2 and 3 go. While you can find their artifacts in Central, they bear no difference from Beta4 apart from not having separate distributable ZIP and docs. With that in mind, below is the list of changes since Weld 6.0.0.Beta1:

  • Added the ability to register Build Compatible Extension in Weld SE without discovery (WELD-2772)

  • Use Lock instead of synchronized within ContextualInstanceStrategy to be more virtual thread-friendly (WELD-2788)

  • Skip superclass declarations of final methods when creating proxies (WELD-2785)

  • Observer method confiurator now correctly allow to override Reception settings without changing its notify() method (WELD-2786)

  • Correct CommonLogger to mention correct GAV for Jandex (WELD-2770)

  • Invoker API enhancements (WELD-2780)

    • Proper exception handling

    • Document API Weld offer above what CDI specification has; Weld retains all parts of the initial design CDI had

    • Added benchmarks to have a measure of our implementation versus direct invocation

    • Code cleanup and other minor tweaks

  • Remove SecurityManager related code from Weld (WELD-2789)

    • SecurityManager has been deprecated for quite a upcoming JDK versions plan to remove it completely so we remove it as part of the major release version

    • This means Weld 6 no longer uses priviledged actions to perform various tasks, such as constructor invocations, reflection on classes etc.

  • Remove WARN logging when an interceptor binding target of lifecycle interceptors targets anything other than TYPE (WELD-2790)

  • Revise Weld 6 examples; only keep essentials (WELD-2771)

  • Address Weld API javadoc warning (WELD-2779)

  • Revisit servlet setup and testing (WELD-2784)

  • Clean up legacy Jetty integration parts (WELD-2787)

Note that the latest documentation incorrectly states that it is for SNAPSHOT which isn’t the case. It is built for Beta4 but due to incorrect script setup the version number wasn’t picked up properly. This will be corrected for the next release.

As always, if you find further issues with Weld 6, let us know and we’ll try to help.


Weld 6.0.0.Beta1

2024-2-26   release   Matej Novotny

Weld Core 6.0.0.Beta1 along with Weld API 6.0.Beta2 are the latest two artifacts you’re going to need if you’re looking for an implementation of the CDI API 4.1.0.Beta1.

Changes based on CDI specification since last 6.x version:

  • The method invoker API in CDI has been simplified and the transformer functionality removed from the specification (WELD-2765)

    • Weld API introduced WeldInvokerBuilder which retains all of the transformers/wrappers that were originally present

    • We also added some more validation and other tweaks but the whole functionality is still being worked on as part of the follow up release

  • Support declaring @Priority on producers (WELD-2768)

    • This is also one of the features added by CDI API 4.1 and Beta1 of Weld supports it

  • BeanManager implementations in Weld now correctly extend ELAwareBeanManager from newly introduced CDI API module (WELD-2769)

    • There is no functionality change, this is just a step forward towards removing EL dependency from core CDI

  • Implemented programmatic access to assignability rules on BeanManager (WELD-2774)

    • BeanContainer/BeanManager now allow users to invoke #isMatchingBean() and #isMatchingEvent() methods

Other changes and bugfixes:

  • Correct inheritance of producer fields if there is an extension present (WELD-2773)

  • Make sure @Default qualifier is added to events fired via BeanManager#getEvent() where appropriate (WELD-2775)

  • Weld SE - manually registered portable extensions now reside in synthetic bean archive instead of their own (WELD-2776)

  • Updated CI setup to make sure bulk of our tests is running against JDK 21 (WELD-2777)

As always, if you find further issues with Weld 6, let us know and we’ll try to help.


Weld 6.0.0.Alpha1

2023-10-26   release   Matej Novotny

Looking for a CDI 4.1 implementation? We’ve got you covered! Weld Core 6.0.0.Alpha1 is now available and comes along with CDI API 4.1.0.Alpha1. Note that this version also uses latest version (2.2.0-RC1) of the Jakarta Interceptors specification.

CDI/CDI TCK related additions:

  • Create first implementation of CDI method invokers using MethodHandles (WELD-2764)

    • If you want to read up more about the original CDI API design and PR, take a look (here)

    • Note that this feature is still being improved on both, CDI side and (Weld side) but the general shape of it is already carved out

  • Support standardized means of getting interceptor bindings from InvocationContext (WELD-2756)

    • This was already possible via set of methods in WeldInvocationContext as well as the String key under which we stored these bindings in InvocationContext

    • Both of the above are no deprecated (but still working) and users are expected to use the standardized approach

  • Support inspectable CreationalContext and Contextual in CDI TCK SPI (WELD-2757)

Other bugfixes and project QoL features:

  • Fix proxy creation for beans using @Typed and having package-protected types split across packages (WELD-2758)

  • Correct how we determine proxy package for beans with unassignable types in their bean type set (WELD-2763)

    • This was only problematic in environments using WeldDefaultProxyServices to define their proxies (such as Weld SE)

  • WeldManager#getContexts now correctly returns an empty set when there are no contexts for given scope (WELD-2761)

  • Fix possible memory leak with repetitive thread group creation (WELD-2755)

  • WeldInitialListener can no longer throw NPE is application fails to start (WELD-2752)

    • Only possible in some EE containers on repeated re-deployment of Weld applications

  • LazySessionBeanStore no longer swallows exceptions happening when attempting to initiate HTTP session (WELD-2762)

  • Weld Core and Weld API are now using formatter plugin and impsort instead of checkstyle (WELD-2753)

  • Jandex version was bumped to 3.x across the project (WELD-2754)

As always, if you find further issues with Weld 6, let us know and we’ll try to help.