Hi Brandon,

I suggest that you return a special/custom status when you need a
continuation instead of directly throwing a RetryRequest exception in your
Restlet application.

Then, at the ServerServlet level, you could check the response status. If it
is the special one, you could then throw the continuation exception. 

Would that work better?

Best regards,
Jerome  

> -----Message d'origine-----
> De : news [mailto:[EMAIL PROTECTED] De la part de Brandon Lonac
> Envoyé : mardi 13 février 2007 06:41
> À : [email protected]
> Objet : Re: Restlet and Jetty Continuations.
> 
> Jerome Louvel <contact <at> noelios.com> writes:
> 
> > 
> > If you can cast the request inputstream to a Jetty class 
> that gives you
> > access to the underlying NIO channel, that might work. I 
> haven't found the
> > JettyInputStream class in the API or another way to access 
> to the channel.
> > Any clue?
> > 
> > Thanks,
> 
> Continuations are actually really simple in, "almost".  I 
> merely used my
> ServerServlet subclass to override the ServiceServlet.service 
> method.  I then
> did the Continuation work around the base call and stuck the 
> contination in 
> the
> request properties.  This works great so far, but then the trouble.
> 
> Continuations work by throwing a jetty.RetryRequest 
> exception.  Jetty catches
> this  explicitly then will retry that exact request later.  
> When this happens 
> I
> am getting tripped up by the try/catch in 
> StatusFilter.doHandle.  It is 
> catching
> any Throwable.
> 
> I spent the afternoon digging to see if can extend classes to 
> provide my own
> StatusFilter but ran into the fact that the 
> Factory.getInstance.createHelper 
> is
> used inside of org.restlet.Server to set the 
> ApplicationHelper, which creates
> the StatusFilter.  I am already using a custom StatusService 
> to handle errors,
> it woul d be nice if the StatusService could provide the StatusFilter
> implementation as well.  Or simply provide a way to override the
> ApplicationHelper class.  Currently there does not seem to be 
> a way w/o
> re-compiling the noelius implementation.
> 
> It would be great if I could provide my own implementation 
> ApplicationHelper,
> ServerHelper, and Server.
> 
> I started down the path of overriding ServerServlet.createServer and 
> subclassing
> HttpServerHelper.  I copied the super implementation of 
> createServer, but 
> ran
> into the fact that inside the Server constructor the 
> ApplicationHelper was 
> being
> set.
> 
> Seems like the simplest solution would be to make the helper 
> field in the
> org.restlet.Server class protected so I could set it w/ my 
> ApplicationHelper
> subclass and thus use my subclassed StatusFilter class.  
> Maybe a better 
> solution
> would be to use the StatusService off of the Application for 
> getting StatusFilters.
> 
> I could be barking up the wrong tree, but one of these 
> approaches seems good. 
> As being able to set a Factory instance w/o changing the 
> resource file.
> 
> Thanks.
> -Brandon
> 

Reply via email to