Hi Jim,

As the integration mode 3) has been requested several times already, I have
just added a new ServletConverter class to the Servlet extension that
handles everything transparently. Here is a usage example:

public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private ServletConverter converter;

    @Override
    public void init() throws ServletException {
        super.init();
        this.converter = new ServletConverter(getServletContext());
        
        Restlet trace = new Restlet(this.converter.getContext()){
            
            public void handle(Request req, Response res){
                getLogger().info("Hello World");
                res.setEntity("Hello World!", MediaType.TEXT_PLAIN);
            }
        };

        Router root = new Router();
        root.attach(trace);
        
        this.converter.setTarget(root);
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        this.converter.service(req, res);
    }
}

As you can see, your Servlet can extend any super class you want, you just
need to create one ServletConverter (and ideally to reuse it for all
requests).

I will add a FAQ entry tomorrow about this. For now, you can either get the
latest from SVN or get this current.zip:
http://www.restlet.org/downloads/1.0/current.zip

Best regards,
Jerome  

> -----Message d'origine-----
> De : Jim Alateras [mailto:[EMAIL PROTECTED] 
> Envoyé : lundi 26 mars 2007 13:24
> À : [email protected]
> Cc : [EMAIL PROTECTED]
> Objet : Re: spring and restlet
> 
> Jerome,
> 
> Thxs, this is great. I have a few more comments\questions inline
> 
> Jerome Louvel wrote:
> > 
> > 3) Embedded mode B: lighter version where Spring and the 
> Servlet container
> > are not masked by the concept of Restlet Application. This 
> requires the
> > creating of a special Servlet (maybe a Spring's 
> HttpBeanServlet subclass)
> HttpServletBean is the class that needs to be subclassed.
> 
> > and a bit of coding to convert Servlet's calls into 
> Restlet's calls. In this
> > mode, no Restlet's Application is created, 
> Restlets/Filters/Routers/Finders
> > are directly instantiated by Spring and configured like 
> other Spring beans.
> > Of course you loose the Application services and the 
> portability of your
> > Restlet code to other deployment environments.
> i think this is the most appealing mode for my application 
> but I think I 
> need a bit more info to get going. For instance if all I want 
> to do is 
> use the Router class then all I need to do is
> 
> 1. subclass HttpServletBean
> 
> 2. subclass doXXX in HttpServletBean
> 
> 3. for each method convert the HttpServletRequest to a 
> org.restlet.data.Request and subsequently the 
> org.restler.data.Response 
> to a HttpServletResponse.
> 
> 4. In each of the HttpServletBean.doXXX call Router.handle(request, 
> response) method to route to the appropriate Resource.
> 
> Is this correct?
> 
> Should I also look at the ServerServlet class for help on 
> converting a 
> Servlet call to a Restlet call?
> 
> 
> cheers
> </jima>

Reply via email to