0
내 서블릿에 대한 요청을 거부하거나 응답하지 않을 수 있습니까? 동일한 스레드에서 100 밀리 초 내에 두 개의 요청을받는다면 두 번째 요청을 완전히 무시할 수 있습니까? 또는 첫 번째 요청을 중단하고 두 번째 요청 만 처리 할 수 있습니까?거의 동시 HTTPServletRequests
내 서블릿에 대한 요청을 거부하거나 응답하지 않을 수 있습니까? 동일한 스레드에서 100 밀리 초 내에 두 개의 요청을받는다면 두 번째 요청을 완전히 무시할 수 있습니까? 또는 첫 번째 요청을 중단하고 두 번째 요청 만 처리 할 수 있습니까?거의 동시 HTTPServletRequests
후속 요청을 거부하려면 첫 번째 요청의 기간 내에 임의의 요청에 대해 처리 할 의사가있는 첫 번째 요청 시간을 기록해야합니다 (잘못된 응답 반환, 응답하지 않음 등). 예 :
private static final Object LOCK_OBJECT = new Object();
private static long lastAokTime;
private static final long MIN_REQUEST_TIME_MILLIS = 100L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
{
synchronized(LOCK_OBJECT) {
final long now = System.currentTimeMillis();
if (lastAokTime == 0 || (now - lastAokTime < MIN_REQUEST_TIME_MILLIS)) {
// reject the request
response.setStatus(500); // perhaps?
return;
} else {
lastAokTime = now;
}
// carry on and process request
}
}
스레딩은 재미있다,하지만 당신은 정말이 당 스레드 원하거나 전역 속성 (응용 프로그램 서버가 당신을 도와 배후 스레드 작업을 꽤 할) 당신이 원하는해야합니까? 위의 샘플은 전역이지만 스레드에 잠금을 설정하려는 경우 LOCK_OBJECT를 ThreadLocal 객체로 바꿀 수 있습니다.
행운을 비네.