281.6.5. Webapp 내에서 Restlet 서블릿 사용

Camel 2.8의
로 제공되는
서블릿 컨테이너 내에 Restlet 애플리케이션을 구성하고 하위 클래스 SpringServerServlet을 사용하면 Restlet 구성 요소를 삽입하여 Camel 내에서 설정할 수 있는 세 가지 방법이 있습니다.

서블릿 컨테이너 내에서 Restlet 서블릿을 사용하면 URI의 상대 경로(하드 코딩된 절대 URI의 제한 사항 제거) 및 들어오는 요청을 처리하는 호스팅 서블릿 컨테이너(새 포트에서 별도의 서버 프로세스를 생성하는 대신) 경로를 구성할 수 있습니다.

사전 요구 사항

  • Maven pom.xml 파일의 restlet에 Spring 확장 기능에 대한 종속성을 추가해야 합니다.

    <dependency>
      <groupId>org.restlet.jee</groupId>
      <artifactId>org.restlet.ext.spring</artifactId>
      <version>${restlet-version}</version>
    </dependency>

절차

  1. Restlet 애플리케이션을 구성하려면 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>
  2. 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>

결과

http://localhost:8080/mywebapp/rs/demo/1234 에서 배포된 경로에 액세스할 수 있습니다. 여기서 localhost:8080 은 서블릿 컨테이너의 서버 및 포트입니다. mywebapp 은 배포된 webapp의 이름입니다.

브라우저에 다음 내용이 표시됩니다.

"Request type : GET and ID : 1234"