看过一个方法
就是浏览器请求服务后,调用方法getInfo(),服务器定时返回信息简写:
String info="我随时改变";
public void getInfo()
{
while(true)
{
out.print("信息内容:"+info);
Thread.sleep(3000);
}
}
问题:
现在有一个用户A,他发布了一条消息"我是A",这个消息传递到了服务端,同时有另一个用户B,他请求了服务,并且调用了getInfo()来接收消息.
那么,我把A发出的消息放到那里,才能让B的getInfo()随时得到最新的消息,由于每个servlet服务请求都是一个新的线程,所以感觉String info不能定义在servlet里,它应该放在一个公共的类里,而且是个单例,每个请求线程的getInfo()都在轮询这个单例类的info字段内容,是这样的么?
就是浏览器请求服务后,调用方法getInfo(),服务器定时返回信息简写:
String info="我随时改变";
public void getInfo()
{
while(true)
{
out.print("信息内容:"+info);
Thread.sleep(3000);
}
}
问题:
现在有一个用户A,他发布了一条消息"我是A",这个消息传递到了服务端,同时有另一个用户B,他请求了服务,并且调用了getInfo()来接收消息.
那么,我把A发出的消息放到那里,才能让B的getInfo()随时得到最新的消息,由于每个servlet服务请求都是一个新的线程,所以感觉String info不能定义在servlet里,它应该放在一个公共的类里,而且是个单例,每个请求线程的getInfo()都在轮询这个单例类的info字段内容,是这样的么?
dwr2.0 有个“推”技术,就是服务器端和客户端建立长连接。
你可以看看,
关于这方面的一些知识可以参考Comet:基于 HTTP 长连接的“服务器推”技术
另外,dwr的Reverse也是个不错的现成选择
dwr部署起来还要添加很多应用结构一篇关于单例的文章,还可以
http://www.javaeye.com/topic/60179