HttpConnection com Tomcat

Boa tarde, to com o seguinte problema:
Tenho uma consulta que faço em outro sistema e baseado no retorno faço umas validações. O problema é que funciona durante 1 ou 2 horas e depois acontece o seguinte erro:
java.io.IOException: Server returned HTTP response code: 400 for URL: “minha URL de consulta”

O problema é que funciona durante um tempo e depois para, daí tenho que reiniciar o tomcat para funcionar por mais 2 horas.
Segue o código usado para fazer a conexão:

public synchronized static Element getDocumentRootWithProxy(String url, String proxyHost, int proxyPort) throws MalformedURLException, DocumentException, IOException {
		URL url_ = new URL("http",proxyHost,proxyPort,url);
		SAXReader reader = new SAXReader();
		HttpURLConnection httpURL = (HttpURLConnection)url_.openConnection();
		httpURL.setConnectTimeout(10000);
		logger.debug("Timeout para busca de XML:"+httpURL.getConnectTimeout());
		httpURL.connect();
		InputStream is = httpURL.getInputStream();
		Document d = reader.read(is);
		Element root = d.getRootElement();
		httpURL.disconnect();
		return root;
	}

Andei pesquisando nos foruns, mas ninguém tem esse problema. O problema dos outros é “ou funciona ou não funicona” ninguém tem um caso desses intermitente.

Quando para o processo do tomcat o consumo de CPU e memória é alto?

Normal. O consumo que de recurso da máquina quando o tomcat é parado é o mesmo de quando ele é iniciado, ou seja, apos dar o start no tomcat ficou o consumo de X e na hora de parar ~2,5 horas depois é o mesmo X.

Iremos fazer um teste hoje sem passar pelo servidor de proxy, coloco o resultado assim que terminarmos.

Então pessoal, minha classe que faz a conexão já esta assim:

public Element getDocumentRoot(String url) throws MalformedURLException, DocumentException, IOException {
		URL url_ = new URL(url);
		SAXReader reader = new SAXReader();
		HttpURLConnection httpURL = null;
		Element root = null;
		try{
//			httpURL = (HttpURLConnection)url_.openConnection();
//			httpURL.setConnectTimeout(10000);
//			httpURL.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
//			httpURL.setRequestProperty("Accept","*/*");
//			logger.debug("Timeout para busca de XML:"+httpURL.getConnectTimeout());
//			httpURL.connect();
			System.out.println("URL (SEM PROXY): "+url.toString());
			InputStream is =  new URL(url).openStream();//httpURL.getInputStream();
			Document d = reader.read(is);
			//write(d);
			is.close();
			root = d.getRootElement();
		}catch (MalformedURLException e) {
			e.printStackTrace();
			throw e;
		}catch (IOException e) {
			e.printStackTrace();
			throw e;
		}finally{
			if(httpURL!= null)
				httpURL.disconnect();
		}		
		return root;
	}

O que eu já fiz:

  1. Mudei o endereço externo da aplicação para o endereço interno
  2. Voltamos a versão do java do servidor
  3. Coloquei as duas aplicações no mesmo tomcat
    fui fazendo 1 de cada vez e todos eles de pois de 2h ou 3 deu o mesmo problema.

Agora

  1. Parametrizei a URL do outro sistema para “localhost”
  2. Como podem ver, não uso mais a classe HttpURLConnection foi substituido pelo new URL(url).openStream();

E agora é esperar.