我有一个页面,里面是循环去请求一个URL(会请求的很快,是拿到请求结果后马上再去请求),
如果这个页面只开一个好象是没有问题的,但如果开两个这个页面(就是两个循环请求),其中一个页面就会报
Java.net.BindExecption Address already in use:connect的异常(有时候两个都会),我查了下,
好象TCP/IP每次请求都会自动分配一个端口,并且有自动释放的间隔,用netstat -a 看了下,请求页面的时候果然多出很多端口,
请问这个问题有办法解决吗?
如果这个页面只开一个好象是没有问题的,但如果开两个这个页面(就是两个循环请求),其中一个页面就会报
Java.net.BindExecption Address already in use:connect的异常(有时候两个都会),我查了下,
好象TCP/IP每次请求都会自动分配一个端口,并且有自动释放的间隔,用netstat -a 看了下,请求页面的时候果然多出很多端口,
请问这个问题有办法解决吗?
解决方案 »
- ----struts版本----
- 在购物网站当中常常有商品的信息和商品的图片,那些商品的图片是和商品信息一起保存在数据库当中的吗?一般是保存在哪个地方?
- 在 同一form中﹐submit可以和hidden綁定么?
- 将中文写入cookie后变成乱码的问题
- 我的给分只能是0分,为什么啊?但是我又问题需要大家帮忙,请看看吧!拜托了!
- htmlParser中NotFilter方法到底怎么用
- smartupload下载空txt文档时,为什么会将下载处理页面下载下来?
- 有谁用apache+resin?连ORACLE连不上
- jsp连接oracle8问题
- java开发基于服务器/客户端应用程序的问题(在线等!!)
- JSP之间传值的问题(传两个值)
- jaspereport报表问题
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.PostMethod;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class PostTest extends HttpServlet
{
String path = "";
int i = 0;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
PostTest ps = new PostTest();
ps.test(path);
}
private void test(String path)
{
try
{
HttpClient client = new HttpClient();
HttpMethod method = new PostMethod(path+"/test.jsp");
client.executeMethod(method);
method.releaseConnection();
System.out.println("请求成功");
test(path);
}
catch(Exception e)
{
i++;
System.out.println("异常次数="+i);
System.out.println("异常原因:"+e.toString());
//test(path);
}
//test(path);
}
}这是我测试的一个Servlet,其中test.jsp基本是一个空的JSP,没有什么操作。
如果开两个IE访问这个Servlet就会报Java.net.BindException,并且一直是请求失败的,如果在异常中再去请求,则会抛出
java.lang.StackOverflowError异常,也说明了一但请求失败后,后面的都是失败的。
PostTest ps = new PostTest();
ps.test(path);
改成
//PostTest ps = new PostTest();
test(path);如果LZ想做非同期并发处理,应该采用多线程,而不是创建多个Servlet对象
HttpMethod method = new PostMethod(path+"/test.jsp");
client.executeMethod(method);
method.releaseConnection();
System.out.println("请求成功");
test(path); //这里导致堆栈溢出