2011-06-02 12 views
7

En un servlet java, ¿cómo puedo acelerar las solicitudes http procedentes de los usuarios según la dirección IP del cliente? No deseo atender más de X solicitudes por segundo provenientes de una dirección IP de origen particular donde X es configurable y tiene valores prácticos en [0.1; 10] rango (de 1 solicitud en 10 segundos a 10 solicitudes por segundo).Throttle solicitud HTTP en Java Servlet

Respuesta

2

Escribiría un filtro para esa tarea.

3

utilizar un filtro de servlet: si estás en el embarcadero 7.0 o superior hay this

2

Como dijo @EJP, usando un filtro con un HashMap que almacena la última vez que el acceso de clave de dirección IP. 10 solicitudes de un segundo se traducirían a 100 ms entre llamadas, mínimo. Si se vuelve a enviar un código de error de servidor ocupado y se cancela la solicitud, se cerrarán rápidamente los recursos utilizados por la conexión. Hay soluciones precompiladas para Apache si esa es una opción para usted.

1

Compruebe si el contenedor que está utilizando proporciona este tipo de denegación de servicio. Si no, entonces tendrías que ir con un filtro.

ServletRequest.getRemoteHost() le da acceso a la IP del cliente.

Cuestiones relacionadas