282.6. Samples
282.6.1. 인증을 사용한 Restlet Endpoint
다음 경로는 http://localhost:8080 에서 POST
요청을 수신 대기하는 restlet
소비자 끝점을 시작합니다. 프로세서는 요청 본문과 id
헤더의 값을 에코하는 응답을 생성합니다.
URI 쿼리의 restletRealm
설정은 레지스트리에서 map을 찾는 데 사용됩니다. 이 옵션을 지정하면 restlet 소비자는 정보를 사용하여 사용자 로그인을 인증합니다. 인증된 요청만 리소스에 액세스할 수 있습니다. 이 샘플에서는 레지스트리 역할을 하는 Spring 애플리케이션 컨텍스트를 생성합니다. Cryostat 맵의 Cryostat ID는 restletRealmRef 와 일치해야 합니다.
다음 샘플은 http://localhost:8080 의 서버에 요청을 보내는 직접
끝점(즉, restlet 소비자 끝점)을 시작합니다.
이것이 우리가 필요한 전부입니다. 요청을 보내고 restlet 구성 요소를 시도할 준비가 되었습니다.
샘플 클라이언트는 다음 헤더를 사용하여 direct:start-auth
엔드포인트에 요청을 보냅니다.
-
CamelRestletLogin
( Camel에서 내부적으로 사용) -
CamelRestletPassword
( Camel에서 내부적으로 사용) -
ID
(애플리케이션 헤더)
org.apache.camel.restlet.auth.login
및 org.apache.camel.restlet.auth.password
는 Restlet 헤더로 전파되지 않습니다.
샘플 클라이언트는 다음과 같은 응답을 가져옵니다.
received [<order foo='1'/>] as an order id = 89531
282.6.2. 여러 방법 및 URI 템플릿을 서비스하는 단일 restlet 끝점 (더 이상 사용되지 않음)
이 기능은 더 이상 사용되지 않으므로 사용하지 마십시오!
restletMethods
옵션을 사용하여 여러 HTTP 메서드를 서비스하는 단일 경로를 만들 수 있습니다. 이 스니펫에서는 헤더에서 요청 메서드를 검색하는 방법도 보여줍니다.
다음 스니펫에서는 여러 가지 방법 서비스 외에도 restletUriPatterns
옵션을 사용하여 여러 URI 템플릿을 지원하는 끝점을 생성하는 방법을 보여줍니다. 요청 URI는 IN 메시지의 헤더에도 사용할 수 있습니다. URI 패턴이 끝점 URI에 정의된 경우(이 샘플에서 그렇지 않은) 끝점에 정의된 URI 패턴과 restletUriPatterns
옵션이 모두 적용됩니다.
restletUriPatterns=#uriTemplates
옵션은 Spring XML 구성에 정의된 List<String
>VLAN을 참조합니다.
<util:list id="uriTemplates"> <value>/users/{username}</value> <value>/atom/collection/{id}/component/{cid}</value> </util:list>
282.6.3. Restlet API를 사용하여 응답 채우기
Camel 2.8 사용 가능
org.restlet.Response
API를 사용하여 응답을 채우는 것이 좋습니다. 이렇게 하면 Restlet API에 대한 전체 액세스 권한과 응답을 세부적으로 제어할 수 있습니다. 인라인 Camel 프로세서에서 응답을 생성하는 경로 스니펫을 참조하십시오.
Restlet Response API를 사용하여 응답 생성
282.6.4. 구성 요소에서 max threads 구성
max 스레드 옵션을 구성하려면 다음과 같은 구성 요소에서 이 작업을 수행해야 합니다.
<bean id="restlet" class="org.apache.camel.component.restlet.RestletComponent"> <property name="maxThreads" value="100"/> </bean>
282.6.5. 웹앱 내에서 Restlet 서블릿 사용
Camel 2.8로 사용 가능
서블릿 컨테이너 내에서 Restlet 애플리케이션을 구성하고 하위 클래스 SpringServerServlet을 사용하면 Restlet 구성 요소를 삽입하여 Camel 내에서 구성을 활성화할 수 있습니다. http://www.restlet.org/documentation/2.0/jee/ext/org/restlet/ext/servlet/ServerServlet.html
서블릿 컨테이너 내에서 Restlet 서블릿을 사용하면 URI의 상대 경로로 경로를 구성하고 호스팅 서블릿 컨테이너가 들어오는 요청을 처리할 수 있도록 합니다(새 포트에서 별도의 서버 프로세스를 생성해야 함).
사전 요구 사항
Maven pom.xml 파일의 restlet에 Spring 확장에 대한 종속성을 추가해야 합니다.
<dependency> <groupId>org.restlet.jee</groupId> <artifactId>org.restlet.ext.spring</artifactId> <version>${restlet-version}</version> </dependency>
프로세스
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>
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
은 배포된 웹 앱의 이름입니다.
브라우저에는 다음 내용이 표시됩니다.
"Request type : GET and ID : 1234"