2016-10-21 2 views
1

나는 서블릿과이 아래 서블릿의 요청 듣고 낙타 경로를 사용하여 :Apache Camel - Servlet Component - 바인딩 경로 변수가 가능합니까?

from("servlet:///basepath?matchOnUriPrefix=true") 

matchOnUriPrefix 사실이기 때문에 그와 아무 문제는 다음 URL 패턴에 대한 요청이 성공적으로 듣고있다, 없다를 경로 :

호스트 : 포트/basepath/dynamicSubPath는

내가 갖고 싶은 t 바인딩 내가 경로 변수 (dynamicSubPath를) 만들 수있는 방법이 있다는 것입니다 교환 재산?

은 내가 아래 경로를 얻을 수 있다는 사실을 알고 :

String path = exchange.getIn().getHeader(Exchange.HTTP_PATH, String.class); 

을하지만 같은 문자열 구문 분석을 싶지 않다. 스프링 MVC에서 나는 다음과 같이 컨트롤러에 경로 변수를 삽입 할 수 있습니다

@RequestMapping(path = "/basepath/{dynamicSubPath}", method = RequestMethod.GET) 

다음 아래와 같이 dynamicSubPath 변수를 얻을 수 있습니다 :

@PathVariable String dynamicSubPath 

비슷한 일이 낙타 서블릿 구성 요소에 대한 수 있습니까?

답변

1

저는 낙타가 이것을지지한다고 생각하지 않습니다.

기본적으로 모든 요청 헤더와 쿼리 매개 변수는 메시지의 헤더로 설정됩니다. 요청한 경로도 존재하지만 (헤더 Exchange.HTTP_PATH을 통해 지적한대로), 구성 요소로 분리되지 않습니다.

문자열을 구문 분석하고 경로 변수를 메시지 헤더 또는 적절하게 특성을 설정하는 사용자 지정 프로세서를 등록해야합니다.

+1

예 서블릿이있는 일반 HTTP에서는 지원되지 않습니다. 그러나 REST를 사용하면 서블릿 구성 요소와 경로 바인딩을 지원하는 rest-dsl을 사용할 수 있습니다. http://camel.apache.org/rest-dsl –

+0

감사! 적어도 그것은 그것이 지원되지 않는다는 것을 나는 안다 :) – simpleusr