Hi Davd,

nice shoot again :)

I've entered a new RFC for that => 
http://restlet.tigris.org/issues/show_bug.cgi?id=740

best regards,
Thierry Boileau

> We tried to configure a Directory instance to serve out static
> resources from a particular classloader (in our case we must do this
> to access the resource files stored inside an OSGi bundle, each bundle
> has it's own classloader).
>
> We set the directory's root reference to be something like
> "clap://class/path/to/resource", following the instructions in the
> Restlet docs.
>
> Additionally, we made sure to set the custom class loader Request
> attribtue, also as documented:
>
>       request.getAttributes().put("org.restlet.clap.classloader",
> bundleClassLoader);
>
> However the Directory failed to serve out resources from the custom
> classloader, and instead served resources from the classloader which
> was providing the restlet classes.
>
> In looking at the code, it seems that the
> org.restlet.engine.local.DirectoryResource class is the culprit.  It
> ignores everything in the incoming Request object except for the
> target URI of the resource, and passes that URI to a call to
> getClientDispatcher.get(targetURI).  Therefor the request attribute
> for "org.restlet.clap.classloader" is ignored, and the
> ClapClientHelper code never sees it.
>
> As a work-around, we created a Directory subclass which uses the
> "clap://thread/path/to/resource" strategy, and, on each request,
> stores the current Thread's context class loader, replaces it with the
> bundleClassLoader, and calls super.handle(), and then finally replaces
> the original context class loader.
>
> any thoughts?
>   -Dave Fogel
>
> ------------------------------------------------------
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1231570
>
>

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1232559

Reply via email to