E ai galera.
Oque preciso é o seguinte, os arquivos binarios serão baixados por clientes logados no meu sistema, eles ficam no web-inf da aplicacao.
e só podem ser acessados pelo servidor, entao hoje minha logica verifica se determinado cliente tem direito ao arquivo e sim libera o download.
Que é feito via uma logica usando vraptor 2.6, que pega um arquivo no servidor e envia para o usuario usando ServletOutputStream.
setando alguns paramentros no response.
Isso funciona bem, até com arquivos relativamente grandes, mais de 60mb.
Porem em alguns casos, estão gerando algumas exceptions:
ClientAbortException: java.io.IOException: An established connection was aborted by the software in your host machine
ClientAbortException: java.io.IOException: An existing connection was forcibly closed by the remote host
ClientAbortException: java.net.SocketTimeoutException
E do lado do cliente em alguns casos, eles reclamam que o arquivo chega corrompido, ou com tamanho inferior ao real.
por ex. o arquivo tem 5mb o download do cara termina instantaneamente mas fica com 20kb, ai o cliente tenta executar e dá arquivo corrompido.
Gostaria de opnioes de voces sobre isso, como contornar os erros e exceptions.
Não sei se essa é a melhor forma de fazer,
se tiverem sugestões agradeço.