원래 요청을 메소드 매개 변수로 여러 레이어를 통해 전달하지 않고 현재 요청을 하위 스레드에서 사용 가능하게하려고합니다. 응용 프로그램은 서블릿 및 포틀릿으로 실행됩니다.Spring의 dispatcherportlet 및 dispatcherservlet에서 xml을 통해 setThreadContextInheritable (true)를 설정하는 방법
일반적으로 DispatcherServlet 및 DispatcherPortlet은 현재 요청을 현재 스레드의 RequestContextHolder에 설정합니다. 이렇게하면 호출 스레드가 현재 요청에 액세스 할 수 있습니다. 요청이 하위 스레드로 전파되지 않습니다.
내 경우 요청은 RestTemplate을 사용하여 ReST 호출을하는 하위 스레드를 생성하며 RestTemplate을 가로채는 ClientHttpRequestInterceptor에서 원래 요청에 액세스해야합니다. 절편에 전달 된 요청은 쓸모가 없습니다. 서버에 충돌하는 원래 요청이 필요합니다.
DispatcherServlet 및 DispatcherPortlet에는 모두 RequestContext를 자식 스레드에 전달하는 기능이 있습니다. setThreadContextInheritable (true). 그러나이 플래그를 true로 설정하는 것은 그리 쉽지 않습니다. 그것을 설정하는 init-param은 없으며 일반적으로 web.xml 또는 portlet.xml에서 지정합니다.
xml 구성을 사용하여 설정자를 통해 디스패처 포틀릿 또는 서블릿을 사용자 정의하는 방법이 있습니까? 필자가 발견 한 유일한 방법은 플래그를 내부적으로 true로 설정하고 web.xml 및 portlet.xml에서이를 사용하는 사용자 정의 dispatcherservlet/portlet을 작성하는 것입니다.
가 등록? – dschulten
@ds 포틀릿에 대해서는 한번도 다루지 않았습니다. 나는 모른다. –