Для того чтоби кто-то мог скачать файл я делаю так: формирую ссилку на некую урлу, которая будет обробативаться кое-каким сервлетом, плюс передаю один дополнительний параметр (id файла). Етот сервлет имеет несколько возможностей: download, preview, delete, tempupload. Тоесть етот сервлет делает непосредственно delivery!!!
При такой функциональности нет никакой проблеми сделать счетчик для каждого файла внутри етого сервлета!!!