Imagens fora do contexto da aplicação

Bom dia galera,

vi em alguns projetos como administradores de conteudo, que as imagens da aplicação ficam foram do contexto da aplicação. Conversando com alguns amigos desenvolvedores eles me falaram que isto é devido a um problema que pode ocorrer quando se tem muitos arquivos no contexto.

A solucao encontrada foi desenvolver um servlet que recebe o caminho fisico da imagem e chama o metodo write() de um OutputStream mostrando a imagem.

Alguém teria detalhes desse tipo de problema ou se é possível controná-lo de outra maneira, preferencialmente de uma forma onde as imagens fiquem dentro do contexto da aplicação ?

Abraços

up();

Bem, se a imagem está fora do contexto da aplicação, não tem outro modo mesmo, a não ser que esta imagem esteja já dispinível para o servidor, aí seria apenas colocar o endereço dela no src da tag image.

Quando está no contexto, você quer dizer dentro de alguma pasta do seu diretório que tem as páginas web? Se for é só colocar o caminho relativo, se tiver no classpath aí tem que ser com uma servlet também…

Não sei se entendi direito sua dúvida, mas espero ter ajudado em algo.

amigao, vc entendeu perfeitamente, muito obrigado pela sua colaboraçao…

voce saberia me dizer se realmente existe problema em deixar esta pasta no contexto, ou seja, dentro da pasta web ?

tendo em vista que sao adicionadas muitos arquivos diariamente na mesma.

Nunca li nada comentando que isso pode ser consirado um problema para o contexto da aplicação, pois é apenas um diretorio…
Isso vai facilitar quando for atualizar o sistema, pois vc nao vai precisar copiar essa pasta com as imagens, etc.
Fora isso é so o fato de a pasta ficar visivel apenas pelo servidor que possui o projeto…

muito obrigado renan…

vc quer dizer que quando fizer um re-deploy por exemplo, nao ha a necessidade de fazer um backupd da pasta das imagens para que ela nao seja perdida no processo?

abraço

Isso mesmo.
Onde trabalho temos essa situacao.
Localmente possui a nossa pasta de imagens na raiz, por exemplo “c:\imagens”;
E servidor de produção possui um diretorio com milhares de fotos,…
Sempre estamos gerando novas versoes do sistema, e nao faria sentido ficar fazendo o bkp desta pasta.

Como o diretorio esta setado em um arquivo de configuracao fica muito simples alterar o path.

Acho que a pasta fora do contexto tbm facilita pro pessoal responsavel pelos bkps…

Flw

Respondendo aqui também e completando…

Ah entendi, bem se colocar tudo no contexto vai ter que refazer seu .war realmente. Aí fica ruim mesmo.

Você pode criar também uma tabela no banco de dados para armazenar a imagem, e junto você aproveitava para talvez associar algumas tags ou outras informações que você queira utilizar…

Também pensei em outra, você poderia apenas deixar o diretório no contexto da aplicação, então quando você fazer o upload da imagem, você manda salvar nesta pasta. Assim, pode usar direto o nome do arquivo como se ele já estivesse lá quando você fez o .war. Só não sei se quando você manda um novo war os servidores de aplicação apagam tudo e começam de novo ou se apenas atualizam. Se for o caso de apagar tudo, acho que aí é melhor deixar via servlet mesmo e gravar em alguma pasta que você pode configurar no servidor…

Bem, depende muito das suas necessidades a escolha que você vai fazer… mas no que puder eu tento ajudar

Sobre a resposta do renanpto, sua pasta ficaria de fora da pasta web do seu projeto, só não sei como ficaria para acessá-la via servidor… mas deve ser possível deixar ela visível para seu sistema sim com alguma configuração. Alguém aí sabe qual? web.xml? server.xml? Outro?

Abraços

Qto ao deploy de novas versoes, se vai apagar as pastas existentes ou nao, vai depender de como é feito o deploy.
Aqui sempre é feito manualmente…

A ideia para acessar a imagem fora do contexto é simples.

exemplo com um servlet que faça isso.:

No html ficaria ± assim:

<img src="MyServlet?id=456"/>

Durante a renderização do html o servlet sera invocado passando qual imagem deve ser utilizada, dai basta encontra-la no disco e escreve-la na saida por um OutputStream.
Path da imagem

c:\imagens\456.jpg

Enjoy

[quote=renanpto]Qto ao deploy de novas versoes, se vai apagar as pastas existentes ou nao, vai depender de como é feito o deploy.
Aqui sempre é feito manualmente…

A ideia para acessar a imagem fora do contexto é simples.

exemplo com um servlet que faça isso.:

No html ficaria ± assim:

<img src="MyServlet?id=456"/>

Durante a renderização do html o servlet sera invocado passando qual imagem deve ser utilizada, dai basta encontra-la no disco e escreve-la na saida por um OutputStream.
Path da imagem

c:\imagens\456.jpg

Enjoy
[/quote]

Você poderia postar o exemplo do Servelt?

Att.

Revivendo topicos heheheehe.

Agora nao tenho nenhum exemplo.

Encontrei esse link que talvez te ajude…

http://www.coolinterview.com/interview/683/

Abraco