7

Spring MVC、Spring Thymeleaf、Spring Security、Hibernate on MySQL アプリケーションがあります。私の仕事は、現在ログインしているすべてのユーザーに、表示しているページに新しいデータが保持されている場合に通知して、ユーザーが更新して新しいデータ セットを取得できるようにすることです。

I was guessing that I could store all the logged in users in an ApplicationScope session and then notify them somehow. But I've never done this before and not sure how safe it would be.

Can anyone suggest any idea on how this could be done ?

4

2 に答える 2

3

プッシュ/プル アーキテクチャが必要です (サーバー側からメッセージの送信を開始するため)。使用する Spring フレームワークはどれもそれを行うことができません。Atmosphere をご覧ください https://github.com/Atmosphere/atmosphere

次に、新しいデータが永続化されるたびに (DAO レイヤーがこれをトリガーできます)、Atmosphere サーブレットを介してすべての購読ユーザーに新しいメッセージをプッシュするだけです。Atmosphere は「チャネル」を使用するため、ユーザーがいるページに定義済みのチャネル名を使用でき、すべてのユーザーがメッセージを受け取ります。Atmosphere サーブレットを Spring セキュリティで保護して、認証されていないユーザーが通知を受け取れないようにすることもできます。

于 2013-01-31T21:13:27.957 に答える
1

上記のコメントに基づいて、次のようなプル アーキテクチャを実装できます。

すべてのイベントを中央の場所に保存し、すべてのセッション (シングルトン、データベースなど) からアクセスできるようにします。連続した ID があることを確認してください。

セッションで取得した最新のイベント ID を保存します。必要に応じて、セッションに保存されている最新の ID よりも大きい ID を持つイベントをクエリします。

お役に立てれば。

于 2013-01-31T15:23:41.647 に答える