Applet need call out.flush()
解决方案 »
- 新手请教一个关于sum = sum++;的原理问题
- prepareStatement 的问题
- 文字生成图片
- Java mysql获取自增ID
- 关于updateui
- 关于Java类PipedReader的一个异常.
- 迭代器输出问题
- 我的Java -Version老是1.3,导致Eclips3.1不能使用,怎么解决?
- 新手提问(急,在线等着):帮忙解决这个小程序!
- ***谈谈对java调用dll的认识,希望得到高手的指点***
- 在java中如何打开一个文件?
- applet连接数据库,写了一个policy文件,用appletviewer可以browse,但是如何在ie和nc中带那个policy文件?请各位帮忙一下...
to GJA106:
Servlet本身是多线程的,故Servlet程序未显示实现Seriabalb.
Servlet收到客户端Applet发来的请求后,就通过数据库连接池
查询相应数据,由于是查询操作,我感觉不会造成表锁定。然后,
Servlet将数据放入输出流,Applet从输出流中得到输入流.在这过程中,哪一步需要控制数据不被多线程读取啊.而且,客户方几十台机器,并发
请求很常见.
Applet构造的数据输入流没有得到响应
没有得到响应的输入流显然造成
线程的阻塞。说得不对,请参考。
2: 确定没有用到Servlet成员变量。
问题产生是多个客户同时请求包含Applet的页面
Applet向Servlet请求数据。
同时,存在这种情况,即含Applet的页面还没有显示出来时
客户又点击了其它链接,周而复反,控制台上就显示出
Servlet线程锁定的信息。
注:单机测试,不会造成线程锁定
十几个客户同时反复点击,时间一长,故障就产生!
try{
URL reqURL=new URL(getDocumentBase(),"/BuildInfo");
URLConnection conn=reqURL.openConnection();
InputStream in=conn.getInputStream();//响应未得到,新请求又发生!
DataInputStream din=new DataInputStream(in);
canvas.getBuildList().loadBuilds(din);
din.close();
in.close();
}catch(Exception exp){
exp.printStackTrace();
}
try{
URL reqURL=new URL(getDocumentBase(),"/BuildInfo");
URLConnection conn=reqURL.openConnection();
conn.getOutputStream().flush();//试试
InputStream in=conn.getInputStream();//响应未得到,新请求又发生!
DataInputStream din=new DataInputStream(in);
canvas.getBuildList().loadBuilds(din);
din.close();
in.close();
}catch(Exception exp){
exp.printStackTrace();
}
这个应该在Servlet构造输出流时执行的吧。
关注。