的java.net.UnknownHostException - 间歇的问题

问题描述:

我使用Java 1.6.0_17用Java编写的Web服务。
该业务之一熄灭,屏幕废料使用下面的代码我的服务器的另一个问题:的java.net.UnknownHostException - 间歇的问题

HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod("GET"); 
connection.connect(); 

InputStream stream = connection.getInputStream(); 

return convertStreamToString(stream); 

在大多数情况下,时间约80%(非常粗略的估计),这似乎不过做工精细的其余时间,我收到以下异常,当我到达的代码connection.connect()部分:

java.net.UnknownHostException: {my server name was here} 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
at java.net.Socket.connect(Socket.java:525) 
at java.net.Socket.connect(Socket.java:475) 

我代替了我们的服务器的URL与{我的服务器名称,在这里}在上面的日志。 我能够运行NSLOOKUP和服务器解决罚款。

Web服务运行在Windows 2003 x64标准版Service Pack 2的服务器上的JBoss的4.2.3服务器上。

我不知道Unknownhost异常意味着服务器名称无法得到解决,但我与这为什么发生间歇挣扎。 我宁愿不通过主机文件解析主机名,因为将来当我们更改主机时,我希望能够更改DNS并且不必担心主机文件。
有没有人有任何建议如何解决这个问题? 非常感谢您提供任何帮助。

+0

既您的服务器(WS客户机和WS主机)在同一个网络,即没有代理/防火墙问题? – JoseK 2011-06-06 12:13:07

+0

ping your-server-name是什么意思? – stacker 2011-06-06 12:15:56

+0

客户端和主机位于同一网络上,没有代理服务器,并且ping能够正确返回IE:来自111.222.333.444的回复:bytes = 32 time 2011-06-06 12:48:18

你有片状DNS服务器配置。设置一些监控以向系统管理员证明。这可以像使用shell脚本的cron作业一样简单,也可以像Nogios监视系统那样复杂。

我们也有类似的问题,因为之前的Java6解析出的地址被缓存永远的DNS(或直到JVM停止,以先到者为准),当我们从Java5中迁移到的Java6。所以在一些片状服务器上,当Java6过期的DNS条目出现时,我们突然出现问题。

虽然由于相反的问题,我们意识到了这个问题:我们在DNS循环中有冗余LDAP服务器,当地址永久缓存时,这当然不起作用。