Estou desenvolvendo um sistema web que busca em uma base de dados documentos digitalizados.
Após selecionar o ítem desenado o sistema irá abrir o PDF correspondente.
O Problema é, como e onde devo colocar os arquivos para que o sistema Java funcione e consiga abrir o arquivo??? Estou utilizando o GlassFish.
Tenho uma aplicação Desktop que gera o PDF, o que estou querendo fazer agora é “pegar” esse PDF que foi gerado e está armazenado no mesmo servidor j2ee e mostrá-lo preferencialmente em uma janela popup.
Porém não estou conseguindo identificar qual a URL que devo passar para mostrar o arquivo, pois a URL que o glassfish gera é virtual, correto? por exemplo se eu colocar http://localhost:8080/PesquisaDocumento ele abre a página de pesquisa, eu quero que ao adicionar, por exemplo /arquivos/10914.pdf ele abra o arquivo PDF.
Não sei se entendi direito, mas vc quer exibir os pdfs que estao fora do diretorio da sua aplicação, se for esse o caso, voce pode criar um link simbolico dentro do diretorio do seu sistema apontando para o diretorio onde estao os pdfs.
o linux ja vem com o comando ln que cria os links simbolicos. Para o windows você precisa baixar um arquivo do site da microsoft, procure como linkd, ou pode criar uma raiz de arquivos distribuidos.
Estou com um problema parecido, so que no meu caso, os arquivos estao em outro servidor e nesse caso, o link simbolico nao funciona. Por favor, informe se souber de uma solução.
Justamente é este o caso, só que mesmo criando o link simbólico com “ln” não estou conseguindo acessar isto através do browser. Acho que terei que ao inves de passar a url do PDF para o popup terei que programar postando o local talves.
Você não pode passar o caminho direto do arquivo para o link, se fizer isso, o browser não conseguira localizar o arquivo, pois o caminho nao é valido.
ex: d:\imagem\teste.pdf
nesse caso, o browser vai procurar no computador do usuario e nao no servidor.
Eu fiz assim e funcionou:
OBS: Crie um outputlink no seu jsf apontando para a variavel arquivo, e veja o caminho que vai aparecer.
private String arquivo;
public void pesquisar(){
carregaDiretorios("D:\\Programas\\jboss-5.0.0.GA-jdk6\\server\\default\\deploy\\System.war\\processos");
}
public void carregaDiretorios(String nomeDiretorio){
try{
File dirAtual = new File(nomeDiretorio); // crio um objeto para o diretorio atual (dirAtual)
File[] dirInternos = dirAtual.listFiles(); // crio um array com os diretórios/arquivos que estão dentro do dirAtual
System.out.println(dirAtual.listFiles());
if (dirInternos != null){ // se tiver encontrado algo dentro do diretório atual
for (int i = 0; i < dirInternos.length; i++){ // percorro tudo que foi encontrado com esse loop
if (dirInternos[i].exists() && dirInternos[i].isDirectory()){ // verifico se o diretório/arquivo existe e se é um diretório (se for arquivo não vai entrar nesse IF, então será desprezado)
carregaDiretorios(dirInternos[i].getPath()); // se é um diretório eu chamo o mesmo método em que estou para tratar esse diretório, isso é RECURSIVIDADE!
}else if(dirInternos[i].getName().contains("image25")){
arquivo = "\\System\\"+ dirInternos[i].getAbsolutePath().substring(33);
arquivo = arquivo.replaceAll(" ", "%20"); // Se não fizer isso o browser vai colocar um sinal de + no lugar do espaço
System.out.println(arquivo);
}
}
}
}catch(Exception e){
e.printStackTrace();
}