transferTo() não funciona em produção (centOS+glassfish)
22/03/2015 16:08
0
Pessoal, boa tarde.

Estou sofrendo com um problema e gostaria de um help. Talvez alguém já tenha passado por algo semelhante ou uma ideia diferente.

Tenho uma aplicação que tem uma espécie de galeria de imagens onde o usuario pode fazer o upload dos arquivos, inclusive mais de um ao mesmo tempo.
Esses arquivos sao organizados em uma estrutura de diretorios que sao compartilhados via ftp.

Basicamente, depois que pego a lista de arquivos do request eu itero e uso o
 arquivo.transferTo(fileDest)

para subir as imagens/arquivos para as pastas.

Quando rodo localmente, funciona que é uma beleza. Os diretorios sao criados e populados com os arquivos. Mas quando subo a aplicação para o servidor que roda a aplicação, os arquivos não são enviados.

Ja tentei algumas coisas:
Alterei a permissao do diretorio onde essas pastas ficariam com chmod 777, nao adiantou.

Antes eu subia a imagem para um diretorio dentro da aplicao, usando "servletContext.getRealPath"... Vi que isso tem mais maleficio que beneficio e mudei: agora subo a imagem para um diretorio em "/var/xxx/arquivos" e uso

String filename = "monto/com/base/nos/parametros"
FileInputStream fis = new FileInputStream(filename);

int b = 0;
while ((b = fis.read()) != -1) {
response.getOutputStream().write(b);
}


Mas o problema continuou. Roda quando estou local, mas não quando subo para hospedagem. Troquei mais uma vez as permissoes do diretorio na raiz e sem sucesso.

Para piorar, não dá nenhuma mensagem de erro quando carrego. Passa-se um tempo como se os arquivos estivessem sido carregados, a action termina retornoando pro show normalmente, mas os diretorios nao sao criados.

Ha algum jeito de dar um force no jeito de subir os arquivos?

Em um outro modulo do mesmo sistema, usei uma byte[] para persistir as imagens, e tambem nao funciona quando subo para a hospedagem! Mas la o erro é diferente

java.lang.NullPointerException: Cannot invoke method getContentType() on null object

at agco.core.DealerController.upload_organograma(DealerController.groovy:32)

at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)


como se o arquivo que foi postado fosse Null

.....

Antes eu estava achando que era puramente problema de permissão de escrita nos diretorios, mas ja nao tenho certeza.


Quando jogo manualmente os arquivos (FTP) nos diretorios que deveriam ter sido criados, consigo lista-los e exibi-los com o outputStream. Mas nao consigo subir.

Há luz no fim do túnel? rs

Enquanto isso estou tentando instalar um Tomcat no servidor pra ver se o pau eh no Glassfish.
Tags: Glassfish, upload, outputStream, byte[], arquivo


0
Resolvido!

Gato Tom Wins!

Acho que o problema era realmente com o Glassfish. Depois de esgotar as alternativas, instalei o tomcat 7 e tudo funcionou....

UFAAA!
22/03/2015 17:16



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto