Download de Arquivos Binários pelo Vraptor

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.

bom dia pessoal, vi que algumas pessoas entraram no topico mais nao responderam.
agora outra questao quem sabe alguem pode me ajudar.
sobre a exception:
ClientAbortException: java.net.SocketTimeoutException

teria como definir esse tempo de timeout ? no tomcat ou na propria aplicação ?

fiz uma tabela de log, só agora pela manha das 8 as 9hs, 81 clientes baixaram com sucesso, e 28 deram erro, desses 28, 22 são timeout.
alguem tem uma luz?

obrigado.

Você postou no local errado. Por acaso eu achei teu tópico aqui :D. A galera do vraptor usa esse sub-fórum: http://guj.com.br/forums/show/23.java

Você usa Vraptor 2.6, conheço quase nada dessa versão. Mas o que você quer realmente? Corrigir o tal erro ou tratar essas mensagens? Se for para tratar, no caso de download, você não tem muito a fazer senão retornar um erro-500 com a mensagem de erro.

blz cara obrigado.
tem como mover meu topico pra lá?

quero corrigir esse erro do timeout, e principalmente ver porque acontece isso.

obrigado.

Acho que apenas um debug bem minuscioso. Você pode tentar ver se isso acontece com um unico cliente, ou com um grupo especifico e analisar se é trafego de rede, problemas no cliente ou se é mesmo na sua aplicação. Verificar também se não é algum bloqueio do SO, ou até um lock no banco de dados caso você armazene no banco de dados.

Há algum stacktrace? Caso sim mostre aqui.