java - 如何向所有登录用户发送通知

标签 java spring hibernate spring-mvc spring-security

我有一个 Spring MVC、Spring Thymeleaf、Spring Security 和 Hibernate on MySQL 应用程序。我的任务是通知所有当前登录的用户是否为他们正在查看的页面保留了新数据,以便用户可以刷新并获取一组新数据。

我猜我可以将所有登录的用户存储在一个 ApplicationScope session 中,然后以某种方式通知他们。但我以前从未这样做过,也不确定它的安全性。

任何人都可以就如何做到这一点提出任何想法吗?

最佳答案

您需要推/拉架构(以启动从服务器端发送消息)。您使用的任何 Spring 框架都无法做到这一点。查看氛围https://github.com/Atmosphere/atmosphere

然后,无论何时持久化新数据(您的 DAO 层可以触发它),您都可以通过 Atmosphere servlet 将新消息推送给所有订阅用户。 Atmosphere 使用“ channel ”,因此您可以为用户所在的页面使用预定义的 channel 名称,所有用户都会收到消息。您还可以使用 Spring Security 保护 Atmosphere servlet,这样未经身份验证的用户将无法收到通知。

关于java - 如何向所有登录用户发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14620758/

相关文章:

java - GWT错误: 'com.google.gwt.widgetideas.client.FastTree$DefaultResources' (did you forget to inherit a required module?)

java - Hibernate,最高效的id生成策略是什么?

java - 如何在加入 HQL 时应用 2 个条件

java - Hibernate与JPA注释问题-惰性对象

java - 使用 spring-data-rest 定义路径为 "/{resourcename}/search/"的自定义方法

java - 如何使用 Java 从 blob 中插入和检索 pdf

java - 创建 Java/Java EE 例程来发送邮件

java - 将数据绑定(bind)到RequestBody(415错误)

java - JAR 文件,它们不只是膨胀并减慢 Java 的速度吗?

java - 使用 JNI 在 C++ 中加载 .jar 文件