有关servlet多线程的疑惑!

wanghao1987 2009-04-28 07:54:13
最近做了这样一种东西:
客户端采用ajax方式每隔10秒钟向ActionServlet发起一次请求,servlet在session中取得当前客户的id,然后根据客户id在服务器中查看有没有该客户的消息,有的话就传回客户端。

出现了这样的问题:
当多个客户端同时访问的时候,servlet好像分不清该请求来自哪个客户端,把不属于某个客户的消息传了回去。

这是不是与我没有采用多线程处理有关?servlet是线程不安全的,不应当在servlet中定义全局变量,我也没有在servlet中定义全局变量啊!为什么还会出这种问题?我们老师说过:servlet的工作机制是,单实例多线程。当有新客户访问时,servlet会创建新线程处理客户端的请求。如果是这样的话,就不应当出现上面的问题吗?
困惑中……求助!!!!!
...全文
131 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyman0520 2011-11-16
  • 打赏
  • 举报
回复
可不可以在service方法中加上同步锁,当然这样效率会降低,但应该能保证结果的正确。
shuai45 2009-04-28
  • 打赏
  • 举报
回复
貌似和多线程没关系。
你看看你程序的逻辑是否正确。
liugaojun 2009-04-28
  • 打赏
  • 举报
回复
servlet是单实例的
wanghao1987 2009-04-28
  • 打赏
  • 举报
回复
还有个问题:我用jspSmartUpload做下载时,报如下错误:C:\apache-tomcat-5.5.17\webapps\WebQQ\upload (拒绝访问。)
怎么回事呢?
pwl2014 2009-04-28
  • 打赏
  • 举报
回复
把你servlet的主要代码贴出来看看
laorer 2009-04-28
  • 打赏
  • 举报
回复
记得哪里看到过是多线程请求,单线程处理

你的情况似乎是 session 串位了
即多个用户请求,但基本上按最后一个用户来处理...
qybao 2009-04-28
  • 打赏
  • 举报
回复
理论上一个请求一个响应互不影响
没用到全局变量,用到成员变量了吗?
servlet里调用了其他类的方法了吗?怎么调用的?
servlet是自己实现service方法的吗?
hujun_zero 2009-04-28
  • 打赏
  • 举报
回复
单实例,多线程
不过你这个问题应该是与你具体的代码有关系的
liang8305 2009-04-28
  • 打赏
  • 举报
回复
检查你的关键的变量,作用域是否都是在doGet()/doPost()两个方法内部;

如果超出了这个作用域,那它就是多个用户共享的

说白了,就是你的那些变量是不是都是在这两个方法内部定义的
jumpheightway 2009-04-28
  • 打赏
  • 举报
回复
这是你数据处理不当造成的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧