@Immediate annotation usage in Jersey2

I have a similar problem with the one given here: How do I get the Jersey 2 endpoint to initiate at startup?

But a little further down the line. I can immediately load my resource, but when I try to use it by calling the REST URL, I get the following stack trace.

java.lang.IllegalStateException: Could not find an active context for org.glassfish.hk2.api.Immediate 2. java.lang.IllegalStateException: While attempting to create a service for SystemDescriptor( implementation=com.service.MyResource contracts={com.service.MyResource} scope=org.glassfish.hk2.api.Immediate qualifiers={} descriptorType=CLASS descriptorVisibility=NORMAL metadata= rank=0 loader=null proxiable=null proxyForSameScope=null analysisName=null id=150 locatorId=0 identityHashCode=1249600275 reified=true) in scope org.glassfish.hk2.api.Immediate an error occured while locating the context 

My TResource class is annotated like this:

 @Immediate @Path("/test/v1") public class TResource { 

My grizzly based server is configured like this:

 ResourceConfig rc = new ResourceConfig() .packages(true, "com.mystuff" ) .property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, "true"); HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create(base_uri), rc); ApplicationHandler handler = new ApplicationHandler(rc); ServiceLocatorUtilities.enableImmediateScope(handler.getServiceLocator()); 

Any guidance would be appreciated! amuses, Phil

+5
source share
1 answer

One way to get a ServiceLocator descriptor is to implement Feature .

 import javax.inject.Inject; import javax.ws.rs.core.Feature; import javax.ws.rs.core.FeatureContext; import org.glassfish.hk2.api.ServiceLocator; import org.glassfish.hk2.utilities.ServiceLocatorUtilities; public class ImmediateFeature implements Feature { @Inject public ImmediateFeature(ServiceLocator locator) { ServiceLocatorUtilities.enableImmediateScope(locator); } @Override public boolean configure(FeatureContext context) { return true; } } 

Then just register Feature

 ResourceConfig rc = new ResourceConfig().packages("jersey.hk2.test"); rc.register(ImmediateFeature.class); 

I tested this and it works great

+7
source

Source: https://habr.com/ru/post/1216232/


All Articles