Support 3rd party instantiators working with @Context only

Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/ChunkedInputReader.java b/core-client/src/main/java/org/glassfish/jersey/client/ChunkedInputReader.java
index e0179ba..4a27f23 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/ChunkedInputReader.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/ChunkedInputReader.java
@@ -24,6 +24,7 @@
 import javax.ws.rs.ConstrainedTo;
 import javax.ws.rs.RuntimeType;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.MessageBodyReader;
@@ -47,8 +48,8 @@
     private final Provider<PropertiesDelegate> propertiesDelegateProvider;
 
     @Inject
-    public ChunkedInputReader(Provider<MessageBodyWorkers> messageBodyWorkers,
-                              Provider<PropertiesDelegate> propertiesDelegateProvider) {
+    public ChunkedInputReader(@Context Provider<MessageBodyWorkers> messageBodyWorkers,
+                              @Context Provider<PropertiesDelegate> propertiesDelegateProvider) {
         this.messageBodyWorkers = messageBodyWorkers;
         this.propertiesDelegateProvider = propertiesDelegateProvider;
     }
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/filter/EncodingFilter.java b/core-client/src/main/java/org/glassfish/jersey/client/filter/EncodingFilter.java
index cdd21d8..94a3ec0 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/filter/EncodingFilter.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/filter/EncodingFilter.java
@@ -25,6 +25,7 @@
 
 import javax.ws.rs.client.ClientRequestContext;
 import javax.ws.rs.client.ClientRequestFilter;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 
 import javax.inject.Inject;
@@ -54,7 +55,7 @@
     private volatile List<Object> supportedEncodings = null;
 
     @Inject
-    public EncodingFilter(InjectionManager injectionManager) {
+    public EncodingFilter(@Context InjectionManager injectionManager) {
         this.injectionManager = injectionManager;
     }
 
diff --git a/core-client/src/test/java/org/glassfish/jersey/client/spi/PreInvocationInterceptorTest.java b/core-client/src/test/java/org/glassfish/jersey/client/spi/PreInvocationInterceptorTest.java
index d121b44..41e4759 100644
--- a/core-client/src/test/java/org/glassfish/jersey/client/spi/PreInvocationInterceptorTest.java
+++ b/core-client/src/test/java/org/glassfish/jersey/client/spi/PreInvocationInterceptorTest.java
@@ -29,6 +29,7 @@
 import javax.ws.rs.client.ClientRequestFilter;
 import javax.ws.rs.client.Invocation;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.util.concurrent.ExecutionException;
@@ -266,7 +267,7 @@
         private final Configuration configuration;
 
         @Inject
-        public InjectedPreInvocationInterceptor(Configuration configuration) {
+        public InjectedPreInvocationInterceptor(@Context Configuration configuration) {
             this.configuration = configuration;
         }
 
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/JaxrsProviders.java b/core-common/src/main/java/org/glassfish/jersey/internal/JaxrsProviders.java
index d88730f..d06479c 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/JaxrsProviders.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/JaxrsProviders.java
@@ -19,6 +19,7 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.ext.ContextResolver;
 import javax.ws.rs.ext.ExceptionMapper;
@@ -67,9 +68,9 @@
     private final Provider<ExceptionMappers> mappers;
 
     @Inject
-    public JaxrsProviders(Provider<MessageBodyWorkers> workers,
-                          Provider<ContextResolvers> resolvers,
-                          Provider<ExceptionMappers> mappers) {
+    public JaxrsProviders(@Context Provider<MessageBodyWorkers> workers,
+                          @Context Provider<ContextResolvers> resolvers,
+                          @Context Provider<ExceptionMappers> mappers) {
         this.workers = workers;
         this.resolvers = resolvers;
         this.mappers = mappers;
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/inject/ParamConverters.java b/core-common/src/main/java/org/glassfish/jersey/internal/inject/ParamConverters.java
index 3247d24..c2f9e55 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/inject/ParamConverters.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/inject/ParamConverters.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2023 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2018 Payara Foundation and/or its affiliates.
  *
  * This program and the accompanying materials are made available under the
@@ -21,7 +21,6 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.security.AccessController;
 import java.text.ParseException;
@@ -36,6 +35,7 @@
 import javax.inject.Singleton;
 import javax.ws.rs.ProcessingException;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.ext.ParamConverter;
 import javax.ws.rs.ext.ParamConverterProvider;
 
@@ -409,7 +409,7 @@
          * Create new aggregated {@link ParamConverterProvider param converter provider}.
          */
         @Inject
-        public AggregatedProvider(InjectionManager manager) {
+        public AggregatedProvider(@Context InjectionManager manager) {
             this.providers = new ParamConverterProvider[] {
                     // ordering is important (e.g. Date provider must be executed before String Constructor
                     // as Date has a deprecated String constructor
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/SourceProvider.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/SourceProvider.java
index f140dfc..24de447 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/SourceProvider.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/SourceProvider.java
@@ -27,6 +27,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.InternalServerErrorException;
 import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.MessageBodyReader;
@@ -96,7 +97,7 @@
         private final Provider<SAXParserFactory> spf;
 
         @Inject
-        public SaxSourceReader(Provider<SAXParserFactory> spf) {
+        public SaxSourceReader(@Context Provider<SAXParserFactory> spf) {
             this.spf = spf;
         }
 
@@ -137,7 +138,7 @@
         private final Provider<DocumentBuilderFactory> dbf;
 
         @Inject
-        public DomSourceReader(Provider<DocumentBuilderFactory> dbf) {
+        public DomSourceReader(@Context Provider<DocumentBuilderFactory> dbf) {
             this.dbf = dbf;
         }
 
@@ -179,8 +180,8 @@
         private final Provider<TransformerFactory> transformerFactory;
 
         @Inject
-        public SourceWriter(Provider<SAXParserFactory> spf,
-                            Provider<TransformerFactory> tf) {
+        public SourceWriter(@Context Provider<SAXParserFactory> spf,
+                            @Context Provider<TransformerFactory> tf) {
             this.saxParserFactory = spf;
             this.transformerFactory = tf;
         }
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/EntityInspectorImpl.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/EntityInspectorImpl.java
index d5f4d71..35f58ea 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/EntityInspectorImpl.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/EntityInspectorImpl.java
@@ -30,6 +30,7 @@
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
+import javax.ws.rs.core.Context;
 
 import org.glassfish.jersey.internal.inject.InjectionManager;
 import org.glassfish.jersey.internal.inject.Providers;
@@ -59,7 +60,7 @@
      * @param injectionManager injection manager to be injected.
      */
     @Inject
-    public EntityInspectorImpl(final InjectionManager injectionManager, EntityGraphProvider graphProvider) {
+    public EntityInspectorImpl(@Context InjectionManager injectionManager, @Context EntityGraphProvider graphProvider) {
         Spliterator<EntityProcessor> entities =
                 Providers.getAllProviders(injectionManager, EntityProcessor.class, new RankedComparator<>()).spliterator();
         this.entityProcessors = StreamSupport.stream(entities, false).collect(Collectors.toList());
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/ObjectGraphProvider.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/ObjectGraphProvider.java
index 6c8e85f..d2515b4 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/ObjectGraphProvider.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/ObjectGraphProvider.java
@@ -23,6 +23,7 @@
 import org.glassfish.jersey.message.filtering.spi.ScopeProvider;
 
 import javax.inject.Inject;
+import javax.ws.rs.core.Context;
 
 /**
  * {@link org.glassfish.jersey.message.filtering.spi.ObjectProvider Object provider} and
@@ -34,9 +35,9 @@
 final class ObjectGraphProvider extends AbstractObjectProvider<ObjectGraph> {
 
     @Inject
-    public ObjectGraphProvider(ScopeProvider scopeProvider,
-                                  EntityInspector entityInspector,
-                                  EntityGraphProvider graphProvider) {
+    public ObjectGraphProvider(@Context ScopeProvider scopeProvider,
+                               @Context EntityInspector entityInspector,
+                               @Context EntityGraphProvider graphProvider) {
         super(scopeProvider, entityInspector, graphProvider);
     }
 
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/AbstractObjectProvider.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/AbstractObjectProvider.java
index 4793f21..3b9b0a8 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/AbstractObjectProvider.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/AbstractObjectProvider.java
@@ -25,6 +25,7 @@
 import java.util.Set;
 
 import javax.inject.Inject;
+import javax.ws.rs.core.Context;
 
 import org.glassfish.jersey.internal.guava.Cache;
 import org.glassfish.jersey.internal.guava.CacheBuilder;
@@ -50,9 +51,9 @@
     private EntityInspector entityInspector;
     private EntityGraphProvider graphProvider;
 
-    public AbstractObjectProvider(ScopeProvider scopeProvider,
-                                  EntityInspector entityInspector,
-                                  EntityGraphProvider graphProvider) {
+    public AbstractObjectProvider(@Context ScopeProvider scopeProvider,
+                                  @Context EntityInspector entityInspector,
+                                  @Context EntityGraphProvider graphProvider) {
         this.scopeProvider = scopeProvider;
         this.entityInspector = entityInspector;
         this.graphProvider = graphProvider;
diff --git a/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java b/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java
index cb0c845..439df76 100644
--- a/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java
+++ b/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java
@@ -29,6 +29,7 @@
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
@@ -73,7 +74,7 @@
     public static class MessageProvider implements MessageBodyReader<MetaInf>, MessageBodyWriter<MetaInf> {
 
         @Inject
-        MessageProvider(Configuration configuration) {
+        MessageProvider(@Context Configuration configuration) {
             this.config = configuration;
         }
         private Configuration config;
diff --git a/incubator/kryo/src/main/java/org/glassfish/jersey/kryo/internal/KryoMessageBodyProvider.java b/incubator/kryo/src/main/java/org/glassfish/jersey/kryo/internal/KryoMessageBodyProvider.java
index 35c695a..77e0a99 100644
--- a/incubator/kryo/src/main/java/org/glassfish/jersey/kryo/internal/KryoMessageBodyProvider.java
+++ b/incubator/kryo/src/main/java/org/glassfish/jersey/kryo/internal/KryoMessageBodyProvider.java
@@ -27,6 +27,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.ContextResolver;
@@ -55,7 +56,7 @@
     private final Optional<KryoPool> kryoPool;
 
     @Inject
-    public KryoMessageBodyProvider(Providers providers) {
+    public KryoMessageBodyProvider(@Context Providers providers) {
         final MediaType mediaType = new MediaType("application", "x-kryo");
         contextResolver = providers.getContextResolver(Kryo.class, mediaType);
         kryoPool = getKryoPool();
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
index 064482b..57639ad 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
@@ -21,6 +21,7 @@
 import javax.ws.rs.core.Configuration;
 
 import javax.inject.Inject;
+import javax.ws.rs.core.Context;
 import javax.xml.parsers.DocumentBuilderFactory;
 
 /**
@@ -39,7 +40,8 @@
      */
     // TODO This provider should be registered and configured via a feature.
     @Inject
-    public DocumentBuilderFactoryInjectionProvider(final InjectionManager injectionManager, final Configuration config) {
+    public DocumentBuilderFactoryInjectionProvider(@Context final InjectionManager injectionManager,
+                                                   @Context final Configuration config) {
         super(config);
         this.injectionManager = injectionManager;
     }
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
index 6103bce..cfe44a6 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
@@ -21,6 +21,7 @@
 
 import javax.inject.Inject;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 import java.util.LinkedHashMap;
@@ -49,7 +50,8 @@
      */
     // TODO This provider should be registered and configured via a feature.
     @Inject
-    public SaxParserFactoryInjectionProvider(final InjectionManager injectionManager, final Configuration config) {
+    public SaxParserFactoryInjectionProvider(@Context final InjectionManager injectionManager,
+                                             @Context final Configuration config) {
         super(config);
         this.injectionManager = injectionManager;
     }
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
index 364e9b6..25a7ba7 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
@@ -24,6 +24,7 @@
 import javax.ws.rs.core.Configuration;
 
 import javax.inject.Inject;
+import javax.ws.rs.core.Context;
 import javax.xml.XMLConstants;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerFactory;
@@ -45,7 +46,8 @@
      */
     // TODO This provider should be registered and configured via a feature.
     @Inject
-    public TransformerFactoryInjectionProvider(final InjectionManager injectionManager, final Configuration config) {
+    public TransformerFactoryInjectionProvider(@Context final InjectionManager injectionManager,
+                                               @Context final Configuration config) {
         super(config);
         this.injectionManager = injectionManager;
     }
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlCollectionJaxbProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlCollectionJaxbProvider.java
index b9e4191..42c7644 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlCollectionJaxbProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlCollectionJaxbProvider.java
@@ -28,6 +28,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.ext.Providers;
 
@@ -73,7 +74,7 @@
     public static final class App extends XmlCollectionJaxbProvider {
 
         @Inject
-        public App(Provider<XMLInputFactory> xif, Providers ps, Configuration config) {
+        public App(@Context Provider<XMLInputFactory> xif, @Context Providers ps, @Context Configuration config) {
             super(xif, ps, MediaType.APPLICATION_XML_TYPE, config);
         }
     }
@@ -88,7 +89,7 @@
     public static final class Text extends XmlCollectionJaxbProvider {
 
         @Inject
-        public Text(Provider<XMLInputFactory> xif, Providers ps, Configuration config) {
+        public Text(@Context Provider<XMLInputFactory> xif, @Context Providers ps, @Context Configuration config) {
             super(xif, ps, MediaType.TEXT_XML_TYPE, config);
         }
     }
@@ -103,7 +104,7 @@
     public static final class General extends XmlCollectionJaxbProvider {
 
         @Inject
-        public General(Provider<XMLInputFactory> xif, Providers ps, Configuration config) {
+        public General(@Context Provider<XMLInputFactory> xif, @Context Providers ps, @Context Configuration config) {
             super(xif, ps, config);
         }
 
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
index 0c5a936..041897e 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
@@ -21,6 +21,7 @@
 import javax.ws.rs.core.Configuration;
 
 import javax.inject.Inject;
+import javax.ws.rs.core.Context;
 import javax.xml.stream.XMLInputFactory;
 
 /**
@@ -38,7 +39,8 @@
      */
     // TODO This provider should be registered and configured via a feature.
     @Inject
-    public XmlInputFactoryInjectionProvider(final InjectionManager injectionManager, final Configuration config) {
+    public XmlInputFactoryInjectionProvider(@Context final InjectionManager injectionManager,
+                                            @Context final Configuration config) {
         super(config);
         this.injectionManager = injectionManager;
     }
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlJaxbElementProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlJaxbElementProvider.java
index bd5ee4d..6e5bedc 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlJaxbElementProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlJaxbElementProvider.java
@@ -24,6 +24,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.ext.Providers;
 
@@ -67,7 +68,7 @@
     public static final class App extends XmlJaxbElementProvider {
 
         @Inject
-        public App(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public App(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, MediaType.APPLICATION_XML_TYPE, config);
         }
     }
@@ -82,7 +83,7 @@
     public static final class Text extends XmlJaxbElementProvider {
 
         @Inject
-        public Text(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public Text(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, MediaType.TEXT_XML_TYPE, config);
         }
     }
@@ -97,7 +98,7 @@
     public static final class General extends XmlJaxbElementProvider {
 
         @Inject
-        public General(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public General(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, config);
         }
 
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootElementJaxbProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootElementJaxbProvider.java
index 1418c24..a054c67 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootElementJaxbProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootElementJaxbProvider.java
@@ -22,6 +22,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.ext.Providers;
 
@@ -69,7 +70,7 @@
     public static final class App extends XmlRootElementJaxbProvider {
 
         @Inject
-        public App(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public App(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, MediaType.APPLICATION_XML_TYPE, config);
         }
     }
@@ -85,7 +86,7 @@
     public static final class Text extends XmlRootElementJaxbProvider {
 
         @Inject
-        public Text(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public Text(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, MediaType.TEXT_XML_TYPE, config);
         }
     }
@@ -101,7 +102,7 @@
     public static final class General extends XmlRootElementJaxbProvider {
 
         @Inject
-        public General(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public General(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, config);
         }
 
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
index b8c2950..dcde0e9 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
@@ -29,6 +29,7 @@
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.NoContentException;
@@ -81,7 +82,7 @@
     public static final class App extends XmlRootObjectJaxbProvider {
 
         @Inject
-        public App(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public App(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, MediaType.APPLICATION_XML_TYPE, config);
         }
     }
@@ -96,7 +97,7 @@
     public static final class Text extends XmlRootObjectJaxbProvider {
 
         @Inject
-        public Text(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public Text(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, MediaType.TEXT_XML_TYPE, config);
         }
     }
@@ -111,7 +112,7 @@
     public static final class General extends XmlRootObjectJaxbProvider {
 
         @Inject
-        public General(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+        public General(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
             super(spf, ps, config);
         }
 
diff --git a/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java b/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
index f2662c0..8123741 100644
--- a/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
+++ b/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
@@ -27,6 +27,7 @@
 import javax.ws.rs.ProcessingException;
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.NoContentException;
@@ -58,7 +59,7 @@
     private final Providers providers;
 
     @Inject
-    public JsonBindingProvider(Providers providers) {
+    public JsonBindingProvider(@Context Providers providers) {
         this.providers = providers;
     }
 
diff --git a/media/json-gson/src/main/java/org/glassfish/jersey/gson/internal/JsonGsonProvider.java b/media/json-gson/src/main/java/org/glassfish/jersey/gson/internal/JsonGsonProvider.java
index 7375fd3..5563587 100644
--- a/media/json-gson/src/main/java/org/glassfish/jersey/gson/internal/JsonGsonProvider.java
+++ b/media/json-gson/src/main/java/org/glassfish/jersey/gson/internal/JsonGsonProvider.java
@@ -28,6 +28,7 @@
 import javax.ws.rs.ProcessingException;
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.NoContentException;
@@ -57,7 +58,7 @@
     private Providers providers;
 
     @Inject
-    public JsonGsonProvider(Providers providers) {
+    public JsonGsonProvider(@Context Providers providers) {
         this.providers = providers;
     }
 
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java
index 7a803d8..123993c 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java
@@ -28,6 +28,7 @@
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.ext.Providers;
 
 /**
@@ -38,7 +39,7 @@
     private Configuration commonConfig;
 
     @Inject
-    public DefaultJacksonJaxbJsonProvider(Providers providers, Configuration config) {
+    public DefaultJacksonJaxbJsonProvider(@Context Providers providers, @Context Configuration config) {
         this.commonConfig = config;
         _providers = providers;
     }
@@ -46,8 +47,10 @@
     //do not register JaxbAnnotationModule because it brakes default annotations processing
     private static final String EXCLUDE_MODULE_NAME = "JaxbAnnotationModule";
 
-    public DefaultJacksonJaxbJsonProvider(final Annotations... annotationsToUse) {
+    public DefaultJacksonJaxbJsonProvider(Providers providers, Configuration config, Annotations... annotationsToUse) {
         super(annotationsToUse);
+        this.commonConfig = config;
+        _providers = providers;
     }
 
     @PostConstruct
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
index 641a078..9039844 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
@@ -23,6 +23,7 @@
 import java.lang.reflect.Type;
 
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 
@@ -62,8 +63,9 @@
     private final Provider<ObjectProvider<FilterProvider>> provider;
 
     @Inject
-    public FilteringJacksonJaxbJsonProvider(Provider<ObjectProvider<FilterProvider>> provider,
-                                            Providers providers, Configuration config) {
+    public FilteringJacksonJaxbJsonProvider(@Context Provider<ObjectProvider<FilterProvider>> provider,
+                                            @Context Providers providers,
+                                            @Context Configuration config) {
         super(providers, config);
         this.provider = provider;
     }
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/JacksonObjectProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/JacksonObjectProvider.java
index 46f5ebb..d9bc110 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/JacksonObjectProvider.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/JacksonObjectProvider.java
@@ -40,6 +40,7 @@
 import org.glassfish.jersey.message.filtering.spi.ScopeProvider;
 
 import javax.inject.Inject;
+import javax.ws.rs.core.Context;
 
 /**
  * @author Michal Gajdos
@@ -47,9 +48,9 @@
 final class JacksonObjectProvider extends AbstractObjectProvider<FilterProvider> {
 
     @Inject
-    public JacksonObjectProvider(ScopeProvider scopeProvider,
-                                  EntityInspector entityInspector,
-                                  EntityGraphProvider graphProvider) {
+    public JacksonObjectProvider(@Context ScopeProvider scopeProvider,
+                                 @Context EntityInspector entityInspector,
+                                 @Context EntityGraphProvider graphProvider) {
         super(scopeProvider, entityInspector, graphProvider);
     }
 
diff --git a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForDisabledModulesTest.java b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForDisabledModulesTest.java
index b34803e..811689b 100644
--- a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForDisabledModulesTest.java
+++ b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForDisabledModulesTest.java
@@ -29,6 +29,7 @@
 import javax.inject.Inject;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -55,7 +56,7 @@
     private static class TestJacksonJaxbJsonProvider extends JacksonJaxbJsonProvider {
 
         @Inject
-        public TestJacksonJaxbJsonProvider(Configuration configuration) {
+        public TestJacksonJaxbJsonProvider(@Context Configuration configuration) {
             this.configuration = configuration;
         }
         private Configuration configuration;
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonJaxbElementProvider.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonJaxbElementProvider.java
index 55d302f..6cf18bc 100644
--- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonJaxbElementProvider.java
+++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonJaxbElementProvider.java
@@ -28,6 +28,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.ext.Providers;
 
@@ -71,7 +72,7 @@
     public static final class App extends JettisonJaxbElementProvider {
 
         @Inject
-        public App(Providers ps, Configuration config) {
+        public App(@Context Providers ps, @Context Configuration config) {
             super(ps, MediaType.APPLICATION_JSON_TYPE, config);
         }
     }
@@ -81,7 +82,7 @@
     public static final class General extends JettisonJaxbElementProvider {
 
         @Inject
-        public General(Providers ps, Configuration config) {
+        public General(@Context Providers ps, @Context Configuration config) {
             super(ps, config);
         }
 
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonListElementProvider.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonListElementProvider.java
index 93338fd..15004d5 100644
--- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonListElementProvider.java
+++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonListElementProvider.java
@@ -32,6 +32,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.ext.Providers;
 
@@ -77,7 +78,7 @@
     @Consumes("application/json")
     public static final class App extends JettisonListElementProvider {
         @Inject
-        public App(Providers ps, Configuration config) {
+        public App(@Context Providers ps, @Context Configuration config) {
             super(ps, MediaType.APPLICATION_JSON_TYPE, config);
         }
     }
@@ -87,7 +88,7 @@
     public static final class General extends JettisonListElementProvider {
 
         @Inject
-        public General(Providers ps, Configuration config) {
+        public General(@Context Providers ps, @Context Configuration config) {
             super(ps, config);
         }
 
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonRootElementProvider.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonRootElementProvider.java
index 6a5d7f6..83040da 100644
--- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonRootElementProvider.java
+++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonRootElementProvider.java
@@ -28,6 +28,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.ext.Providers;
 
@@ -71,7 +72,7 @@
     @Consumes("application/json")
     public static final class App extends JettisonRootElementProvider {
         @Inject
-        public App(Providers ps, Configuration config) {
+        public App(@Context Providers ps, @Context Configuration config) {
             super(ps, MediaType.APPLICATION_JSON_TYPE, config);
         }
     }
@@ -80,7 +81,7 @@
     @Consumes("*/*")
     public static final class General extends JettisonRootElementProvider {
         @Inject
-        public General(Providers ps, Configuration config) {
+        public General(@Context Providers ps, @Context Configuration config) {
             super(ps, config);
         }
 
diff --git a/media/moxy/src/main/java/org/glassfish/jersey/moxy/internal/MoxyObjectProvider.java b/media/moxy/src/main/java/org/glassfish/jersey/moxy/internal/MoxyObjectProvider.java
index c6d7633..8f58d30 100644
--- a/media/moxy/src/main/java/org/glassfish/jersey/moxy/internal/MoxyObjectProvider.java
+++ b/media/moxy/src/main/java/org/glassfish/jersey/moxy/internal/MoxyObjectProvider.java
@@ -21,6 +21,7 @@
 import java.util.Set;
 
 import javax.inject.Inject;
+import javax.ws.rs.core.Context;
 import javax.xml.bind.JAXBException;
 
 import org.glassfish.jersey.message.filtering.spi.AbstractObjectProvider;
@@ -52,9 +53,9 @@
     }
 
     @Inject
-    public MoxyObjectProvider(ScopeProvider scopeProvider,
-                              EntityInspector entityInspector,
-                              EntityGraphProvider graphProvider) {
+    public MoxyObjectProvider(@Context ScopeProvider scopeProvider,
+                              @Context EntityInspector entityInspector,
+                              @Context EntityGraphProvider graphProvider) {
         super(scopeProvider, entityInspector, graphProvider);
     }
 
diff --git a/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/ConfigurableMoxyJsonProvider.java b/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/ConfigurableMoxyJsonProvider.java
index afccd4a..e8d3a68 100644
--- a/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/ConfigurableMoxyJsonProvider.java
+++ b/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/ConfigurableMoxyJsonProvider.java
@@ -29,6 +29,7 @@
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.ContextResolver;
@@ -80,7 +81,7 @@
     private final Configuration config;
 
     @Inject
-    public ConfigurableMoxyJsonProvider(Providers providers, Configuration config) {
+    public ConfigurableMoxyJsonProvider(@Context Providers providers, @Context Configuration config) {
         this.providers = providers;
         this.config = config;
     }
diff --git a/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/FilteringMoxyJsonProvider.java b/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/FilteringMoxyJsonProvider.java
index 541d6f3..500fcb1 100644
--- a/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/FilteringMoxyJsonProvider.java
+++ b/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/FilteringMoxyJsonProvider.java
@@ -20,6 +20,7 @@
 import java.lang.reflect.Type;
 
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 
@@ -46,9 +47,9 @@
     private final Provider<ObjectProvider<ObjectGraph>> provider;
 
     @Inject
-    public FilteringMoxyJsonProvider(Provider<ObjectProvider<ObjectGraph>> provider,
-                                     Providers providers,
-                                     Configuration config) {
+    public FilteringMoxyJsonProvider(@Context Provider<ObjectProvider<ObjectGraph>> provider,
+                                     @Context Providers providers,
+                                     @Context Configuration config) {
         super(providers, config);
         this.provider = provider;
     }
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
index a9fa031..bdd3777 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
@@ -32,6 +32,7 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.RuntimeType;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
@@ -84,7 +85,8 @@
      * application.
      */
     @Inject
-    public MultiPartReaderClientSide(final Providers providers, Provider<MessageBodyWorkers> messageBodyWorkers) {
+    public MultiPartReaderClientSide(@Context final Providers providers,
+                                     @Context final Provider<MessageBodyWorkers> messageBodyWorkers) {
         final ContextResolver<MultiPartProperties> contextResolver =
                 providers.getContextResolver(MultiPartProperties.class, MediaType.WILDCARD_TYPE);
 
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderServerSide.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderServerSide.java
index 4858b0c..d2b04f0 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderServerSide.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderServerSide.java
@@ -23,6 +23,7 @@
 
 import javax.ws.rs.ConstrainedTo;
 import javax.ws.rs.RuntimeType;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.MessageBodyReader;
@@ -52,9 +53,9 @@
     private final Provider<CloseableService> closeableServiceProvider;
 
     @Inject
-    public MultiPartReaderServerSide(final Providers providers,
-                                     final Provider<CloseableService> closeableServiceProvider,
-                                     final Provider<MessageBodyWorkers> messageBodyWorkers) {
+    public MultiPartReaderServerSide(@Context final Providers providers,
+                                     @Context final Provider<CloseableService> closeableServiceProvider,
+                                     @Context final Provider<MessageBodyWorkers> messageBodyWorkers) {
         super(providers, messageBodyWorkers);
         this.closeableServiceProvider = closeableServiceProvider;
     }
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
index 941fb1d..bfc94ea 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
@@ -30,6 +30,7 @@
 import javax.inject.Inject;
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
@@ -65,7 +66,7 @@
     private final Providers providers;
 
     @Inject
-    public MultiPartWriter(final Providers providers) {
+    public MultiPartWriter(@Context final Providers providers) {
         this.providers = providers;
     }
 
diff --git a/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInputReader.java b/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInputReader.java
index f3924c7..4502fcb 100644
--- a/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInputReader.java
+++ b/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInputReader.java
@@ -22,6 +22,7 @@
 import java.lang.reflect.Type;
 
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.MessageBodyReader;
@@ -44,7 +45,8 @@
     private final Provider<PropertiesDelegate> propertiesDelegateProvider;
 
     @Inject
-    EventInputReader(Provider<MessageBodyWorkers> messageBodyWorkers, Provider<PropertiesDelegate> propertiesDelegateProvider) {
+    EventInputReader(@Context Provider<MessageBodyWorkers> messageBodyWorkers,
+                     @Context Provider<PropertiesDelegate> propertiesDelegateProvider) {
         this.messageBodyWorkers = messageBodyWorkers;
         this.propertiesDelegateProvider = propertiesDelegateProvider;
     }
diff --git a/media/sse/src/main/java/org/glassfish/jersey/media/sse/OutboundEventWriter.java b/media/sse/src/main/java/org/glassfish/jersey/media/sse/OutboundEventWriter.java
index ea2d48f..362bc78 100644
--- a/media/sse/src/main/java/org/glassfish/jersey/media/sse/OutboundEventWriter.java
+++ b/media/sse/src/main/java/org/glassfish/jersey/media/sse/OutboundEventWriter.java
@@ -23,6 +23,7 @@
 import java.nio.charset.Charset;
 
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.MessageBodyWriter;
@@ -55,7 +56,7 @@
     private final Provider<MessageBodyWorkers> workersProvider;
 
     @Inject
-    public OutboundEventWriter(Provider<MessageBodyWorkers> workersProvider) {
+    public OutboundEventWriter(@Context Provider<MessageBodyWorkers> workersProvider) {
         this.workersProvider = workersProvider;
     }
 
diff --git a/security/oauth1-client/src/main/java/org/glassfish/jersey/client/oauth1/OAuth1ClientFilter.java b/security/oauth1-client/src/main/java/org/glassfish/jersey/client/oauth1/OAuth1ClientFilter.java
index bd33378..59a514f 100644
--- a/security/oauth1-client/src/main/java/org/glassfish/jersey/client/oauth1/OAuth1ClientFilter.java
+++ b/security/oauth1-client/src/main/java/org/glassfish/jersey/client/oauth1/OAuth1ClientFilter.java
@@ -26,6 +26,7 @@
 import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Provider;
+import javax.ws.rs.core.Context;
 
 import org.glassfish.jersey.client.oauth1.internal.LocalizationMessages;
 import org.glassfish.jersey.message.MessageBodyWorkers;
@@ -52,7 +53,8 @@
     private Provider<MessageBodyWorkers> messageBodyWorkers;
 
     @Inject
-    public OAuth1ClientFilter(Provider<OAuth1Signature> oAuthSignature, Provider<MessageBodyWorkers> messageBodyWorkers) {
+    public OAuth1ClientFilter(@Context Provider<OAuth1Signature> oAuthSignature,
+                              @Context Provider<MessageBodyWorkers> messageBodyWorkers) {
         this.oAuthSignature = oAuthSignature;
         this.messageBodyWorkers = messageBodyWorkers;
     }
diff --git a/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java b/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
index 9f557d1..ae2e297 100644
--- a/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
+++ b/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
@@ -32,6 +32,7 @@
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Feature;
 import javax.ws.rs.core.Form;
 import javax.ws.rs.core.GenericType;
@@ -358,8 +359,8 @@
         private final Provider<PropertiesDelegate> propertiesDelegateProvider;
 
         @Inject
-        public DefaultTokenMessageBodyReader(Provider<MessageBodyWorkers> workers,
-                                             Provider<PropertiesDelegate> propertiesDelegateProvider) {
+        public DefaultTokenMessageBodyReader(@Context Provider<MessageBodyWorkers> workers,
+                                             @Context Provider<PropertiesDelegate> propertiesDelegateProvider) {
             this.propertiesDelegateProvider = propertiesDelegateProvider;
             this.workers = workers;
         }
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/InjectedClientBodyWorker.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/InjectedClientBodyWorker.java
index 3367b1f..a04efc6 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/InjectedClientBodyWorker.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/InjectedClientBodyWorker.java
@@ -31,6 +31,7 @@
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.ContextResolver;
@@ -76,7 +77,7 @@
         Providers providers;
 
         @Inject
-        public ProvidersInjectedWriter(Providers providers) {
+        public ProvidersInjectedWriter(@Context Providers providers) {
             this.providers = providers;
         }
 
@@ -111,7 +112,7 @@
         Providers providers;
 
         @Inject
-        ProvidersInjectedReader(Providers providers) {
+        ProvidersInjectedReader(@Context Providers providers) {
             this.providers = providers;
         }
 
@@ -142,7 +143,7 @@
         Configuration configuration;
 
         @Inject
-        public ConfigurationInjectedWriter(Configuration configuration) {
+        public ConfigurationInjectedWriter(@Context Configuration configuration) {
             this.configuration = configuration;
         }
 
@@ -172,7 +173,7 @@
         Configuration configuration;
 
         @Inject
-        public ConfigurationInjectedReader(Configuration configuration) {
+        public ConfigurationInjectedReader(@Context Configuration configuration) {
             this.configuration = configuration;
         }