Erro java.net.UnknownHostException acessando URL

Olá a todos!
Dei uma pesquisada no GUJ mas não encontrei report semelhante ao problema que tem acontecido aqui.
Estamos tentando acessar uma URL apartir de uma classe chamda por um servlet.
Bem acontece que no ambiente de desenvolvimento ( windows7, eclipse, tomcat, etc… ) tudo funciona certinho.
Ao colocar a classe no servicor de produção ( linux, a mesma versão do tomcat do desenvolvimento ) não funciona e dá o erro mostrado abaixo.
Se fizermos um acesso a uma URL no próprio servidor dentro do mesmo contexto, funciona certinho também.
Se alguem tiver alguma idéia do que ocorre ( qual a restrição que o servidor tem em acessar url externa e como contornar isso ).
Agradeço desde já.
Régis Steigleder

Erro:

****** IOException java.net.UnknownHostException: www.yahoo.com at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:519) at java.net.Socket.connect(Socket.java:469) at sun.net.NetworkClient.doConnect(NetworkClient.java:163) at sun.net.www.http.HttpClient.openServer(HttpClient.java:394) at sun.net.www.http.HttpClient.openServer(HttpClient.java:529) at sun.net.www.http.HttpClient.<init>(HttpClient.java:233) at sun.net.www.http.HttpClient.New(HttpClient.java:306) at sun.net.www.http.HttpClient.New(HttpClient.java:323) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:837) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:778) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:703) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1026) at java.net.URL.openStream(URL.java:1009) at br.com.controlpoint.rn.MobDelivery_TarefaRN.acessaUrl(MobDelivery_TarefaRN.java:569) at br.com.controlpoint.rn.MobDelivery_TarefaRN.processaOL(MobDelivery_TarefaRN.java:1208) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at br.com.controlpoint.util.OLUtil.processaOL(OLUtil.java:200) at br.com.controlpoint.util.servlet.ControlerServlet.processa(ControlerServlet.java:124) at br.com.controlpoint.util.servlet.ControlerServlet.doGet(ControlerServlet.java:50) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) ****** acessaUrl - Finalizando
Aqui está o código, simples, que estamos querendo executar:

[code] private String acessaUrl() {
String retornoWS = “OK”;
try {
URL yahoo = new URL(“http://www.yahoo.com/”);
BufferedReader in = new BufferedReader( new InputStreamReader(yahoo.openStream()));

		String inputLine;

		while ((inputLine = in.readLine()) != null)
		    System.out.println(inputLine);

		in.close();

	}catch (java.net.MalformedURLException e){
	   retornoWS="Formato inválido. " ;
	   System.out.println("****** url mal formada");
	}catch (java.io.IOException e2) {
		retornoWS="Erro ao acessar URL. " ;
		System.out.println("****** IOException");
		e2.printStackTrace();
	}
	System.out.println("****** acessaUrl - Finalizando");
	return retornoWS;
}[/code]

Pelo tipo de Exception retornado, indica que tem menos a ver com o código ou sistema operacional que o próprio ambiente de produção.
Certificou-se que aonde alocou a aplicação tem acesso a url externa com a do yahoo? Provavelmente há um proxy bloqueando o acesso.

Pois então.
Pedi ao pessoal de suporte do datacenter se havia algum tipo de proxy etc.
O sujeito me disse que não há nada. Que o acesso é livre.
E agora?
Se houver um proxy como contornar?
Preciso saber dados do proxy?

O engraçado aqui, é que WebServices é possivel de acessar normalmente, pis temos vários funcionando.
Via socket também funciona certinho. Temos acesso a outras máquinas e celulares via socjket.

No código mostrado acima, quando cria a URL o servidor de destino recebe a menssagem porém quando a linha abaixo é executada dá o erro:

BufferedReader in = new BufferedReader( new InputStreamReader(yahoo.openStream()));

“Stonei”! :frowning:

O erro na verdade está dando nessa linha: URL yahoo = new URL(“http://www.yahoo.com/”);
Testei o metódo na minha máquina exatamente igual está aí e funcionou corretamente.
Como já falei é problema de ambiente externo. Tente falar com o administrador de sua rede.

Estou com o mesmo erro, como conseguiu contornar ?

Obrigado

Resolvi da seguinte forma:

Estou usando o SUSE Linux Enterprise

Defini um IP Estatico em Network Settings

E apos terminar, restartei:

sudo /etc/init.d/network restart