Вы могли бы иметь статический счетчик и сервлет, который просто выступает в качестве шлюза для дорогостоящего вызова метода. Вам просто нужно разобраться с вероятностью гонки на этом статическом счетчике.
Итак, вы бы превратили ваш текущий сервлет в вызов метода.
Затем сервлет шлюза получит запрос, посмотрит, достаточно ли низкий счетчик, а затем увеличит его. Если больше 10, верните сообщение об ошибке.
Это не идеальная ситуация, но если вы помещаете вещи в очередь, браузеры через некоторое время начинают время ожидания, или пользователи теряют терпение и нажимают кнопку отправки снова и снова, поскольку это занимает слишком много времени.
Если бы вы могли использовать javascript для отправки запроса, то есть несколько лучших решений, которые могут вам помочь.