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]