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

Reply via email to