Download de arquivo txt em website para atualização do sistema

6 respostas
mdea

Tenho um sistema desktop que funciona a alguns anos. Nesse sistema implementei um sistema de atualização pela internet, onde baixo um arquivo txt do meu website contendo a versão mais recente do sistema e os caminhos para o download dos jars atualizados. Isso sempre funcionou, nunca tive problemas, porém, nessa ultima atualização me apareceu esse problema que me deixou perdido. Atualizei o txt para a nova atualização 3.02, porém o sistema não atualizou. Verifiquei então que o sistema esta baixando o txt antigo com a versão 3.01, e para piorar, verifiquei o txt no servidor via ftp e a versão esta atualizada(3.02). E se eu baixo o arquivo pelo browser a versão que recebo tbm é a atualizada(3.02). Estou perdido sem saber por onde resolver o problema. O sistema não parou de funcionar, apenas não consigo atualiza-lo de forma automática com era antes. Alguém teria uma ideia do que pode ser?

6 Respostas

igor_ks

Primeira coisa: Depurou teu código pra entender o que está acontecendo?

Somente com essas informações é praticamente impossível ajudar, há diversas formas de implementação. Coisas que podem ajudar:

  • Mostrar o código onde vc pega o arquivo, junto com o código de ordenação, se tiver.
  • Mostrar alguns exemplos dos nomes dos arquivos. Teve alteração em seu formato?
mdea

Então igor, não teve alteração do codigo de download, até porque o sistema de atualização é separado do software. E o sistema de atualização funcionava ja ha um bom tempo. Me parece algum cache no servidor(mas posso estar falando besteira).

Mas segue um teste que fiz agora pouco:

Esse é o arquivo(up.txt atualizado) no servidor:

software#MonitorINFO
versao#4
[color=red]dist#3.02[/color]
qtd-arquivos#4
mb-arquivos#4,8MB
#arquivos para download
#chave#nome do arquivo#url para download#tamanho
#arquivo-up#ajuda/mv4-manual.pdf#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/ajuda/mv4-manual.pdf#2,5MB
#arquivo-up#splash.jpg#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/splash.jpg#83,7KB
arquivo-up#lib/comllab-javalib.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/comllab-javalib.jar#325,2KB
arquivo-up#lib/MonitorINFO-V4.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/MonitorINFO-V4.jar#4,2MB
arquivo-up#lib/AgendaMonitorINFO.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/AgendaMonitorINFO.jar#215,9KB
arquivo-up#lib/comllab-regsoft.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/comllab-regsoft.jar#193,5KB

Esse é um trecho do código que estou executando:

String url = "http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/up.txt";
 
		URL obj = new URL(url);
		HttpURLConnection con = (HttpURLConnection) obj.openConnection();
 
		// optional default is GET
		con.setRequestMethod("GET");
 
		//add request header
		con.setRequestProperty("User-Agent", USER_AGENT);
 
		int responseCode = con.getResponseCode();
		System.out.println("\nSending 'GET' request to URL : " + url);
		System.out.println("Response Code : " + responseCode);
 
		BufferedReader in = new BufferedReader(
		        new InputStreamReader(con.getInputStream()));
		String inputLine;
		StringBuffer response = new StringBuffer();
 
		while ((inputLine = in.readLine()) != null) {
			response.append(inputLine + "\n");
		}
		in.close();
 
		//print result
		System.out.println(response.toString());

E a resposta que recebo é essa, que é o arquivo up.txt antigo:

Sending ‘GET’ request to URL : http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/up.txt
Response Code : 200
software#MonitorINFO
versao#4
[color=red]dist#3.01[/color]
qtd-arquivos#4
mb-arquivos#4,8MB
#arquivos para download
#chave#nome do arquivo#url para download#tamanho
#arquivo-up#ajuda/mv4-manual.pdf#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/ajuda/mv4-manual.pdf#2,5MB
#arquivo-up#splash.jpg#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/splash.jpg#83,7KB
arquivo-up#lib/comllab-javalib.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/comllab-javalib.jar#325,2KB
arquivo-up#lib/MonitorINFO-V4.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/MonitorINFO-V4.jar#4,2MB
arquivo-up#lib/AgendaMonitorINFO.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/AgendaMonitorINFO.jar#215,9KB
arquivo-up#lib/comllab-regsoft.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/comllab-regsoft.jar#193,5KB

Fiz o teste mudando o nome do mesmo arquivo para up2.txt e executei o mesmo codigo alterando para a leitura do arquivo renomeado e nesse caso ele retornou o arquivo atualizado de forma correta, me parece que o servidor esta guardando o arquivo antigo em algum cache(mas sinceramente não sei o que acontece) e estou fazendo esses testes em vairas maquinas com windows e linux.

igor_ks

É… estranho… pode ser cache sim… já tentou desativar o Cache?

Tente isso:

con.setUseCaches(false);

http://download.java.net/jdk7/archive/b123/docs/api/java/net/URLConnection.html#setUseCaches(boolean)

mdea

Fiz o teste aqui igor com o “con.setUseCaches(false)” e funcionou, o problema é que vou ter que fazer uma atualização manual por conta disso. Mas pra deixar tudo mais estranho, chequei com alguns clientes e a atualização aconteceu normalmente nos computadores deles. Fiquei mais perdido ainda com a situação. Mas valeu ai pela ajuda.

igor_ks

De qualquer forma, funcionando no cliente ou nao, acho essa alteracao necessaria. Nao vejo necessidade de cache pra baixar um arquivo texto simples e pequeno, e é mais garantido que estará sempre com o arquivo mais atualizado.

mdea

Sim igor, na verdade esse foi um vacilo meu mesmo, escreve esse codigo de atualização faz uns 2 anos. Só vim enxergar o defeito com o problema. Mas valeu mesmo pela ajuda.

Criado 5 de maio de 2015
Ultima resposta 5 de mai. de 2015
Respostas 6
Participantes 2