HK2 binder registered in Feature is ignored
Description
Given the major breaking change around Jersey DI, I have spent some time today in the attempt to migrate a simple web app based on Jersey 2.25.1 to Jersey 2.26.
The web app contains a ResourceConfig which registers:
- a
org.glassfish.hk2.utilities.binding.AbstractBinder; - a
javax.ws.rs.core.Featurewhich, in turn, registers anotherorg.glassfish.hk2.utilities.binding.AbstractBinder.
Since I'm heavily relying on HK2-specific annotations, I tried to add jersey-hk2 as a dependency of the web app but the following came out:
- the binder at 1 is configured (i.e. its
configuremethod is invoked during startup); - the binder at 2 is not configured (i.e. its
configuremethod is not invoked during startup).
If I replace org.glassfish.hk2.utilities.binding.AbstractBinder with org.glassfish.jersey.internal.inject in 2, also that binder is properly configured.
I guess (and hope) that depending on jersey-hk2 should be sufficient to consistently register HK2 binders either directly on a ResourceConfig and indirectly through Features.
Test
- https://github.com/fabriziocucci/jersey-issue-3675
Added test that shows the issue.
Hi
Do you have any estimates on this issue? It prevents our project to migrate to 2.26.
Thanks.
@fabriziocucci
Hi
I tried to reproduce your use case and it worked only if I use Feaure + Binder(org.glassfish.jersey.internal.inject.AbstractBinder) If I registered my Binder(org.glassfish.jersey.internal.inject.AbstractBinder) directly in my ResourceConfig then configure method is not invoked.
@sergey-morenets I don't seem to be able to replicate your results, i.e. I can see the Jersey binder working properly!
I've just updated my test to include the following use cases:
- Jersey binder registered on
ResourceConfig(working); - Jersey binder registered on
FeatureContext(working); - HK2 binder registered on
ResourceConfig(working); - HK2 binder registered on
FeatureContext(NOT working).
It may very well be that you are hitting some other issue or there is something else in your test.
Hi, Maybe there is a link with : Features are initialized before the SpringComponentProvider #3795