java - Where do @Context objects come from -
i've been searching everywhere, can't seem find clear answer...
what mechanism whereby server (glassfish problem) injects actual objets annotated @context? more specifically, if wanted write class did like:
@path("/") public class myresource { @get public string dosomething(@context myobject obj) { // ... } } then how it? myobject instanciated, it, , how?
edit: i've seen stuff following:
using @context, @provider , contextresolver in jax-rs
http://jersey.576304.n2.nabble.com/contextresolver-confusion-td5654154.html
however, doesn't square i've seen, e.g. in constructor of org.neo4j.server.rest.web.restfulgraphdatabase, has following signature:
public restfulgraphdatabase( @context uriinfo uriinfo, @context database database, @context inputformat input, @context outputformat output, @context leasemanager leasemanager )
you can write own injection provider , plug jersey - @ singletontypeinjectableprovider , perrequesttypeinjectableprovider - extend 1 of these classes (depending on lifecycle want injectable object) , register implementation provider in web app.
for example, this:
@provider public class myobjectprovider extends singletontypeinjectableprovider<context, myobject> { public myobjectprovider() { // binds myobject.class single myobject instance // i.e. instance of myobject created bellow injected if use // @context myobject myobject super(myobject.class, new myobject()); } } to include provider in web app have several options:
- if app uses classpath scanning (or package scanning) make sure provider in right package / on classpath
- or can register using meta-inf/services entry (add meta-inf/services/com.sun.jersey.spi.inject.injectableprovider file having name of provider class in it's contents)
Comments
Post a Comment