我在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