2013-01-07 5 views
6

현재 우리는 Spring MVC DispatcherServlet과 두개의 CXFServlets을 가진 자바 웹 애플리케이션을 가지고있다. DispatcherServlet은 기본 서블릿 (매핑 /)이며, 하나의 CXFServlet은 /api/*으로 매핑되고 다른 하나는 /services/*으로 매핑됩니다. 나를 괴롭히는 무엇CXF와 다중 서블릿 매핑

은, CXFServlet도에 매핑 /*없이,이 개 서비스 /api/v0에 하나 /services/myService 하나를 호스팅 한 CXFServlet도이 불가능 보인다는 것이다. 이것이 가능하다면 초기화 시간, 설정 번거 로움 및 다른 서블릿 인스턴스의 메모리 요구 사항을 절약 할 수 있습니다.

기본적으로 내 질문은 CXFServlet에 /* 매핑을 사용하지 않고 공통적 인 기본/루트 URL없이 Spring 네임 스페이스 구성을 사용하여 1 CXFServlet의 2 URL에서 2 CXF 서비스를 호스팅하는 방법을 알고 있다면?

답변

3

서블릿의 url-pattern없이 요청 된 URL 의 일부를 반환 CXF ServletController 첫 번째 통화 HttpServletRequest#getPathInfoinvoke 방법. 이 호출의 결과는 DestinationRegistry#getDestinationForPath에 대한 호출을 통해 정의 된 서비스를 일치시키는 데 사용됩니다. 따라서 CXF가 서블릿 파트가 포함 된 경로를 사용하여 CXF 일치 서비스를 제공하는 것은 현재 불가능합니다. CXF는이 경우에 HttpServletRequest#getServletPath을 호출하지 않습니다. 이 값을 사용하는 ServletController#getBaseURL 방법은 서비스 호출시에 사용되지 않기 때문에 서블릿의 초기화 파라미터 (<init-param>)에서 설정할 수있는 base-address 값은, 어떤 URL을 CXF 표시에 영향을 미칠 것입니다

참고.