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

        

Reply via email to