Aplicação DESKTOP com SWING congela/trava sem dar erro

Tenho uma aplicação desktop com swing que fica requisitando uma url enviando dados por método post e retornando informações usando HttpClient 4.1, pelo console do java esta parando ou congelando em na linha13 que é a última msg que sai no console ai para no httpclient.execute, o mais imprecionante é que esse erro só acontece num cliente meu no MT, aqui na empresa e demais clientes que temos a aplicação não trava de forma nenhuma, já não sei mais o que tentar para resolver isso se alguem tiver alguma ideia por favor me ajude.

System.out.println(“linha13”);
responseBody = httpclient.execute(httpost, responseHandler);
System.out.println(“linha14”);

Bom ela trava porque é o comportamento padrão do swing, ele congela até que o processo termine…

Não tem algum problema da rede do seu cliente que esta causando este problema? ( firewall, proxy, etc… )

mas tipo trava sem dar erro nenhum, isso é normal? como la trava e aqui não trava?

Vc pode postar seu codigo para dar uma olhada?

Os clientes possuem os mais variados ambientes… nem sempre uma solução roda perfeitamente em 100% deles, pode ter alguma coisa bloqueando la(windows, anti-vírus,provedor de internet,…),
acho que deve ter algum detalhe que deve estar lhe escapando…

Obs: sem informações mais detalhadas fica dificil de ajudar…

Mova o execute para outra thread. Isso evitará que a aplicação congele.

desculpe a ignorância mas como fazer isso?

Segue os arquivos .java e o link com todo o projeto no netbeans que fiz para poder testar esta no link www.menegaro.com/ErroMT.rar

Se alguém puder me ajudar eu já reinstalei o java na maquina do cliente, já adicionei o java no firewall do windows 7 dele, já tentei um monte de coisas e nada.

Pessoal muito obrigado os que responderão, acho que consegui resolver o problemas definindo o timeout, mas minha duvida agora é no tempo para estabelecer a conexão e o tempo para ficar aguardando a resposta, esta definido 2 segundos para aguardar a conexão e 5 segundos para aguardar o retorno, tem como esses valores serem menores? qual a conseqüência se diminuir?



import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.client.ResponseHandler;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

public class ClientConnectionRelease {
   
 public String xmlTabPeds(String idSangria) {
        HttpParams httpParameters = new BasicHttpParams();
        // Definir o tempo limite em milissegundos até que uma conexão é estabelecida.
        int timeoutConnection = 2000;
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
        // Definir o limite do soquete padrão (SO_TIMEOUT)
        // em milissegundos, que é o tempo limite para espera de dados.
        int timeoutSocket = 5000;
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
        DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);
        String responseBody = null;
        try {
            HttpPost httpost = new HttpPost("http://www.cliksys.com.br");
            List <NameValuePair> nvps = new ArrayList <NameValuePair>();
            nvps.add(new BasicNameValuePair("acao", "carrega"));
            nvps.add(new BasicNameValuePair("id_sangria", idSangria));
            httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.ISO_8859_1));
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            responseBody = httpclient.execute(httpost, responseHandler);
        }
        catch (UnsupportedEncodingException ex) {
            System.out.println("erro: "+ex.getMessage());
        }
        catch (IOException ex) {
            System.out.println("Erro IOException: "+ex.getMessage());
        }

        catch(Exception ex){
            System.out.println("Erro Exception: "+ex.getMessage());
        }
        finally {
            httpclient.getConnectionManager().shutdown();
        }
        return responseBody;
    }


}

Você pode criar uma classe que estenda a classe Thread e implementar o metodo run(). Entretanto quando for chama-lá deverá executar o método start().

public class ClientConnectionReleaseThread extends Thread{ public void run(){ //CHAMA A OUTRA AÇÃO } }

quando for chamar sua thread execute o metodo start() que é do pai da classe, assim não vai congelar o formulário do swing.