Thanks Very much for this. I'm having trouble setting up the spring configuration to be used by the SpringServerServlet:
I've tried just setting up an application and a component but I don't know how I can set up a component with the right context. My attempt with a dummy context is below. Anyone know how to do this? Thanks, Barry <bean id="application" class="org.restlet.ext.spring.SpringApplication"> <constructor-arg ref="component" /> <property name="root" ref="userRestlet" /> </bean> <bean id="component" class="org.restlet.ext.spring.SpringComponent"> <property name="context" ref="nullContext"/> </bean> <bean id="nullContext" class="org.restlet.Context"> <constructor-arg><value>"dummy"</value></constructor-arg> </bean> "Florian Schwarz" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Abrakadabra - here is your SpringServerServlet - feel free to use it ;-) > > usage: > > <!-- The Restlet-Application Spring bean that will used by the Restlet > SpringServerServlet. --> > <context-param> > <param-name>org.restlet.application</param-name> > <param-value>beanNameOfTheApplicationToUse</param-value> > </context-param> > <!-- The Restlet-Component Spring bean that will used by the Restlet > SpringServerServlet. --> > <context-param> > <param-name>org.restlet.component</param-name> > <param-value>beanNameOfTheComponentToUse</param-value> > </context-param> > <!-- Restlet adapter --> > <servlet> > <servlet-name>springRestletServlet</servlet-name> > > <servlet-class>org.restlet.ext.spring.SpringServerServlet</servlet-class> > </servlet> > > <!-- Mapping to the Restlet stuff --> > <servlet-mapping> > <servlet-name>springRestletServlet</servlet-name> > <url-pattern>/ws/rest/v1.0/*</url-pattern> > </servlet-mapping> > > > > > > > package org.restlet.ext.spring; > > import org.restlet.Application; > import org.restlet.Component; > import org.restlet.Context; > import org.springframework.web.context.WebApplicationContext; > import org.springframework.web.context.support.WebApplicationContextUtils; > > import com.noelios.restlet.application.ApplicationContext; > import com.noelios.restlet.ext.servlet.ServerServlet; > import com.noelios.restlet.ext.servlet.ServletContextAdapter; > > import infrastructure.errorhandling.exception.InitializationException; > > /** > * This class is similiar to the ServerServlet, but instead of creating the > used Application-Restlet and > * Component-Restlet it lookups them from a Spring WebApplicationContext. > * > * @author Nebu > */ > public class SpringServerServlet extends ServerServlet { > > private static final long serialVersionUID = 110030403435929871L; > > /** > * Name of the attribute key containing a bean-id of the application to > use. > */ > public static final String APPLICATION_KEY = "org.restlet.application"; > /** > * Name of the attribute key containing a bean-id of the component to > use. > */ > public static final String COMPONENT_KEY = "org.restlet.component"; > /** > * Lookups the single Restlet-Application used by this Servlet from the > SpringContext inside the ServletContext. > * > * @param context The Context for the Application. > * > * @return The Restlet-Application to use or null if unable to lookup > or create. > */ > @Override > public Application createApplication(Context context) { > Application application = null; > String applicationBeanName = > getInitParameter(SpringServerServlet.APPLICATION_KEY, null); > application = (Application) > getWebApplicationContext().getBean(applicationBeanName); > > if (application != null) { > // Set the context based on the Servlet's context > ApplicationContext applicationContext = (ApplicationContext) > application.getContext(); > application.setContext(new ApplicationContext(application, new > ServletContextAdapter(this, context), applicationContext.getLogger())); > } else { > throw new InitializationException("Initialization of the > Restlet application failed. Check your web.xml and your > Spring-configuration"); > } > > return application; > } > /** > * Lookups the single RestletComponent used by this Servlet from the > SpringContext inside the ServletContext. > * > * @return The Restlet-Component to use or null if unable to lookup or > create. > */ > > @Override > public Component createComponent() { > Component component = null; > String componentBeanName = > getInitParameter(SpringServerServlet.COMPONENT_KEY, null); > component = (Component) > getWebApplicationContext().getBean(componentBeanName); > if (component == null) > throw new InitializationException("Initialization of the > Restlet component failed. Check your web.xml and your > Spring-configuration"); > return component; > } > public WebApplicationContext getWebApplicationContext() { > // by hand would be > // webApplicationContext applicationContext = > (WebApplicationContext) > getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); > return > WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); > } > } > > > > Barry schrieb: >> Hi all, >> >> I'm quite new to this so let me know if I'm missing something obvious. >> >> I'm trying to create a Spring configured Restlet Application that will >> run in a servlet container. >> >> As far as I can see I don't think this is supported (as the ServerServlet >> creates the application). Is there a way to do this? >> >> If not I may create a SpringServerServlet that looks the Application that >> willget the application from the spring config. >> >> Or alternatively create an an application that proxies its calls to a >> application looked up from the spring context. >> >> Which sounds better (or are they both horrible)? >> >> Barry >> >> >> > >

