2

ActiveMQ を統合し、JMS コンシューマを OpenXava アプリケーションに作成することができました。ここで、メッセージで受信したデータで特定の一時的なビューを更新する必要があります。これには、考慮すべきいくつかの問題があります。たとえば、JMS リスナーの Java クラスから移動して、変更を現在のビューにプッシュする方法は? ...特定のビューが現在のビューであると仮定します!!!ただし、現在のビューは、アプリケーション全体で可能ないくつかのビューのいずれかである可能性があります!!! ... それで?それで?...それから、JMSメッセージを(DBの一時ストレージとして)何らかのエンティティに永続化しますが、それはパフォーマンスが低下しますが、その後...最近の変更をどのようにプッシュしますか?一部のユーザーが一時的なビューを見ている場合。

以前は、ajax が有効になっている JSF 実装を使用して Web アプリケーションを構築していました。その後、JMS リスナーでメッセージを受信し、jsf マネージド Bean 参照を取得し、Ajax プッシュを使用して、1 つまたは複数のユーザーがアプリを調べているため、これは常に一種のリアルタイム アプリケーションを生成し、開いているビューを更新します (ビューがユーザーが見ているビューである場合)。

それで、私のOXアプリにJMSリスナクラスでそれを達成する方法はありますか??

前もって感謝します、

4

1 に答える 1

1

オプションは、JavaScript を使用して定期的に呼び出して、新しいレコードがテーブルに追加されたかどうか、または大文字と小文字が更新されているかどうかを確認することです。

liferay を使用している場合は、そのページに JavaScript コードを使用してポートレットを作成できます。このコードは DWR を使用して呼び出しを行うことができ、新しいデータがある場合は「CRUD.refresh」アクションを直接呼び出すことができます。

このようなもの:

refreshData = function() {
   openxava.executeAction('YourApplication', 'YourModule', '', false, 'CRUD.refresh')
   setTimeout('refreshData()', 5000);
}
setTimeout('refreshData()', 5000);

このコードはテストしていないので、そのままでは動作しません。アイデアとして受け取ってください。

本当に、これは汚いトリックです。理想は、OpenXava が comet を直接サポートすることです。これは、サーバーのメソッドを呼び出すだけで実現できます。OXの価値に彗星のサポートを追加すると思いますか?

于 2012-12-21T13:00:50.800 に答える