jersey icon indicating copy to clipboard operation
jersey copied to clipboard

HK2 binder registered in Feature is ignored

Open fabriziocucci opened this issue 8 years ago • 5 comments

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:

  1. a org.glassfish.hk2.utilities.binding.AbstractBinder;
  2. a javax.ws.rs.core.Feature which, in turn, registers another org.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 configure method is invoked during startup);
  • the binder at 2 is not configured (i.e. its configure method 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

fabriziocucci avatar Sep 19 '17 19:09 fabriziocucci

Added test that shows the issue.

fabriziocucci avatar Sep 20 '17 12:09 fabriziocucci

Hi

Do you have any estimates on this issue? It prevents our project to migrate to 2.26.

Thanks.

sergey-morenets avatar Oct 25 '17 07:10 sergey-morenets

@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 avatar Oct 25 '17 07:10 sergey-morenets

@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.

fabriziocucci avatar Oct 25 '17 09:10 fabriziocucci

Hi, Maybe there is a link with : Features are initialized before the SpringComponentProvider #3795

xavier-b avatar Apr 10 '18 22:04 xavier-b