nao tem como vc ter controle da requisição de um cliente via http. o que você pode controlar é o IP do cara, e disponibilizar o arquivo para determinado ip 1 única vez…
Como saber se o download acabou ou não?! Não sei se há alguma possibilidade em fazer isso com java, mas creio que você vai ter que utilizar outros artifícios…