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