Hi David,
use
@Context
private StorageServiceResolver serviceResolver;
best regards
Stephan
David Fogel schrieb:
> Hi Stephan-
>
> I've been experimenting with the restlet.ext.jaxrs support, trying to
> get a small test project working, and I've run into what seems like a
> pretty big problem. While I am fairly new to JAX-RS, it is my
> understanding that the suggested way of giving your Resource classes
> access to other things in their environment (such as a persistence
> service, a ServletContext, an osgi BundleContext, etc) is by creating
> classes that extend javax.ws.rs.ext.ContextResolver, annotating them
> with @Provider, and registering instances of them with the jax-rs
> implementation. The container should then be able to inject these
> custom objects into Resource classes that annotate a parameter or
> field type with @Context.
>
> For example, if I have a service class called StorageService, I would
> create a ContextResolver like this:
>
> @Provider
> public class StorageServiceResolver extends ContextResolver<StorageService> {
>
> private StorageService service;
>
> public StorageServiceResolver(StorageService service) {
> this.service = service;
> }
>
> public StorageService getContext(Class<?> type) {
> return service;
> }
> }
>
> I would then be able to access the StorageService object within my
> Resource classes like this:
>
> @Path("path/to/root/resource")
> public class MyResource {
>
> // should be able to do annotate a field:
> @Context
> private StorageService service;
>
> // OR should be able to annotate a constructor param:
> public MyResource(@Context StorageService service) {
> this.service = service;
> }
>
> @GET
> @Produces("text/plain")
> public String getStoredThing(@QueryParam("id") String id) {
>
> // and then access the service here:
> return service.getValueForID(id);
> }
> }
>
> But when I create such classes, and register them with your
> JaxRsRestlet, the JaxRsRestlet refuses to accept the Resource classes,
> claiming that they are missing any valid constructor or that a field
> can not be injected with that type.
>
> The problem may be that the methods in WrapperUtil.java don't make use
> of the current set of "providers", but instead expect only the minimal
> set of predefined context types.
>
> Is there some other way I'm missing to give my Resource classes access
> to my application environment?
>
> thanks,
> -Dave Fogel
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1362709