问下关于dwr的问题

dpshui 2012-07-17 03:48:24
我其他地方采集报警信息存在数据库中,要实现服务器向前台传输报警警告,但是每个客户只关心关于他自己的车辆的报警(可能多辆车),我想用dwr,但是有些问题想问下:
1.我一采集到报警信息就存到数据库中,然后我希望能尽快在前台显示,我的方法是,在服务端的那个类每隔2s执行一次(就是每2s查询一次数据库,看是否有报警信息,如果有的话就刷新前台,显示报警信息),这个样处理合适吗?
2.当一个客户端连接后,我才开始查询是否有关于这个客户的报警信息,后台如何停止查询的,一种是客户端关闭时传递一个信息给这个类,让他不再执行,或者不正常关闭网页时,通过判断这个客户端的sessionid失效来停止执行。
3.还有一个我不懂,就是每来一个客户端,然后就建立一个长连接,这个相当于单独为这个客户端开一个线程吗(这个线程自动创建吗?我后台只是建了一个普通的类)?是通过sessionid来标记这个线程吗?还有就是连接断开怎么办?
希望能给解答下问题,或者推荐些资料,我看了网上一些资料不是很明白。。。
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dpshui 2012-07-20
  • 打赏
  • 举报
回复
谢谢回复
dpshui 2012-07-18
  • 打赏
  • 举报
回复
这个建立的常连接会不会自己突然断了?如果意外断了该怎么处理
dpshui 2012-07-17
  • 打赏
  • 举报
回复
恩,数据库不好弄。。。报警的数据是采集是先往数据库存,然后客户端呀读取时再从数据库取。。。数据量一大,光存储就老是出问题(存进来一些莫名其妙的数据,一秒同时存20多条时就出现问题了),有什么这方面的资料推荐下,谢谢
Tony_xiaofeng 2012-07-17
  • 打赏
  • 举报
回复
设置 dwr.engine.setActiveReverseAjax(true);
报警service方法成功之后,通知所有线程更新...
it491328322 2012-07-17
  • 打赏
  • 举报
回复
1.似乎也只有这样做比较合适,就看楼主对间隔时间的把握,和数据库的设计了。“是否有刷新”针对这个词来说,数据库的设计讲究就大了。。。
2.建议针对所有用户的查询,使用一条线程执行,而将用户登录进来的用户ID保存至全局变量,这样你的查询就只需要检索到全局变量中的用户即可,而用户推出登录的时候,关闭网页的时候,对应session失效的时候,都不应该再查该用户了。
3.个人觉得应该是一个长连接一条线程,具体怎么实现的,我也没有研究过dwr的源码。但可以肯定的是,并不是靠sessionId来标记的,因为dwr的推技术当中,有一个非常重要的观念,那就是scriptSessionId。也就是说,同一客户端的不同页面可以建立不同的长连接,那么这个时候,又如何使用同一个sessionId来标记呢?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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