Skip to content
This repository has been archived by the owner on May 28, 2018. It is now read-only.

HK2 binder registered in Feature is ignored #3675

Open
fabriziocucci opened this issue Sep 19, 2017 · 5 comments · May be fixed by #3683
Open

HK2 binder registered in Feature is ignored #3675

fabriziocucci opened this issue Sep 19, 2017 · 5 comments · May be fixed by #3683
Labels

Comments

@fabriziocucci
Copy link
Contributor

fabriziocucci commented Sep 19, 2017

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

@fabriziocucci
Copy link
Contributor Author

Added test that shows the issue.

fabriziocucci added a commit to fabriziocucci/jersey that referenced this issue Sep 25, 2017
Because providers registered in `Feature`s were not considered, registering a HK2 binder in a `Feature` didn't work.

This fixes javaee#3675.
@sergey-morenets
Copy link

Hi

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

Thanks.

@sergey-morenets
Copy link

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

@fabriziocucci
Copy link
Contributor Author

fabriziocucci commented Oct 25, 2017

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

@jansupol jansupol added the hk2 label Nov 1, 2017
@xavier-b
Copy link

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants