2012-09-24 15 views
11

Załóżmy, że mam aplikację serwera Java, która implementuje kilka usług internetowych. Załóżmy też, że mogę uwierzytelnić użytkowników aplikacji.Jak ograniczyć wykorzystanie usług internetowych w aplikacji Java?

Teraz chciałbym dodać pewne ograniczenia dla użytkownika do użycia usługi: np. limit szybkości (żądania na sekundę), maksymalny rozmiar żądania, itp.

Czy istnieje jakaś "gotowa do użycia" biblioteka w Javie, aby to zrobić?

+1

Tylko w celu wyjaśnienia - czy chodzi ci o limity oparte na tożsamości (np. Użytkownik X jest upoważniony do wywoływania usługi tylko 100 razy na minutę)? – home

+0

Tak, mam na myśli ograniczenia oparte na tożsamości. – Michael

Odpowiedz

1

można zrobić z Apache CXF przez konfigurowania przechwytujących. Ten page ma przykład konfiguracji wysokiego poziomu. Ten page zawiera szczegóły dotyczące przechwytujących. Możesz uzyskać dowolną fantazję dzięki weryfikacji. Nie wiem od ręki, jak zdobyć uwierzytelnionego użytkownika.

1

Jeśli posiadasz usługę uwierzytelniania/autoryzacji, przez którą przechodzą wszystkie twoje połączenia, to ograniczenie dla użytkownika może zostać do niej włączone. Nie jestem świadomy struktury, która pozwala na wykonanie niestandardowego kodowania.

Idealnie ten rodzaj logiki najlepiej skonfigurować poza samą usługą. Wiem, że wielbłąd zapewnia w budowanej przepustowości wiele żądań. Możesz zdefiniować własne zasady ograniczania przepustowości w celu odwzorowania liczby żądań na użytkownika.

1

Musisz utworzyć klasę Prostego przechwytywacza. Istnieje metoda onPreExecute(), w której można umieścić niestandardową kontrolę. Użyłem go ze Źródłem.