Hi Stokes,

There was a regression in RC5 that is now fixed in RC6. Your current hack
should work again, sorry for the pain :)

Subclassing ServerServlet to manually pass your ServletContext to your
Restlet Application should work fine too. There is a createApplication()
method that you can extend with something like:
 
        @Override
        public Application createAppplication() {
                Application result = super.createApplication();
        
((MyApplication)result).setServletContext(getServletContext());
        }

Best regards,
Jerome  

> -----Message d'origine-----
> De : news [mailto:[EMAIL PROTECTED] De la part de Stokes
> Envoyé : mardi 20 mars 2007 15:48
> À : [email protected]
> Objet : Getting the ServletContext (if you really have to) in 1.0RC5
> 
> I have an existing web application that uses Spring in 
> Tomcat, and I've added a
> REST API to it using Restlets with RC4.  I use the Noelios 
> ServerServlet as the
> entry point.
> 
> But when I create my root Restlet, I need to get at business 
> objects that are
> already created in a Spring (web) context.  For that reason, 
> the Noelios Spring
> extension (SpringContext) doesn't really work for me.  I 
> can't load my own beans
> from an XML file, because my own Restlets have dependencies 
> on other domain
> objects in the Spring world.
> 
> What I did to make this work in RC4 was to, in my 
> Application.createRoot()
> method, use this one line of evil code:
>    WebApplicationContext wac = 
> WebApplicationContextUtils.getWebApplicationContext(
>        ((ServletContextAdapter)getContext()).getServletContext()
>    );
> 
> That uses Spring's WebApplicationContextUtils to get the 
> existing Spring context
> from the ServletContext.  To get the Servlet context, I have 
> to hack the current
> RestContext by casting it to the ServletContextAdapter that 
> it really is.
> 
> This is obviously not _right_, so naturally when I tried to 
> upgrade to RC5 it
> broke.  I think that's because the Context setup by the new 
> ServerServlet has
> additional wrapper(s) or something.
> 
> So,
> (1) at first glance I didn't even see how to port my hack.  
> Is there a hackish
> way to get the ServletContext in RC5?
> (2) Any suggestions for the right way to do this?  My first 
> inclination would be
> to subclass ServerServlet with something of my own that makes 
> the ServletContext
> available.
> 
> Sorry for the long post.  I thought this might be a common 
> use-case for Spring
> users out there, so the answer(s) might benefit many.
> 
> Stokes.

Reply via email to