2011-06-06 121 views
1

我使用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 <1ms TTL = 127 – 2011-06-06 12:48:18

回答

0

你有片狀DNS服務器配置。設置一些監控以向系統管理員證明。這可以像使用shell腳本的cron作業一樣簡單,也可以像Nogios監視系統那樣複雜。

我們也有類似的問題,因爲之前的Java6解析出的地址被緩存永遠的DNS(或直到JVM停止,以先到者爲準),當我們從Java5中遷移到的Java6。所以在一些片狀服務器上,當Java6過期的DNS條目出現時,我們突然出現問題。

雖然由於相反的問題,我們意識到了這個問題:我們在DNS循環中有冗餘LDAP服務器,當地址永久緩存時,這當然不起作用。