[RESOLVIDO] Abrir arquivos externos (PDF)

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.

bem vindo ao guj, claro com mais duvidas.

sua aplicação ja gera o .pdf???

sendo assim voce quer apenas abrir ele?

ou voce quer saber como criar esse pdf para depois abrir??

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 fui claro…

Obrigado pela atenção.

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();
        }

Opa!! Resolvido… Obrigado pela colaboração !!!