【发布时间】:2013-04-23 14:28:57
【问题描述】:
我正在开发一个使用长轮询的“某种”聊天应用程序。
我正在使用 Play Framework 1.2.5,并且我正在尝试使用 JPA 处理将其信息存储在数据库中的多个对话。
为了收听每个事件并将其发布到聊天中(有人加入、离开或发短信),我使用了 ArchivedEventStream
目前,我制作了一个静态 HashMap,其中每个对话的模型 ID 作为键,我的 ArchivedEventStream 对象与事件。我在其中添加了@Transient 注释,因为它没有将我的地图计入数据库并规避错误。
@Transient
public final static HashMap<Long, ArchivedEventStream<PlayEvent>> playEvents = new HashMap<Long, F.ArchivedEventStream<PlayEvent>>();
它目前有效,许多人可以按照自己的流量使用自己的对话,但过了一段时间,服务器会破坏这个静态变量,产生一些 NullPointerExceptions。
有没有办法将此对象存储到我的数据库中,以便每次对话都可以访问它?
或者,我可以阻止我的服务器 Play 销毁我的变量吗?
甚至,还有其他更好的选择来解决这个问题吗?
非常感谢。
【问题讨论】:
标签: jpa playframework long-polling