我在Tomcat上運行Web應用程序。我的應用程序與其他Web服務建立連接以滿足來自客戶端的請求。有時我在打開URL連接時得到了java.net.UnknownHostException,然後有時候我開始得到java.net.SocketException:打開的文件過多。而我的服務器停止進一步接受連接。請指導。java.net.UnknownHostException和java.net.SocketException:打開的文件太多
String response;
HttpURLConnection conn = null;
BufferedReader rd = null;
InputStream in = null;
try
{
// Send data
String urlStr = URL;
URL url = new URL(urlStr);
conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
int contentLength = conn.getContentLength();
// System.out.println("content length 1" + contentLength);
if (contentLength <= 0)
{
InputStream in1 = (conn).getErrorStream();
if (in1 != null)
{
in1.close();
}
conn.getInputStream().close();
in = null;
conn.disconnect();
conn = null;
return null;
}
in = conn.getInputStream();
if (conn.getResponseCode() != 200)
{
InputStream in1 = (conn).getErrorStream();
if (in1 != null)
{
in1.close();
}
conn.getInputStream().close();
in = null;
conn.disconnect();
conn = null;
in.close();
in = null;
return null;
}
// Get the response
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
String line = null;
while ((line = rd.readLine()) != null)
{
stringBuffer.append(line);
}
response = stringBuffer.toString();
System.out.println("full ads response = " + response);
}
catch (Exception ex)
{
// ex.printStackTrace();
}
finally
{
try
{
if (conn != null)
{
InputStream in1 = (conn).getErrorStream();
if (in1 != null)
{
in1.close();
}
conn.getInputStream().close();
in = null;
conn.disconnect();
conn = null;
}
if (rd != null)
{
rd.close();
rd = null;
}
if (in != null)
{
in.close();
in = null;
}
}
catch (Exception e)
{
}
}
return null;
Hello Ankit。我已經設定了最大值,這就是爲什麼需要一些才能達到這個極限。我的服務器git 5000客戶端請求每分鐘和每個請求打開服務器上的URL連接來從其他Web服務獲取一些數據。 – 2013-04-10 05:35:57
@YasirPerwez:請注意我給出的其他建議,確保您在完成工作後關閉了連接和輸入流。 – Ankit 2013-04-10 05:56:11
我會肯定的。清理我的代碼並嘗試。將更新這個結果。謝謝 – 2013-04-10 06:24:44