Enable Restlet servlet to be configured within a webapp -------------------------------------------------------
Key: CAMEL-4175 URL: https://issues.apache.org/jira/browse/CAMEL-4175 Project: Camel Issue Type: Improvement Components: camel-restlet Affects Versions: 2.7.2 Reporter: Stu Churchill Fix For: 2.7.3 There are three possible ways to configure a Restlet application within a servlet container (http://www.restlet.org/documentation/2.0/jee/ext/org/restlet/ext/servlet/ServerServlet.html) and using the subclassed SpringServerServlet enables configuration within Camel by injecting the Restlet Component - however this is currently only available internally within the Camel component. Use of the Restlet servlet within a servlet container enables routes to be configured with relative paths in URIs (removing the restrictions of hard-coded absolute URIs) and for the hosting servlet container to handle incoming requests (rather than have to spawn a separate server process on a new port). To configure, add the following to your camel-context.xml; <camelContext> <route id="RS_RestletDemo"> <from uri="restlet:/demo/{id}" /> <transform> <simple>Request type : ${header.CamelHttpMethod} and ID : ${header.id}</simple> </transform> </route> </camelContext> <bean id="RestletComponent" class="org.restlet.Component" /> <bean id="RestletComponentService" class="org.apache.camel.component.restlet.RestletComponent"> <constructor-arg index="0"> <ref bean="RestletComponent" /> </constructor-arg> </bean> And add this to your web.xml; <!-- Restlet Servlet --> <servlet> <servlet-name>RestletServlet</servlet-name> <servlet-class>org.restlet.ext.spring.SpringServerServlet</servlet-class> <init-param> <param-name>org.restlet.component</param-name> <param-value>RestletComponent</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>RestletServlet</servlet-name> <url-pattern>/rs/*</url-pattern> </servlet-mapping> You will then be able to access the deployed route at http://localhost:8080/mywebapp/rs/demo/1234 where; - localhost:8080 is the server and port of your servlet container - mywebapp is the name of your deployed webapp Your browser will then show the following content; "Request type : GET and ID : 1234" -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira