2012-04-18 3 views
2

우리는 WS (웹 서비스) 라이브러리에 일종의 "1 차 수준 캐시"를 제공하기 위해 로컬 스레드를 사용하므로 호출 주어진 요청 내에서 동일한 URI에 대한 응답은 한 번만 발생합니다. 현재 @Before 필터를 사용하여 특정 요청이 시작되기 전에 재생이 주변의 풀을 유지하는 것처럼 보이기 때문에 로컬 스레드에서 아무 것도 지우지 않도록합니다.플레이 프레임 워크 - 요청이 끝나거나 다음 요청이 시작될 때 스레드 로컬이 지워짐을 보장합니다.

기본 컨트롤러에서 @With (MyThreadLocalKillingFilter.class)를 수행해야하는 것보다 더 좋은 방법이 있습니까? 그것은 작동하지만 hackish 보인다.

답변

0

실행 우리가 경기 시작과 함께 시작하는 서버에 내장 된 연극을 사용하고

주/당신이 컨트롤러에서이 방법 @With 사용 hackish 아무것도 없다. 나는 이것이 상당히 일반적이라고 생각한다. 기본 제어기를 확장하는 것보다 더 나은 관행으로 간주됩니다.

ThreadLocals를 사용하여 특히 요청 실행 스레드를 일시 중단하는 약속을 사용하는 경우 특히주의해야 할 수 있습니다.

+0

나는 그것을 기억해야한다는 것을 싫어합니다. 모든 컨트롤러에있을 필요는없는 크로스 커팅 문제입니다. 또한 ThreadLocals를 사용하여 잠재적 인 문제를 실현하는 것은 요청, 세션 등의 모든 곳에서 ThreadLocals를 사용하므로 프레임 워크 자체가 어떻게 처리되는지 궁금합니다. – dstarh