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
Escribiría un filtro para esa tarea.
utilizar un filtro de servlet: si estás en el embarcadero 7.0 o superior hay this
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.
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.
El proyecto owasp-esapi-java, alojado en code.google.com, tiene una implementación de un filtro de acelerador que puede usar "tal cual" o usar como inspiración para usted.
Puede comprobar el código en el siguiente enlace:
- 1. HTTP Tunnel Servlet (Java)
- 2. ¿Cómo enviar una solicitud HTTP en Java?
- 3. Cómo analizar una solicitud HTTP en Java?
- 4. Generar solicitud HTTP mixta/multiparte en Java
- 5. Haciendo solicitud HTTP POST
- 6. Obteniendo un archivo de una solicitud HTTP en java
- 7. ExecutorService en Java Servlet
- 8. solicitud HTTP POST prueba de Java Junit
- 9. .NET Throttle algorithm
- 10. underscore.js: _.throttle (función, espera)
- 11. Solicitud HTTP en Ubuntu
- 12. ¿Cómo puedo saber si la solicitud al servlet se ejecutó mediante HTTP o HTTPS?
- 13. Obteniendo URL de solicitud en un servlet
- 14. ¿Cómo utilizar un filtro de servlet en Java para cambiar una url de solicitud de servlet entrante?
- 15. HTTP Status 405 - HTTP POST no es compatible con este servlet java de URL
- 16. Agregar un encabezado HTTP a la solicitud en un filtro de servlet
- 17. solicitud HTTP asíncrona en ruby
- 18. Enviando solicitud http en node.js
- 19. solicitud HTTP DELETE
- 20. Node.js http solicitud pipelining
- 21. para una solicitud HTTP
- 22. Git: solicitud HTTP fallida
- 23. Java/Servlet: get current sql.Date
- 24. Procesamiento asíncrono en Java desde un servlet
- 25. Leer hora del navegador/cliente desde Http Cabecera de solicitud de servlet
- 26. Acceso desde servlet Java
- 27. java-servlet request.getParameterValues ()
- 28. bucle infinito cuando la transmisión de una solicitud en un servlet de Java
- 29. ¿Guardar y reutilizar una solicitud en un filtro de servlet?
- 30. cómo agregar un encabezado http a una solicitud en java en java