Il mio requisito è molto semplice da comprendere.Come limitare le chiamate a servizi Web in un'applicazione Web Java
Desidero chiamare un servizio Web dalla mia applicazione Web Java con una limitazione di massimo 10 chiamate al minuto al servizio web. Subito dopo 1 minuto, posso stabilire un'altra connessione 10, indipendentemente dallo stato delle precedenti 10 chiamate al servizio web (completate o non completate).
Qualcuno può guidarmi l'approccio per implementarlo? Qualche tutorial o link utili?
Questo sembra buono. Devo rendere la classe singleton, in quanto più utenti possono colpire allo stesso tempo. Oppure posso inserire questo codice che hai postato in una semplice classe java e usarlo nel mio servlet? – Badal
@Badal puoi avere tutte le istanze che vuoi, ad es. per diversi servizi web. Pertanto, non vorrei renderlo un singleton. È assolutamente necessario condividere l'istanza tra tutte le chiamate a un servizio protetto. Tuttavia, come farlo dipende dalla tua applicazione. Ad esempio, se stai usando Spring, dovresti rendere RequestThrottler un campo di un bean anche di un bean stesso. In alternativa, è possibile memorizzarlo nell'ambito dell'applicazione dell'applicazione Web o eseguire la limitazione all'interno di un filtro. Vedete, molte opzioni qui. – sfussenegger
@ sfussenegger: Per essere chiaro, lascia che ti spieghi. Diciamo che 500 utenti hanno colpito il mio server, quindi avrò 500 istanze servlet. Ciascuno creerà l'oggetto SomeWebService e l'oggetto throttler (quindi avrò 500 oggetti di servizio e 500 oggetti throttler). Ora la classe RequestThrottler si prenderà cura di Maximum hit al minuto. Per favore, la mia comprensione è giusta? e comunque, grazie mille per il tuo aiuto. :) – Badal