Custom Factory
import org.glassfish.hk2.api.Factory;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.process.internal.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.container.ContainerRequestContext;
import vic.jersey.test.injection.MyObj;
public class MyObjFactory implements Factory<MyObj> {
private ContainerRequestContext requestContext;
@Inject
public MyObjFactory(ContainerRequestContext requestContext) {
this.requestContext = requestContext;
}
@Override
public MyObj provide() {
MyObj obj = ...; // get or create MyObj
return obj;
}
@Override
public void dispose(MobileDevice instance) {
}
public static class Binder extends AbstractBinder {
@Override
protected void configure() {
bindFactory(MyObjFactory.class).to(MyObj.class).in(RequestScoped.class);
}
}
}
Register binder
public class MyApplication extends ResourceConfig {
public MyApplication() {
....
register(new MyObjFactory.Binder());
}
}
Inject it
@Path("tests")
public class MyResource {
@GET
public Response test(@Context MyObj myObj) {
//...
}
}